我正在尝试为我的Delphi / C ++ Builder 10.2东京应用程序进行交互式手势识别(特别是缩放和平移)。
到目前为止我做了什么:
GestureManager1
添加到我的表单。Touch.GestureManager
设置为GestureManager1
。Touch.Gestures
下的所有内容,因为我需要交互式手势(缩放和平移),而不是“标准”手势。Touch.InteractiveGestures.igZoom
。OnGesture
事件处理程序。 OnGesture
事件处理程序按预期触发,但事件的EventInfo.GestureID
(应该给出手势类型 - 平移,缩放等)始终为0.
我做错了什么?
答案 0 :(得分:1)
“标准”手势(Touch.Gestures.Standard
和“交互式”手势下的各种线条和形状(平移,缩放,旋转)是互斥的。
要处理“标准”或“自定义”手势,请添加TGestureManager
。
要接收“互动”手势,您需要删除 TGestureManager
。 This Embarcadero DocWiki article,解释了手势在VCL和FireMonkey中的工作原理,具体说:
为了在组件中使用Interactive Gestures(如缩放和旋转),您无需将组件与手势管理器关联。
This Intel article提供了有关Windows各种手势界面的更多详细信息。 Delphi称之为“交互式”手势的内容与Windows“WM_GESTURE
消息相对应。