使用基于 WM_POINTER 的触摸进行两指平移
Posted
技术标签:
【中文标题】使用基于 WM_POINTER 的触摸进行两指平移【英文标题】:Two-finger panning with WM_POINTER based touch 【发布时间】:2013-02-17 11:13:49 【问题描述】:我正在使用 WM_POINTER 触摸机制(和上下文交互回调)在 Windows 8、c++ 上工作。我的问题是 - 如何区分缩放操作和两指平移操作?
谢谢, 雅科邦
【问题讨论】:
【参考方案1】:AFAIK,如果您使用这种低级机制,您需要自己进行“数学运算”。您需要分别检测每个指针(每个指针都有一个 id)并找出它们彼此之间的关系。在计算距离、增量等之后,您可以对用户的手势做出假设。
WM_GESTURE 让您能够检测更高级别的触摸事件(缩放、平移)并为您进行计算: http://msdn.microsoft.com/en-us/library/dd353242(VS.85).aspx
据我所知,WM_GESTURE 和 WM_TOUCH 是互斥的。
【讨论】:
您好,Shahar,感谢您的回答。实际上,我对 WM_GESTURE 非常熟悉,我现在正在从它迁移,因为在某些方面它不如 WM_POINTER。我知道 WM_POINTER 需要我跟踪指针并进行数学运算,我这样做了 - 但由于某种原因,我在区分缩放和两个手指平移时遇到了实际困难。无论如何,谢谢。 嗨,Shahar,您对触摸 API 有一些经验吗? 我用自定义多点触控手势做了一些事情。不是很多。你遇到了什么问题? 如果您询问 WM_GESTURE,主要问题是响应能力。在 WM_POINTER 中,问题是有时很难计算出准确的手势。而且上下文交互的文档和示例很差...... 正在询问 WM_POINTER。如果您有任何具体问题,我可以尝试提供帮助 - 我在那里做了一些工作。您实际上可以做的一件事是查看旧的 Windows Phone Silverlight Toolkit 代码 - 那里有一个手势管理器,它基本上会生成类似 WM_GESTURE 的事件(如果我没记错的话 - 我可能会关闭)。如果我没记错的话,它可能会给你一些关于如何自己做的想法。以上是关于使用基于 WM_POINTER 的触摸进行两指平移的主要内容,如果未能解决你的问题,请参考以下文章
iOS - UIScrollView hitTest 不包含触摸