Entwurfsüberlegungen für die StylusInput-API
Im Folgenden sind Entwurfsüberlegungen für die StylusInput-API aufgeführt.
Sie können die WindowInputRectangle-Eigenschaft des RealTimeStylus-Objekts und die ClipRectangle-Eigenschaft des DynamicRenderer-Objekts aktualisieren, während der Stift nicht vorhanden ist. Dies kann nützlich sein, wenn Sie einen dynamischen Zeichenbereich haben möchten, während die Anwendung Freihand sammelt.
Um die Wiederverwendung und Wartung von Plug-In-Code zu optimieren, sollten Plug-Ins nicht direkt an die Anwendung aufrufen, sondern das CustomStylusData-Objekt (CustomeStylusData-Objekt in verwaltetem Code) für die Kommunikation mit der Anwendung verwenden.
Die Plug-In-Auflistungen des RealTimeStylus-Objekts werden sortiert. Die relative Position Ihrer Plug-Ins innerhalb dieser Sammlungen kann sehr wichtig sein. Beispielsweise sollte ein Plug-In, das Paketinformationen ändert, der synchronen Plug-In-Sammlung vor einem Dynamic-Renderer-Plug-In hinzugefügt werden.
Die Möglichkeit, dem Datenstrom des Tablet-Stifts benutzerdefinierte Eingabestiftdaten hinzuzufügen, sollte sparsam verwendet werden. Verwenden Sie dieses Feature nur, wenn ein anderes Plug-In diese Informationen als Teil des Datenstroms empfangen muss. Vermeiden Sie außerdem das Hinzufügen benutzerdefinierter Eingabestiftdaten als Reaktion auf andere benutzerdefinierte Eingabestiftdaten, die in das Plug-In gelangen, da dadurch eine Endlosschleife erstellt werden kann.
Plug-In-Auflistungen können geändert werden, während das RealTimeStylus-Objekt aktiviert ist. Dies kann jedoch dazu führen, dass das Verhalten Ihrer Anwendung schwieriger vorhergesagt werden kann. Wenn ein Plug-In hinzugefügt wird, während das RealTimeStylus-Objekt aktiviert ist, ruft das RealTimeStylus-Objekt das Microsoft.StylusInput.IStylusSyncPlugin des Plug-Ins auf. RealTimeStylusEnabled-Methode (entweder die Microsoft.StylusInput.IStylusSyncPlugin.RealTimeStylusEnabled-Methode oder die Microsoft.StylusInput.IStylusAsyncPlugin.RealTimeStylusEnabled-Methode in verwaltetem Code). Wenn ein Plug-In entfernt wird, während das RealTimeStylus-Objekt aktiviert ist, ruft das RealTimeStylus-Objekt die RealTimeStylusDisabled-Methode des Plug-Ins auf (entweder die Microsoft.StylusInput.IStylusSyncPlugin.RealTimeStylusDisabled-Methode oder die Microsoft.StylusInput.IStylusAsyncPlugin.RealTimeStylusDisabled-Methode in verwaltetem Code). Dadurch kann das Plug-In seinen ordnungsgemäßen Zustand beibehalten, ohne die Enabled-Eigenschaft des RealTimeStylus-Objekts überprüfen zu müssen. Wenn ein Plug-In hinzugefügt wird, während das RealTimeStylus-Objekt aktiviert ist, enthalten die Plug-In-Daten, die das Plug-In empfängt, möglicherweise nicht genügend Informationen, um den Kontext der anfänglichen Daten angemessen herzustellen. Beispielsweise könnte das neu hinzugefügte Plug-In paketdaten von einem Stift empfangen, der sich in der Mitte des Strichs befindet. Wenn ein Plug-In entfernt wird, während das RealTimeStylus-Objekt aktiviert ist, können die vom Plug-In empfangenen Plug-In-Daten möglicherweise nicht ausreichen, um die Verarbeitung der Daten abzuschließen.
Hinweis
Um die Allgemeine Stabilität zu gewährleisten, setzen Sie den internen Zustand eines Plug-Ins zurück, wenn entweder die RealTimeStylusEnabled-Methode oder die RealTimeStylusDisabled-Methode aufgerufen wird.
Das RealTimeStylus-Objekt löst eine Ausnahme aus, wenn ein Plug-In die Plug-In-Auflistung ändert, an die es angefügt ist. Dies geschieht nur, wenn das Plug-In dies tut, während es vom RealTimeStylus-Objekt als Member dieser Auflistung aufgerufen wird.