Kivy - 椭圆小部件内的中心图像
Kivy - Center image within the ellipse widget
如何使图像始终位于椭圆小部件的中心?
下面是 .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
所以,很难做这个简单的事情的一个原因是你没有使用特定的小部件来保存你的形状。我真的建议您这样做,因为这样您就可以使用小部件的 center_x
和 center_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'
如果您确实需要旋转图像,那么使用散点图并不是最好的主意(例如,您可以将加号拖离椭圆)。考虑 this 个线程。
如何使图像始终位于椭圆小部件的中心?
下面是 .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
所以,很难做这个简单的事情的一个原因是你没有使用特定的小部件来保存你的形状。我真的建议您这样做,因为这样您就可以使用小部件的 center_x
和 center_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'
如果您确实需要旋转图像,那么使用散点图并不是最好的主意(例如,您可以将加号拖离椭圆)。考虑 this 个线程。