如何解决wxPython触摸屏访问有更核心的访问吗?还是强制使用 ZoomGesture 的方法?
用于 GestureEvents 的 wxPython API 将缩放、平移和旋转视为不同的事件,因此无法在它们之间进行无缝切换。有没有办法更好地访问更有用的信息或强制它检测每两个数字触摸作为缩放手势?
https://wxpython.org/Phoenix/docs/html/wx.GestureEvent.html
使用 wxPython,我实现了完全缩放和平移,并尝试为触摸屏添加手势。问题似乎是平移手势有点糟糕。 Zoom 给了我 ZoomFactor(),它是你的两个手指之间的距离,还有 GetPosition()
这实际上是你需要的所有内容,也包括平移。平移为您提供 Delta() 但您可以使用变量来解决该问题。
这里的问题是,如果 wxPython 一开始说我像平移手势一样移动,则它是平移功能,并且不会缩放。如果它说我先像变焦一样移动,我会完全按照我想要的方式进行平移和缩放。我实现了自己的矩阵并很好地使用了它,所以我只需要这些信息就可以进行正确的操作。
我必须在这里硬着头皮让它有点烂吗?或者有什么方法可以强制缩放模式手势?是否有其他方法可以获得更多核心方面并使 API 更像 Android TouchEvents,我可以使用它来正确构建它?
https://github.com/meerk40t/meerk40t/tree/853041cb4630ffccf8d9accee5a50d95b0c9da41
self.EnableTouchEvents(wx.TOUCH_ZOOM_GESTURE | wx.TOUCH_PAN_GESTURES)
self.scene.Bind(wx.EVT_GESTURE_PAN,self.on_gesture)
self.scene.Bind(wx.EVT_GESTURE_ZOOM,self.on_gesture)
和
def on_gesture(self,event):
"""
This code requires WXPython 4.1. The bind will fail otherwise.
"""
if event.IsGestureStart():
self.widget_scene.event(event.GetPosition(),'gesture-start')
elif event.IsGestureEnd():
self.widget_scene.event(event.GetPosition(),'gesture-end')
else:
try:
zoom = event.GetZoomFactor()
except AttributeError:
zoom = 1.0
self.widget_scene.event(event.GetPosition(),'zoom %f' % zoom)
关闭平移不会使 Zoom 更加混乱,它只是无法在 PanGesture Events 中完全工作。
我使用的是 wxPython 4.1,回退是不允许触摸屏。这至少适用于 MSW 和 OSX。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。