UWP相当于Win32的GetPointerFrameInfo()

时间:2016-09-16 20:01:14

标签: win-universal-app uwp multi-touch

我想在我的Windows UWP应用程序中收集多点触控指针原始数据,因此我可以进行手势识别。

我之前使用GetPointerFrameInfo()方法在Win32应用程序中完成了此操作。它可以检索指针输入的整个帧的信息。但是,这种方法似乎在UWP中不可用。 检索整个指针输入帧的解决方案是什么?

例如,当我使用三根手指按屏幕,拖动一小段距离,然后释放时,我在注册指针hanbdler中收到以下事件序列(onPointerPressed() / onPointerMoved() / {{1我的处理函数)

onPointerReleased()

由于上述事件都发生在顺序时序模式中,因此无法事先知道总指针数,因此很难进行多点触控处理。

我注意到UWP的pointer1 pressed event, pointer2 pressed event, pointer3 pressed event, pointer1 moved event, pointer2 moved event, pointer3 moved event, pointer1 moved event, pointer2 moved event, pointer3 moved event, ... pointer1 released event, pointer2 released event, pointer3 released event, 类提供了一个名为PointerPoint的属性,用于标识输入框架,但我找不到任何方法来使用此框架ID来检索整个指针输入框架。

1 个答案:

答案 0 :(得分:1)

  

由于上述事件都发生在顺序时序模式中,因此无法事先知道总指针数,因此很难进行多点触控处理。

是的,你是绝对正确的,但不幸的是,在UWP中没有与Win32的GetPointerFrameInfo()方法等效的方法,我们只关注基本的Pointer事件。作为注册指针处理程序中事件序列的测试结果,解决此问题的常用方法是计算Pressed事件之前的Moved事件,并在Released事件中清除此计数,每个按下的事件代表一个手指指针,你可以在这里引用我的类似案例:How can I get touch input in uwp?

但是,如果你想要的不会在商店发布,有一些方法可以在UWP应用中使用Win32的API。一种方法是使用VS2015TemplateBrokeredComponents在UWP应用程序和传统桌面应用程序之间建立桥梁,您可以按照此处的步骤尝试解决方案。或者,您可以尝试在UWP应用中使用PInvoke和此Win32 API。

我在此提供的所有想法,我希望您可以通过Windows反馈工具提交添加此新功能以进行开发的请求。我个人认为这是对UWP应用程序的一个很好的功能请求。