Condividi tramite


Architettura delle API StylusInput

Le API StylusInput consentono di interagire con il flusso di dati della penna del tablet. Per interagire con il flusso di dati, aggiungere un oggetto RealTimeStylus all'applicazione e aggiungere plug-in all'oggetto RealTimeStylus .

Sono disponibili due plug-in nelle API StylusInput. L'oggetto DynamicRenderer implementa l'interfaccia IStylusSyncPlugin . L'oggetto DynamicRenderer esegue il rendering dell'input penna in tempo reale, mentre viene disegnato. L'oggetto GestureRecognizer implementa le interfacce IStylusSyncPlugin e IStylusAsyncPlugin . L'oggetto GestureRecognizer riconosce i movimenti dell'applicazione.

Definizioni

I termini seguenti vengono usati nelle sezioni che descrivono le API StylusInput:

Plug-in sincrono

Classe che implementa l'interfaccia IStylusSyncPlugin . I plug-in sincroni vengono in genere chiamati direttamente dall'oggetto RealTimeStylus .

Plug-in asincrono

Classe che implementa l'interfaccia IStylusAsyncPlugin . I plug-in asincroni vengono in genere chiamati nel thread dell'interfaccia utente dell'applicazione.

Raccolta di plug-in sincrona

Insieme StylusSyncPluginCollection , che è un insieme ordinato di oggetti IStylusSyncPlugin . Un insieme plug-in sincrono fa in genere riferimento all'insieme assegnato alla proprietà SyncPluginCollection di un oggetto RealTimeStylus . Solo i plug-in sincroni possono essere aggiunti a una raccolta di plug-in sincrona.

Raccolta di plug-in asincrona

Insieme StylusAsyncPluginCollection , che è una raccolta ordinata di oggetti IStylusAsyncPlugin . Una raccolta di plug-in asincrona fa in genere riferimento alla raccolta assegnata alla proprietà AsyncPluginCollection di un oggetto RealTimeStylus . Solo i plug-in asincroni possono essere aggiunti a una raccolta di plug-in asincrona.

Plug-in sincroni e asincroni

L'oggetto RealTimeStylus è progettato per fornire l'accesso in tempo reale al flusso di dati da una penna per tablet. Creare o usare plug-in sincroni per le attività che richiedono l'accesso in tempo reale al flusso di dati e non richiedono requisiti di calcolo, ad esempio per il filtro dei pacchetti. Creare o usare plug-in asincroni per le attività che non richiedono l'accesso in tempo reale al flusso di dati, ad esempio per la creazione e l'archiviazione dei tratti in un oggetto InkDisp .

Alcune attività possono essere richieste dal calcolo, ma richiedono l'accesso in tempo reale al flusso di dati, ad esempio il riconoscimento dei movimenti multistroke. Per soddisfare queste esigenze, le API StylusInput forniscono un modello RealTimeStylus a catena che consente di usare due oggetti RealTimeStylus , ognuno in esecuzione nel proprio thread. Per altre informazioni sul modello RealTimeStylus a catena, vedere Modello RealTimeStylus cascaded.

Per altre informazioni sull'uso e la creazione di plug-in, vedere Uso delle API StylusInput.

Flusso di dati della penna per tablet

L'oggetto RealTimeStylus ha due code interne che contengono i dati della penna del tablet, la coda di input e la coda di output. I dati della penna vengono convertiti in istanze delle classi nello spazio dei nomi Microsoft.StylusInput.PluginData . L'elenco seguente descrive come l'oggetto RealTimeStylus gestisce i dati della penna del tablet:

L'oggetto RealTimeStylus verifica innanzitutto la presenza di oggetti dati plug-in nella coda di input e quindi dal flusso di dati della penna del tablet.

L'oggetto RealTimeStylus invia un oggetto dati plug-in agli oggetti nella raccolta plug-in sincrona. Ogni plug-in sincrono può aggiungere dati alla coda di input o di output.

Dopo l'invio dell'oggetto dati plug-in a tutti i membri della raccolta plug-in sincrona, l'oggetto dati plug-in viene inserito nella coda di output dell'oggetto RealTimeStylus .

L'oggetto RealTimeStylus controlla quindi la presenza dell'oggetto dati plug-in successivo da elaborare.

Mentre la coda di output dell'oggetto RealTimeStylus contiene dati, l'oggetto RealTimeStylus invia un oggetto dati plug-in dalla coda di output agli oggetti nella raccolta di plug-in asincrona. Ogni plug-in asincrono può aggiungere dati alla coda di input o di output. Tuttavia, poiché i plug-in asincroni vengono eseguiti nel thread dell'interfaccia utente, i dati vengono aggiunti alla coda in relazione ai dati della penna correnti che l'oggetto RealTimeStylus sta elaborando e non in relazione ai dati elaborati dal plug-in asincrono.

Il diagramma seguente illustra il flusso dei dati della penna del tablet tramite l'oggetto RealTimeStylus e le relative raccolte plug-in.

flusso dei dati della penna del tablet tramite l'oggetto realtimestylus e le relative raccolte plug-in

In questo diagramma i cerchi con etichetta "A" e "B" rappresentano i dati della penna del tablet già aggiunti alla coda di output dell'oggetto RealTimeStylus e che non sono ancora stati inviati alla raccolta di plug-in asincrona. Il cerchio con etichetta "C" rappresenta i dati della penna del tablet che l'oggetto RealTimeStylus sta elaborando. Viene inviato alla raccolta di plug-in sincrona e inserita nella coda di output. Il cerchio vuoto rappresenta la posizione nella coda di output in cui vengono aggiunti i dati futuri della penna per tablet.

Per altre informazioni sull'aggiunta di dati specifici alla coda ed elaborati, vedere Plug-in Data (Dati plug-in) e RealTimeStylus Class (Classe RealTimeStylus).

API StylusInput

Le API StylusInput si trovano principalmente negli spazi dei nomi Microsoft.StylusInput e Microsoft.StylusInput.PluginData . Tuttavia, le API StylusInput fanno riferimento anche ad alcune classi nello spazio dei nomi Microsoft.Ink , ad esempio la classe Tablet , l'insieme TabletPropertyDescriptionCollection e le enumerazioni ApplicationGesture e SystemGesture .

DynamicRenderer

GestureRecognizer

Realtimestylus

IStylusAsyncPlugin

IStylusSyncPlugin

Uso delle API StylusInput

Modello RealTimeStylus a catena