2012-01-13 24 views
13

Básicamente, tengo una aplicación que es 8000px por 8000px. Podemos acercarnos para ver una parte específica, ejemplo en la radio, o podemos alejar para ver todo.Aplicación, mejorar el rendimiento de los eventos táctiles

Cada parte del automóvil es un control que podemos manipular con los dedos, en un monitor dual o multitáctil.

Mi problema es: para manipular un control, por ejemplo, el botón de Volumen, el usuario necesita mover el mouse exactamente como en la vida real, por lo que con un movimiento circular. Con el mouse todo es perfecto, responde al instante sin demora. Uso OnMouseLeftButtonDown, OnMouseMove, etc. Con el toque, parece ser muy difícil para la computadora obtener la posición táctil y hay un gran retraso, especialmente cuando el usuario mueve 2 botones diferentes con 2 dedos al mismo tiempo . Yo uso el OnTouchDown, onTouchMove, etc ...

La única diferencia entre el ratón y el tacto es cuando necesitamos para obtener la posición, con el ratón que utilizo: (e es un MouseButtonEventArgs)

Point currentPosition = e.GetPosition(this); 

con el toque que utilizo: (e es un TouchEventArgs)

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

Todo después de que este es el mismo.

No sé si es porque tengo demasiado control en mi aplicación (más de 5000 que podemos manipular, pero cuando hacemos zoom en solo 2 controles es lo mismo) o porque es realmente difícil para la computadora para obtener la posición de un evento táctil ....

¿Alguien me puede ayudar con esto? Necesito encontrar una solución para eliminar el retraso.

que utiliza Visual Studio 2010, Blend 4, .NET 4.0 Windows 7 de 64 bits 7 Gb de RAM Xeon 2.13 GHz, 2 conductores de hilo 8 pantalla: la tecnología ELO, en una pantalla NEC 2490WUXi2

+11

Si todo funciona bien con el ratón y que no tiene ningún retraso manipulación de los controles, entonces yo diría que el culpable es el controlador de dispositivo táctil. Creo que no puede mantenerse al ritmo de la velocidad de los dedos y, por lo tanto, presenta el retraso que está notando.He visto este problema en ciertos dispositivos táctiles y he utilizado otro hardware táctil con capacidad de respuesta perfecta, por lo que con seguridad diría que el problema no tiene nada que ver con WPF o con el tacto, simplemente es la forma en que el controlador se implementa para su tacto dispositivo. – Murven

+1

Sugiero que intente utilizar el Microsoft Touch Simulator que viene con Microsoft Surface SDK. funciona con el ratón, por supuesto, en ese sentido, como se ha mencionado Murven, si no hay retraso en la recepción y respuesta a los eventos de toque utilizando el simulador, entonces el retraso es originario de los conductores multi-touch – Khaliloz

+0

¿Cuál es la frecuencia de el evento OnTouchMove vs. OnMouseMove? En otras palabras, ¿se activa OnTouchMove 1,000 veces por segundo, mientras que OnMouseMove puede ser 10 veces por segundo? – Snixtor

Respuesta

1

es difícil decir por qué tiene un problema de este tipo: puede que OnTouchMove se active con más frecuencia que MouseMove y debe crear un procesamiento adicional para suavizar los datos de las posiciones táctiles. Intentaré comentar todo el código bajo Point currentPosition = e.GetTouchPoint (this) .Position;

y observe el rendimiento.

Otro enfoque es contar cuánto se activa OnTouchMove.

1

El problema es el dispositivo táctil, pruebe con otro para ver si el retraso todavía está allí.

+0

por qué no dejas que Murven obtenga la respuesta aceptada. esto es lo que ya dijo en un comentario. –

+0

no escribió una respuesta, no puedo – mlemay

Cuestiones relacionadas