如何使在帆布上绘制的图像模糊?

问题描述 投票:-1回答:1

我想知道如何使在画布上绘制的图像(例如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()
python canvas widget kivy
1个回答
0
投票

使用EffectWidget是一个合适的解决方案,如果它不起作用,可能是因为您做错了。

© www.soinside.com 2019 - 2024. All rights reserved.