【问题标题】:How to blur an image drawn on the canvas in kivy?如何模糊在kivy画布上绘制的图像?
【发布时间】: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()

【问题讨论】:

    标签: python canvas widget kivy


    【解决方案1】:

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

    【讨论】:

    • 请帮助我了解为什么圆角矩形模糊小部件没有显示在窗口上。我已经发布了上面的测试代码。
    猜你喜欢
    • 2015-11-01
    • 2013-01-07
    • 1970-01-01
    • 1970-01-01
    • 2019-02-10
    • 1970-01-01
    • 2011-08-07
    • 1970-01-01
    • 2013-07-25
    相关资源
    最近更新 更多