plug-in Dynamic-Renderer
Un plug-in dynamic-renderer è un oggetto che visualizza i dati della penna tablet in tempo reale mentre viene gestito dall'oggetto RealTimeStylus . In seguito, per eventi come un aggiornamento del modulo, il plug-in dynamic-renderer o un plug-in dell'agente di raccolta input penna può ridisegnare l'input penna.
Oggetto DynamicRenderer
L'oggetto RealTimeStylus implementa l'interfaccia IStylusSyncPlugin . L'oggetto DynamicRenderer esegue il rendering dell'input penna in tempo reale, mentre viene disegnato. Quando il metodo Refresh viene chiamato mentre l'oggetto DynamicRenderer è abilitato, l'oggetto DynamicRenderer ridisegna il tratto attualmente in corso di raccolta. La proprietà Enabled dell'oggetto DynamicRenderer è inizialmente impostata su FALSE.
Nota
Quando si chiama il metodo Refresh dell'oggetto DynamicRenderer dall'interno di un gestore eventi Paint nel codice gestito, impostare la proprietà ClipRectangle dell'oggetto DynamicRenderer sulla proprietà ClipRectangle dell'oggetto PaintEventArgs.
L'oggetto DynamicRenderer può memorizzare temporaneamente nella cache i dati dell'input penna. Per usare questa funzionalità nel codice gestito, impostare la proprietà EnableDataCache su TRUE. Quando l'oggetto DynamicRenderer riceve una chiamata al relativo metodo IStylusSyncPlugin.StylusUp , memorizza nella cache i dati del tratto e aggiunge dati di stilo personalizzati alla coda input in risposta all'oggetto StylusUpData per il tratto. La proprietà CustomStylusData dell'oggetto CustomDataId è impostata sul valore DynamicRendererCachedDataGuid e la proprietà Data dell'oggetto CustomStylusData contiene un oggetto DynamicRendererCachedData. Chiamare il metodo ReleaseCachedData dell'oggetto DynamicRenderer dopo aver raccolto il tratto e può essere eseguito il rendering statico. Quando viene chiamato il metodo Refresh mentre l'oggetto DynamicRenderer è abilitato, l'oggetto DynamicRenderer ridisegna tutti i tratti memorizzati nella cache. Quando la proprietà DataCacheEnabled è impostata su false, i dati del tratto memorizzati nella cache vengono eliminati.
Il diagramma seguente illustra come l'oggetto DynamicRenderer aggiunge dati ai dati della penna del tablet quando viene impostata la proprietà DataCacheEnabled dell'oggetto DynamicRenderer.
In questo diagramma il cerchio letterato "SD" rappresenta un oggetto StylusDown e i cerchi letterati "P" rappresentano gli oggetti Pacchetti che sono già stati aggiunti alla coda di output dell'oggetto RealTimeStylus e che non sono ancora stati inviati alla raccolta plug-in asincrona. Il cerchio letterato "SU" rappresenta un oggetto StylusUp che l'oggetto RealTimeStylus sta attualmente elaborando. Viene inviato alla raccolta plug-in sincrona e quindi inserita nella coda di output. I cerchi letterati "RIPRISTINO di emergenza" rappresentano dati di stilo personalizzati aggiunti alla coda di input dal plug-in DynamicRenderer in risposta alla notifica di stilo associata a "SU". I dati di stilo personalizzati letterati "RIPRISTINO" vengono quindi passati ai plug-in sincroni e quindi alla coda di output prima dell'elaborazione dei dati della penna del tablet successivo. Il cerchio vuoto rappresenta la posizione nella coda di output in cui vengono aggiunti i dati della penna tablet futuri. Anche rappresentato nel diagramma è il plug-in dell'agente di raccolta penna che chiama il metodo ReleaseCachedData dell'oggetto DynamicRenderer per rilasciare i dati del tratto memorizzati nella cache dopo l'elaborazione del plug-in della raccolta input penna.
Considerazioni speciali
L'elenco seguente descrive altri punti da prendere in considerazione quando si usa l'oggetto DynamicRenderer .
Non è consigliabile collegare un oggetto DynamicRenderer a più di un oggetto RealTimeStylus . Dopo aver abilitato due oggetti RealTimeStylus a cui è collegato l'oggetto DynamicRenderer , si verifica quanto segue.
- L'oggetto DynamicRenderer genera un'eccezione in risposta alla seconda chiamata al relativo metodo RealTimeStylusEnabled .
- Il secondo oggetto RealTimeStylus abilitato genera un oggetto Error e notifica i plug-in rimanenti nelle raccolte plug-in dell'errore.
- L'oggetto DynamicRenderer arresta il rendering dei dati della penna tablet.
L'oggetto RealTimeStylus genera un'eccezione quando il relativo metodo AddCustomStylusDataToQueue viene chiamato con il parametro guid impostato sull'identificatore univoco globale DynamicRendererCachedDataGuid a livello globale.
L'oggetto DynamicRenderer viene implementato come wrapper COM (Component Object Model) e non è possibile chiamare direttamente i metodi di interfaccia IStylusSyncPlugin . Per altre informazioni sull'operazione COM e sull'oggetto RealTimeStylus , vedere Note sull'implementazione per le API StylusInput.
Rendering personalizzato
È possibile creare un plug-in dynamic-renderer personalizzato creando un plug-in sincrono che sottoscrive le notifiche StylusDown, Pacchetti e StylusUp . Il plug-in può quindi eseguire il rendering del tratto durante il disegno. Questo può essere un modo per implementare uno strumento di selezione che usa una selezione di moduli gratuiti o una casella di selezione, ad esempio.