2012-01-13 3 views
13

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

Каждая часть автомобиля - это элемент управления, с которым мы можем манипулировать пальцами, на мониторе с двойным касанием или мультитач.

Моя проблема: для управления элементом управления, например кнопкой громкости, пользователю необходимо перемещать мышь точно так же, как в реальной жизни, поэтому с круговым движением. С мышью все идеально, он реагирует мгновенно без каких-либо задержек. Я использую OnMouseLeftButtonDown, OnMouseMove и т. Д. Прикосновением для компьютера очень сложно получить положение касания, и есть огромное отставание, особенно когда пользователь перемещает 2 разные кнопки с двумя пальцами одновременно , Я использую OnTouchDown, OnTouchMove и т.д ...

Единственное различие между мышью и прикосновением, когда нам нужно получить позицию, с помощью мыши я использую: (е является MouseButtonEventArgs)

Point currentPosition = e.GetPosition(this); 

с сенсорным я использую: (е является TouchEventArgs)

Point currentPosition = e.GetTouchPoint(this).Position; 

Все после того, как это то же самое.

Я не знаю, связано ли это с тем, что у меня слишком много контроля в моем приложении (более 5000, с которыми мы можем манипулировать, но когда мы увеличиваем только 2 элемента управления, это одно и то же) или потому, что это действительно сложно компьютер, чтобы получить позицию от события касания ....

Может кто-нибудь помочь мне с этим? Мне нужно найти решение, чтобы устранить отставание.

Я использую Visual Studio 2010, Смешать 4, .NET 4.0 для Windows 7 64-бит 7 Gb RAM Xeon 2,13 ГГц, 2 ядра, 8 нить экрана: технология ELO, на экране NEC 2490WUXi2

+11

Если все хорошо работает с мышью, и вы не имеете каких-либо задержек манипулируя управления, то я бы сказал, что виновником является водитель сенсорного устройства. Я думаю, что он не в состоянии идти в ногу со скоростью пальца и, следовательно, вводить задержку, которую вы замечаете.Я видел эту проблему в определенном сенсорном оборудовании, и я использовал другое сенсорное оборудование с отличной отзывчивостью, поэтому я бы с уверенностью сказал, что проблема не имеет ничего общего с WPF или касанием сама по себе, это просто способ, которым драйвер реализован для вашего прикосновения устройство. – Murven

+1

Я предлагаю вам попробовать использовать симулятор Microsoft Touch, который поставляется с Microsoft Surface SDK. Он работает с мышью, конечно, в этом смысле, как сказал Мурвен, если нет никакого отклика на получение и реагирование на события касания с использованием симулятора, то отставание происходит от драйверов с несколькими касаниями – Khaliloz

+0

Какова частота событие OnTouchMove против OnMouseMove? Другими словами, OnTouchMove запускается 1000 раз в секунду, а OnMouseMove - 10 раз в секунду? – Snixtor

ответ

3
+0

Спасибо, что разделите это! – mlemay

+1

https://connect.microsoft.com/VisualStudio/feedback/details/782456/wpf-touch-event-fires-with-delay Pls upvote this Bug! – Andreas

1

трудно сказать, почему у вас такая проблема - может быть, OnTouchMove запускается чаще, чем MouseMove, и вы должны создать дополнительную обработку для сглаживания данных сенсорных позиций. Я бы попытался прокомментировать весь код под Point currentPosition = e.GetTouchPoint (this) .Position;

и посмотрите на характеристики.

Другой подход заключается в подсчете количества срабатываний OnTouchMove.

1

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

+0

Почему вы не позволили Мервену принять принятый ответ. это то, что он уже сказал в комментарии. –

+0

он не написал ответ, я не могу – mlemay

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