Применение, улучшить производительность сенсорных событий - PullRequest
13 голосов
/ 14 января 2012

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

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

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

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

Point currentPosition = e.GetPosition(this);

С помощью Touch я использую: (это TouchEventArgs)

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

Все после этого одинаково.

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

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

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

Ответы [ 3 ]

3 голосов
/ 18 февраля 2013
1 голос
/ 09 июля 2012

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

1 голос
/ 24 мая 2012

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

и посмотрите на производительность.

Другой подход - подсчитать, сколько срабатывает OnTouchMove.

...