【发布时间】:2020-03-29 11:45:29
【问题描述】:
我想知道如何用
模糊画布上绘制的图像(例如 RoundedRectangle())kivy 用于阴影效果。
我尝试使用 EffectWidget(),但它不适用于在画布上绘制的图像。
知道的人应该给我一个关于如何做到这一点的例子或如何给按钮阴影效果的替代方法。任何帮助将不胜感激,谢谢。
from kivy.app import App
from kivy.uix.floatlayout import FloatLayout
from kivy.uix.boxlayout import BoxLayout
from kivy.uix.effectwidget import *
from kivy.graphics import *
from kivy.graphics.vertex_instructions import *
class bg(BoxLayout):
def __init__(self,back_color=[1,0,0,1],border_radius=[5],**kwargs):
super().__init__(**kwargs)
self.back_color = back_color
self.border_radius = border_radius
with self.canvas.before:
self.col = Color(rgba=self.back_color)
self.rect = RoundedRectangle(size=self.size,pos=self.pos,radius=self.border_radius)
class ShadowButton(BoxLayout):
def __init__(self,back_color=[0,0,0,1],border_radius=[5],**kwargs):
super().__init__(**kwargs)
self.back_color = back_color
self.border_radius = border_radius
btn = bg(size_hint=(None,None),size=(100,40),pos=(50,100))
self.w = EffectWidget()
self.w.add_widget(btn)
self.w.effects = [HorizontalBlurEffect(size=20.0),VerticalBlurEffect(size=20)]
class TestPage(FloatLayout):
def __init__(self,**kwargs):
super().__init__(**kwargs)
self.btn = ShadowButton(size_hint=(None,None),size=(100,40),pos= (50,100))
self.add_widget(self.btn)
class MyApp(App):
def build(self):
return TestPage()
if __name__ == '__main__':
MyApp().run()
【问题讨论】: