Как размыть изображение, нарисованное на холсте в киве? - PullRequest
0 голосов
/ 29 марта 2020

Я хотел бы знать, как можно размыть изображение (например, 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()

1 Ответ

0 голосов
/ 29 марта 2020

Использование EffectWidget - подходящее решение, если оно не работает, возможно, потому, что вы сделали что-то не так.

...