Подтвердить что ты не робот

Применение, улучшение производительности сенсорных событий

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

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

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

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

Point currentPosition = e.GetPosition(this);

При использовании Touch я использую: (e - TouchEventArgs)

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

Все после этого одно и то же.

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

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

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

4b9b3361

Ответ 2

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

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

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

Ответ 3

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