Manipolazione diretta
Le API di manipolazione diretta consentono di creare esperienze utente di panoramica, zoom e trascinamento. A tale scopo, elabora l'input tocco in un'area o un oggetto, genera trasformazioni di output e applica le trasformazioni agli elementi dell'interfaccia utente. È possibile usare La manipolazione diretta per ottimizzare la velocità di risposta e ridurre la latenza tramite l'elaborazione di input off-thread, i test di hit test di input off-thread facoltativi e la stima di input/output.
Qualsiasi applicazione che usa La manipolazione diretta per elaborare le interazioni tocco visualizza le animazioni fluide Windows 8 e i comportamenti di feedback di interazione conformi alle linee guida per le interazioni utente comuni.
Sviluppatori
L'API Di manipolazione diretta è destinata agli sviluppatori esperti che conoscono C/C++, hanno una solida comprensione del modello a oggetti componente (COM) e hanno familiarità con i concetti di programmazione di Windows.
Requisiti di runtime
La manipolazione diretta è stata introdotta in Windows 8. È incluso in entrambe le versioni a 32 bit e a 64 bit.
Perché usare DirectManipulation
Gestisce le interazioni in modo semplice e coerente
La manipolazione diretta funziona pre-dichiarando i comportamenti e le interazioni per un'area o un oggetto. Ad esempio, una pagina Web viene spesso configurata per la panoramica e lo zoom. In fase di esecuzione, l'input viene quindi associato a questa area/oggetto tramite una semplice chiamata API. Da questo punto in avanti La manipolazione diretta esegue tutto il pesante sollevamento dell'elaborazione dell'input, l'applicazione di vincoli e personalità e la generazione delle trasformazioni di output.
Creare applicazioni touch reattive
Per ottimizzare la velocità di risposta e ridurre al minimo la latenza, l'elaborazione di manipolazione diretta si verifica in un thread separato e indipendente dal thread dell'interfaccia utente. Di conseguenza, le trasformazioni di output possono essere eseguite in parallelo all'attività nel thread dell'interfaccia utente. L'attività thread dell'interfaccia utente può includere logica dell'applicazione, rendering, layout e qualsiasi altra operazione che utilizza cicli nel processore.
Flessibilità di implementazione
Le interfacce incluse in Direct Manipulation offrono supporto completo per la gestione dell'input, il riconoscimento dell'interazione, le notifiche di feedback e gli aggiornamenti dell'interfaccia utente. Le interfacce includono anche servizi di sistema, ad esempio DirectComposition.
Concetti fondamentali
L'implementazione della manipolazione diretta più di base è costituita da un viewport, contenuto e interazioni. Il viewport è un'area in grado di ricevere ed elaborare l'input dalle interazioni utente. È anche l'area del contenuto visibile all'utente finale. Il contenuto è l'oggetto effettivo che gli utenti finali possono vedere ed è ciò che sposta o ridimensiona in risposta a un'interazione utente. Le interazioni utente principali (note anche come manipolazioni ) supportate dalla manipolazione diretta sono la panoramica e lo zoom. Queste interazioni applicano rispettivamente una trasformazione di conversione o scalabilità al contenuto all'interno del viewport. È possibile configurare più viewport (ognuno con il proprio contenuto) in una singola finestra per creare un'esperienza di interfaccia utente avanzata.
Questa figura mostra un'implementazione di manipolazione diretta di base prima e dopo la panoramica.
Durante l'inizializzazione di Direct Manipulation un oggetto DCompDirectManipulationCompositor viene creata un'istanza e viene associata a Direct Manipulation. Questo oggetto è un wrapper intorno a DirectComposition, ovvero il compositore di sistema. L'oggetto è responsabile dell'applicazione delle trasformazioni di output e degli aggiornamenti visivi.
Un contatto rappresenta un punto di tocco identificato dal puntatoreId fornito nel messaggio WM/_POINTERDOWN . Quando viene ricevuto un messaggio di WM_POINTERDOWN , l'applicazione chiama SetContact. L'applicazione notifica la manipolazione diretta sui contatti che devono essere gestiti e i viewport che devono reagire a tali contatti. L'input della tastiera e del mouse ha valori puntatori speciali in modo che possano essere gestiti in modo appropriato da Manipolazione diretta.
Nel caso di base precedente, quando SetContact viene chiamato alcune cose si verificano:
- Quando l'utente esegue una panoramica, viene inviato un messaggio WM/_POINTERCAPTURECHANGED all'applicazione per notificare che il contatto è stato utilizzato da Direct Manipulation.
- Quando l'utente sposta lo spostamento, il riquadro visualizza gli eventi di aggiornamento usati dal wrapper DirectComposition per guidare gli aggiornamenti visivi sullo schermo. Per una panoramica dell'utente in un riquadro di visualizzazione, il contenuto verrà spostato senza problemi sotto il contatto.
- Quando l'utente solleva il contatto, l'utente vede che il contenuto continua a spostarsi mentre passa a un'animazione inertia, decelerando gradualmente fino a raggiungere il suo posto di riposo finale.
Elaborazione della tastiera e dell'input del mouse
La manipolazione diretta consente l'inoltro manuale dei messaggi da tastiera e mouse dal thread dell'interfaccia utente dell'applicazione tramite l'API ProcessInput , in modo che possano essere gestiti in modo appropriato da Direct Manipulation.
DirectManipulation e HWND
La manipolazione diretta è associata a un HWND Win32 per ricevere e elaborare i messaggi di input del puntatore per tale finestra. Poiché La manipolazione diretta calcola i valori di output, rende i callback asincroni agli oggetti Direct Manipulation Component Object Model (COM) implementati nell'applicazione. Questi callback informano l'applicazione sulla trasformazione applicata agli oggetti. La manipolazione diretta viene attivata nel HWND specificato chiamando Attiva.