【问题标题】:Kivy - Center image within the ellipse widgetKivy - 椭圆小部件中的中心图像
【发布时间】:2017-05-26 05:13:15
【问题描述】:

如何使图像始终位于椭圆小部件的中心?

下面是 .py 和 .kv 文件以及代码执行结果的屏幕。

我已经尝试了很多方法,但我做不到。有人可以帮我解决这个问题吗?

fab.py

from kivy.app import App
from kivy.uix.widget import Widget
from kivy.core.window import Window
Window.clearcolor = (1, 1, 1, 1)

class Fab(App):
    pass

Fab().run()

fab.kv

Widget:
    canvas:
        Color:
            rgba: 0, 1, 0, 1
        Ellipse:
            pos: self.pos
            size: (dp(48), dp(48))
    Scatter:
        rotation: 45
        Image:
            source: 'plus.png'
            size: 64,64

【问题讨论】:

    标签: kivy kivy-language


    【解决方案1】:

    所以,很难做这个简单的事情的一个原因是因为你没有使用特定的小部件来保存你的形状。我真的建议您这样做,因为这样您就可以使用小部件的center_xcenter_y 属性。因此,使小部件具有与您想要的形状相同的大小和位置,然后只是移动小部件本身。观察:

    Widget:
        Widget: # create a specific widget for the ellipse
            id: ellipse # give an id so we can refer to this widget
            size: (dp(48), dp(48))
            canvas:
                Color:
                    rgba: 0, 1, 0, 1
                Ellipse:
                pos: self.pos
                size: self.size
    
        Scatter:
            size: (dp(48), dp(48))
            rotation: 45
            center_x: ellipse.center_x # refer to the ellipse
            center_y: ellipse.center_y
            Image:
                source: 'plus.png'
    

    如果您确实需要旋转图像,最好不要使用 Scatter(例如,您可以将加号拖离椭圆)。考虑this 线程。

    【讨论】:

    • 抱歉,我忽略了一个事实。请看代码,现在有点不一样了。
    猜你喜欢
    • 2017-05-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-12
    • 1970-01-01
    • 2015-04-27
    • 2012-06-20
    相关资源
    最近更新 更多