我想知道如何使在画布上绘制的图像(例如RoundedRectangle())模糊化
用于阴影效果的海军蓝。
我尝试使用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()
使用EffectWidget是一个合适的解决方案,如果它不起作用,可能是因为您做错了。