我无法理解Kivy
坐标系。
目前,我在Scatter
窗口小部件中有一个可以缩放和翻译的图像。
根据我的理解(如果我错了请纠正我)当我们翻译Scatter时,只有Scatter的位置发生变化,图像的位置相对于Scatter,所以看起来图像位置会变化为好吧,但它的相对位置将保持不变。当我们扩展Scatter时,我不太确定会发生什么,我猜它只会改变它呈现它的孩子的方式。
现在我正在尝试识别单击图像时单击的像素。为此我做了:
class ClickableImage(Image):
def on_touch_down(self,touch):
if self.collide_point(*touch.pos):
print touch.pos
return True
else:
return super(ClickableImage,self).on_touch_down(touch)
touch.pos
似乎总是偏移,当我点击图片的左下角时,我得到了touch.pos = (0,200)
。也许touch.pos
参考帧原点不是图像而是其父图像。所以我打印了self.to_local(*touch.pos)
,结果相同。如果我打印而不是self.touch.pos-self.pos
它就可以了!但是现在我不理解坐标系统,因为我认为本地参考帧原点是self.pos
所以self.to_local(*touch.pos)
应该等于touch.pos-self.pos
。