Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Le API di manipolazione diretta consentono di creare un'ottima panoramica, zoom e trascinare le esperienze utente. 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, l'hit testing facoltativo dell'input off-thread e la stima di input/output.
Qualsiasi applicazione che usa la manipolazione diretta per elaborare le interazioni tramite tocco visualizza le animazioni fluide di Windows 8 e i comportamenti di feedback di interazione conformi alle linee guida per le interazioni utente comuni.
Gruppo di destinatari per sviluppatori
L'API Di manipolazione diretta è destinata a sviluppatori esperti che conoscono C/C++, hanno una conoscenza approfondita dei Component Object Model (COM) e hanno familiarità con i concetti di programmazione di Windows.
Requisiti di runtime
La manipolazione diretta è stata introdotta in Windows 8. È incluso sia nelle versioni a 32 bit che 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 poi La manipolazione diretta esegue tutta l'intensa 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 della manipolazione diretta avviene in un thread separato 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à del 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 Manipolazione diretta forniscono supporto completo per la gestione dell'input, il riconoscimento dell'interazione, le notifiche di feedback e gli aggiornamenti dell'interfaccia utente. Le interfacce incorporano anche servizi di sistema come DirectComposition.
Concetti di base
L'implementazione di manipolazione diretta più semplice è costituita da un riquadro di visualizzazione , contenutoe interazioni . Il riquadro di visualizzazione è un'area in grado di ricevere ed elaborare l'input dalle interazioni dell'utente. È anche l'area del contenuto visibile all'utente finale. Il contenuto è l'oggetto effettivo che gli utenti finali possono visualizzare ed è ciò che si sposta o ridimensiona in risposta a un'interazione dell'utente. L'utente primario interazioni (note anche come manipolazioni ) supportate dalla manipolazione diretta sono la panoramica e lo zoom. Queste interazioni applicano rispettivamente una trasformazione traduci o ridimensiona al contenuto all'interno del viewport. È possibile configurare più viewport (ognuno con il proprio contenuto) in una singola finestra per creare un'esperienza avanzata dell'interfaccia utente.
Questa figura mostra un'implementazione di base della manipolazione diretta prima e dopo la panoramica.
Durante l'inizializzazione della manipolazione diretta viene creata un'istanza di un oggetto DCompDirectManipulationCompositor ed è associata alla manipolazione diretta. Questo oggetto è un wrapper intorno DirectComposition, che è il compositore di sistema. L'oggetto è responsabile dell'applicazione delle trasformazioni di output e dell'aggiornamento visivo.
Un contatto rappresenta un punto di tocco identificato dal pointerId fornito nel messaggio WM/_POINTERDOWN . Quando viene ricevuto un messaggio di WM_POINTERDOWN, l'applicazione chiama SetContact. L'applicazione notifica la manipolazione diretta dei contatti che devono essere gestiti e i viewport che devono reagire a tali contatti. L'input della tastiera e del mouse dispone di valori pointerId speciali in modo che possano essere gestiti in modo appropriato tramite manipolazione diretta.
Nel caso di base precedente, quando SetContact viene chiamato alcuni aspetti:
- Quando l'utente esegue una panoramica, all'applicazione viene inviato un messaggio WM/_POINTERCAPTURECHANGED per notificare che il contatto è stato utilizzato dalla manipolazione diretta.
- Quando l'utente sposta lo spostamento, il viewport attiva gli eventi di aggiornamento utilizzati dal DirectComposition wrapper per guidare gli aggiornamenti visivi sullo schermo. Per una panoramica dell'utente in un riquadro di visualizzazione, il contenuto apparirà per spostarsi 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 inerziale, decelerando gradualmente fino a raggiungere il suo punto di riposo finale.
Elaborazione dell'input da tastiera e mouse
La manipolazione diretta consente di inoltrare manualmente i messaggi della tastiera e del mouse dal thread dell'interfaccia utente dell'applicazione tramite l'APIProcessInputin modo che possano essere gestiti in modo appropriato dalla manipolazione diretta.
DirectManipulation e HWND
La manipolazione diretta è associata a un HWND Win32 per ricevere ed elaborare messaggi di input del puntatore per tale finestra. Poiché la manipolazione diretta calcola i valori di output, rende i callback asincroni agli oggetti COM (Direct Manipulation Component Object Model) implementati nell'applicazione. Questi callback informano l'applicazione sulla trasformazione applicata agli oggetti . La manipolazione diretta viene attivata nell'oggetto HWND specificato chiamando Activate.