Dynamic-Renderer-Plug-Ins
Ein Plug-In mit dynamischem Renderer ist ein Objekt, das die Tablettstiftdaten in Echtzeit anzeigt, während sie vom RealTimeStylus-Objekt verarbeitet werden. Später kann das Plug-In für dynamische Renderer oder ein Ink-Collector-Plug-In für Ereignisse wie eine Formularaktualisierung die Ink-Ink neu zeichnen.
Das DynamicRenderer-Objekt
Das RealTimeStylus-Objekt implementiert die IStylusSyncPlugin-Schnittstelle. Das DynamicRenderer-Objekt rendert die Ink-Ink in Echtzeit, während sie gezeichnet wird. Wenn die Refresh-Methode aufgerufen wird, während das DynamicRenderer-Objekt aktiviert ist, zeichnet das DynamicRenderer-Objekt den aktuell erfassten Strich neu. Die Enabled-Eigenschaft des DynamicRenderer-Objekts ist anfänglich auf FALSE festgelegt.
Hinweis
Wenn Sie die Refresh-Methode des DynamicRenderer-Objekts innerhalb eines Paint Ereignishandlers in verwaltetem Code aufrufen, legen Sie die ClipRectangle-Eigenschaft des DynamicRenderer-Objekts auf die ClipRectangle-Eigenschaft des PaintEventArgs-Objekts fest.
Das DynamicRenderer-Objekt kann Ink-Daten vorübergehend zwischenspeichern. Um dieses Feature in verwaltetem Code zu verwenden, legen Sie die EnableDataCache-Eigenschaft auf TRUE fest. Wenn das DynamicRenderer-Objekt einen Aufruf seiner IStylusSyncPlugin.StylusUp-Methode empfängt, speichert es die Strichdaten zwischen und fügt der Eingabewarteschlange als Reaktion auf das StylusUpData-Objekt für den Strich benutzerdefinierte Stiftdaten hinzu. Die CustomDataId-Eigenschaft des CustomStylusData-Objekts wird auf den DynamicRendererCachedDataGuid-Wert festgelegt, und die Data-Eigenschaft des CustomStylusData-Objekts enthält ein DynamicRendererCachedData-Objekt. Rufen Sie die ReleaseCachedData-Methode des DynamicRenderer-Objekts auf, nachdem der Strich gesammelt wurde und statisch gerendert werden kann. Wenn die Refresh-Methode aufgerufen wird, während das DynamicRenderer-Objekt aktiviert ist, zeichnet das DynamicRenderer-Objekt alle zwischengespeicherten Striche neu. Wenn die DataCacheEnabled-Eigenschaft auf FALSE festgelegt ist, werden die zwischengespeicherten Strichdaten gelöscht.
Das folgende Diagramm veranschaulicht, wie das DynamicRenderer-Objekt Daten zu den Tablettstiftdaten hinzufügt, wenn die DataCacheEnabled-Eigenschaft des DynamicRenderer-Objekts festgelegt wird.

In diesem Diagramm stellt der Kreis mit dem Buchstaben "SD" ein StylusDown-Objekt dar, und die Kreise mit dem Buchstaben "P" stellen Paketobjekte dar, die der Ausgabewarteschlange des RealTimeStylus-Objekts bereits hinzugefügt und noch nicht an die asynchrone Plug-In-Sammlung gesendet wurden. Der Kreis mit dem Buchstaben "SU" stellt ein StylusUp-Objekt dar, das das RealTimeStylus-Objekt gerade verarbeitet. Sie wird an die synchrone Plug-In-Sammlung gesendet und dann in der Ausgabewarteschlange platziert. Die Kreise mit dem Buchstaben "DR" stellen benutzerdefinierte Stiftdaten dar, die der Eingabewarteschlange durch das DynamicRenderer-Plug-In als Reaktion auf die stiftende Benachrichtigung hinzugefügt werden, die "SU" zugeordnet ist. Die benutzerdefinierten Tablettstiftdaten mit dem Buchstaben "DR" werden dann an die synchronen Plug-Ins und dann an die Ausgabewarteschlange übergeben, bevor die nächsten Tablettstiftdaten verarbeitet werden. Der leere Kreis stellt die Position in der Ausgabewarteschlange dar, an der zukünftige Tablettstiftdaten hinzugefügt werden. Im Diagramm wird auch das Plug-In ink-collector dargestellt, das die ReleaseCachedData-Methode des DynamicRenderer-Objekts aufruft, um die zwischengespeicherten Strichdaten freizugeben, nachdem das Plug-In für die Freihandsammlung den Strich verarbeitet hat.
Besondere Überlegungen
In der folgenden Liste werden andere Punkte beschrieben, die bei der Verwendung des DynamicRenderer-Objekts zu berücksichtigen sind.
Sie sollten kein DynamicRenderer-Objekt an mehr als ein RealTimeStylus-Objekt anfügen. Sobald zwei RealTimeStylus-Objekte, an die das DynamicRenderer-Objekt angefügt ist, aktiviert sind, geschieht Folgendes.
- Das DynamicRenderer-Objekt löst als Reaktion auf den zweiten Aufruf seiner RealTimeStylusEnabled-Methode eine Ausnahme aus.
- Das zweite aktivierte RealTimeStylus-Objekt generiert ein Error-Objekt und benachrichtigt die verbleibenden Plug-Ins in seinen Plug-In-Auflistungen über den Fehler.
- Das DynamicRenderer-Objekt beendet das Rendern von Tablettstiftdaten.
Das RealTimeStylus-Objekt löst eine Ausnahme aus, wenn die AddCustomStylusDataToQueue-Methode aufgerufen wird, wobei der guid-Parameter auf den Globally Unique Identifier (GUID) DynamicRendererCachedDataGuid festgelegt ist.
Das DynamicRenderer-Objekt wird als COM-Wrapper (Component Object Model) implementiert, und Sie können seine IStylusSyncPlugin-Schnittstellenmethoden nicht direkt aufrufen. Weitere Informationen zum COM-Vorgang und zum RealTimeStylus-Objekt finden Sie unter Implementierungshinweise für die StylusInput-APIs.
Benutzerdefiniertes Rendering
Sie können ein eigenes Plug-In für dynamische Renderer erstellen, indem Sie ein synchrones Plug-In erstellen, das die Benachrichtigungen StylusDown, Packetsund StylusUp abonniert. Das Plug-In kann dann den Strich rendern, während er gezeichnet wird. Dies kann eine Möglichkeit sein, ein Auswahltool zu implementieren, das z. B. eine Freiformauswahl oder ein Auswahlfeld verwendet.