2016-09-16 60 views
1

我想在我的Windows UWP应用程序中收集多点触控指针原始数据,所以我可以做手势识别。UWP相当于Win32的GetPointerFrameInfo()

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

例如,当我使用三个手指按压屏幕,用于短距离拖拽,然后松开,我在注册指针hanbdler接收以下事件序列(onPointerPressed()/onPointerMoved()/onPointerReleased(),我的处理函数)

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, 

由于上述事件都是按顺序时序模式发生的,因此不可能事先知道总指针数量,因此很难进行多点触摸处理。

我注意到UWP的PointerPoint类提供了一个名为FrameID的属性,用于识别输入帧,但我找不到任何方法来使用此帧ID来检索整个帧的指针输入。

+1

我已更正您的问题中的一些语法,并使用代码块的方法和属性名称。我也删除了不相关的标签。 – Cheesebaron

回答

1

由于上述事件都发生在一个连续的时间模式中,由于不能预先知道总指针数量,所以很难进行多点触摸处理。

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

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

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

+0

感谢您的建议,我将通过我自己分析触摸事件,因为我们需要有我们的应用程序。在应用商店发布。 –