2016-09-16 6 views
1

Я хотел бы получить данные с несколькими касаниями raw в моем приложении Windows UWP, чтобы я мог распознавать жест.UWP эквивалент Win32's GetPointerFrameInfo()

Я уже делал это в приложении Win32, используя метод GetPointerFrameInfo(). Он может извлекать информацию всего кадра ввода указателя. Однако этот метод, похоже, не доступен в 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, 

Поскольку вышеупомянутые события происходят в последовательном шаблоне синхронизации, так сложно выполнять обработку с несколькими касаниями, поскольку общий номер указателя не может быть известен заранее.

Я заметил, что класс PointerPoint UWP предоставляет свойство FrameID, используемое для идентификации входного кадра, но я не могу найти какой-либо метод для использования этого идентификатора кадра для извлечения всего кадра ввода указателя.

+1

Я исправил некоторую грамматику в вашем вопросе и использовал кодовые блоки для имен методов и свойств. Я также удалил ненужные теги. – Cheesebaron

ответ

1

Поскольку вышеупомянутые события происходят в последовательном шаблоне синхронизации, так сложно обрабатывать мультитач, так как общее количество указателей не может быть заранее известно.

Да вы абсолютно правы, но, к сожалению, нет никакого эквивалента GetPointerFrameInfo() метода Win32 в UWP, мы можем сосредоточиться только на базовый указатель событий. В качестве результата теста последовательности событий в зарегистрированном обработчике указателей, общий способ решить эту проблему - считать события Pressed до событий Moved и очистить этот счет в событиях Released, каждое нажатие событий представляет собой указатель пальца, вы можете ссылаться на мой подобный случай здесь: How can I get touch input in uwp?

Но, если хотят не будет опубликован на магазине, есть методы, чтобы использовать API Win32 в UWP приложения. Один из способов - использовать VS2015TemplateBrokeredComponents для создания моста между UWP-приложением и традиционным настольным приложением, вы можете выполнить следующие шаги, чтобы попробовать свое решение. В качестве альтернативы вы можете использовать PInvoke и этот API Win32 в своем приложении UWP.

Прежде всего, представленные здесь идеи, я надеюсь, вы можете отправить запрос на добавление новых функций для разработки с помощью инструмента обратной связи Windows. Я лично считаю, что это хороший запрос функций для приложений UWP.

+0

Спасибо за ваши предложения, я проанализирую событие касания самостоятельно, так как нам нужно иметь наше приложение. опубликовано в магазине приложений. –

 Смежные вопросы

  • Нет связанных вопросов^_^