2012-01-13 17 views
13

Fondamentalmente, ho un'applicazione che è 8000px per 8000px. Possiamo ingrandire per visualizzare una parte specifica, un esempio alla radio o possiamo eseguire lo zoom indietro per visualizzare tutto.Applicazione, migliorare le prestazioni degli eventi tattili

Ogni parte della macchina è un controllo che possiamo manipolare con le dita, su un monitor dual touch o multitouch.

Il mio problema è: per manipolare un controllo, ad esempio il pulsante Volume, l'utente deve spostare il mouse esattamente come nella vita reale, quindi con un movimento circolare. Con il mouse tutto è perfetto, risponde istantaneamente senza alcun ritardo. Uso OnMouseLeftButtonDown, OnMouseMove, ecc. Con il tocco, sembra molto difficile per il computer ottenere la posizione tattile e c'è un enorme ritardo, specialmente quando l'utente sposta 2 diversi pulsanti con 2 dita contemporaneamente . Io uso l'OnTouchDown, OnTouchMove, ecc ...

L'unica differenza tra il mouse e il tocco è quando abbiamo bisogno di ottenere la posizione, con il mouse che uso: (e è un MouseButtonEventArgs)

Point currentPosition = e.GetPosition(this); 

con il tocco che uso: (e è un TouchEventArgs)

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

Tutto dopo questo è lo stesso.

Non so se è perché ho troppi controlli nella mia applicazione (oltre 5000 che possiamo manipolare, ma quando eseguiamo lo zoom su solo 2 controlli è la stessa cosa) o perché è veramente difficile per il computer per ottenere la posizione da un evento touch ....

Qualcuno può aiutarmi con questo? Ho bisogno di trovare una soluzione per eliminare il ritardo.

io uso Visual Studio 2010, Blend 4, NET 4.0 Windows 7 64-bit 7 Gb di RAM Xeon 2.13 GHz, 2 nucleo, 8 filo dello schermo: la tecnologia ELO, in uno schermo NEC 2490WUXi2

+11

Se tutto funziona bene con il mouse e non si dispone di eventuali ritardi che manipolano i controlli, quindi direi che il colpevole è il driver di dispositivo touch. Penso che non sia in grado di tenere il passo con la velocità delle dita e quindi di introdurre il ritardo che stai notando.Ho visto questo problema in alcuni hardware touch e ho usato altri touch hardware con perfetta reattività, quindi direi con certezza che il problema non ha nulla a che fare con WPF o touch stesso, è semplicemente il modo in cui il driver è implementato per il tuo tocco dispositivo. – Murven

+1

Ti suggerisco di provare a utilizzare Microsoft Touch Simulator fornito con Microsoft Surface SDK. Funziona con il mouse ovviamente, in questo senso, come menzionato da Murven, se non ci sono ritardi nel ricevere e rispondere agli eventi di tocco utilizzando il simulatore, il ritardo è originato dai driver multi-touch – Khaliloz

+0

Qual è la frequenza di l'evento OnTouchMove vs OnMouseMove? In altre parole, OnTouchMove viene attivato 1.000 volte al secondo, mentre OnMouseMove può essere 10 volte al secondo? – Snixtor

risposta

1

è difficile dire perché si è verificato un problema di questo tipo: è possibile che OnTouchMove venga attivato più spesso di MouseMove e che sia necessario creare ulteriore elaborazione per semplificare i dati relativi alle posizioni di tocco. Vorrei provare a commentare tutto il codice sotto il punto currentPosition = e.GetTouchPoint (this) .Position;

e guarda la performance.

Un altro approccio è contare quanto OnTouchMove viene attivato.

1

Il problema è il dispositivo touch, provane un altro per verificare se il ritardo è ancora presente.

+0

perché non permetti a Murven di ottenere la risposta accettata. questo è quello che ha già detto in un commento. –

+0

non ha scritto una risposta, non posso – mlemay

Problemi correlati