使用基于 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:实现单指平移和两指平移手势?

iOS - UIScrollView hitTest 不包含触摸

使用平移手势,单次触摸后忽略触摸?

在 SceneKit 中禁用相机平移

平移手势不会将触摸转发到 Mapbox MGLMapView

基于Visual C#2010开发Windows7应用 多点触摸图片处理应用程序-使用多点触摸操作处理图片