【发布时间】:2014-12-08 13:15:11
【问题描述】:
在我的应用程序中,我需要知道画布有多大以像素为单位。
无论画布宽多少像素,调用canvas.size 都会返回[100,100]。
你能告诉我一种方法来获取画布的宽和高多少像素吗?
【问题讨论】:
在我的应用程序中,我需要知道画布有多大以像素为单位。
无论画布宽多少像素,调用canvas.size 都会返回[100,100]。
你能告诉我一种方法来获取画布的宽和高多少像素吗?
【问题讨论】:
在 Canvas 中没有位置和大小。画布仅充当图形指令的容器,例如在纹理中绘制的 Fbo,因此它具有大小。
在 Kivy 中,Canvas.size 不存在,但我猜您将小部件称为画布。默认情况下,一个 Widget 的大小是 100、100。如果你把它放到一个布局中,大小会改变,当布局知道它自己的大小时。也就是说,你需要监听Widget.size的变化,或者使用你知道的大小,比如Window.size。
我猜你实际上需要窗口大小才能知道你的图像边界是什么。在这种情况下,您可以使用:
from kivy.core.window import Window
size = Window.size
您当然可以将画布的源图像与 PIL 或 scipy 等一起使用来获得其分辨率(画布将匹配)。
【讨论】:
无论你做什么,画布的“大小”似乎都是 (100,100)。您要查找的尺寸必须是小部件尺寸,例如 如果您有一个 FloatLayout 并想在其上绘制一个填充它的矩形 试试:
f = FloatLayout
Rectangle(pos_hint={'x': 0, 'y': 0}, size=f.size)
而不是
Rectangle(pos_hint={'x': 0, 'y': 0}, size=f.canvas.size)
【讨论】: