2016-09-16 20 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

感謝您的建議,我將通過我自己分析觸摸事件,因爲我們需要有我們的應用程序。在應用商店發佈。 –