使用触摸事件获取小部件中图像的像素坐标

时间:2019-06-21 14:59:27

标签: python image position kivy pixel

我在Touchpoint类下的代码试图在小部件中打印图像的x,y坐标。但是,这段代码给出的是相对于窗口的坐标,而不仅仅是图像

我尝试使用collide_point方法

摘要-py

Query query = new Query();
query.addCriteria(criteria);
query.toString();

摘要-kv文件

class TouchPoint(Image):
    def on_touch_down(self, touch):
        if not self.load_image.collide_point(*touch.pos):
            return False
        else:print(touch)

1 个答案:

答案 0 :(得分:0)

这只是通过反复试验而创建的,因此它不一定普遍正确。但这是尝试做您想要的事情:

class TouchPoint(Image):
    def on_touch_down(self, touch):
        if not self.load_image.collide_point(*touch.pos):
            return False
        else:
            # coordinates of image lower left corner inside the TouchPoint widget
            im_x = (self.size[0] - self.norm_image_size[0]) / 2.0 + self.x
            im_y = (self.size[1] - self.norm_image_size[1]) / 2.0 + self.y

            # touch coordinates relative to image location
            im_touch_x = touch.x - im_x
            im_touch_y = touch.y - im_y

            # check if touch is with the actual image
            if im_touch_x < 0 or im_touch_x > self.norm_image_size[0]:
                print('Missed')
            elif im_touch_y < 0 or im_touch_y > self.norm_image_size[1]:
                print('Missed')
            else:
                print('image touch coords:', im_touch_x, im_touch_y)

norm_image_sizeTouchPoint中图像的实际大小。此代码假定图像将在TouchPoint小部件中居中。没有保证,但这可能会为您提供一个起点。