Delen via


Architectuur van de StylusInput-API's

Met de StylusInput-API's kunt u communiceren met de gegevensstroom van de tabletpen. Als u wilt communiceren met de gegevensstroom, voegt u een RealTimeStylus--object toe aan uw toepassing en voegt u invoegtoepassingen toe aan het RealTimeStylus--object.

Er zijn twee invoegtoepassingen beschikbaar in de StylusInput-API's. Het object DynamicRenderer implementeert de interface IStylusSyncPlugin. Het DynamicRenderer object geeft de inkt in realtime weer, omdat deze wordt getekend. Het object GestureRecognizer implementeert de interfaces IStylusSyncPlugin en IStylusAsyncPlug in. Het GestureRecognizer object herkent toepassingsbewegingen.

Definities

De volgende termen worden gebruikt in de secties waarin de StylusInput-API's worden beschreven:

Synchrone invoegtoepassing

Een klasse waarmee de IStylusSyncPlugin interface wordt geïmplementeerd. Synchrone invoegtoepassingen worden over het algemeen rechtstreeks aangeroepen door het RealTimeStylus--object.

Asynchrone invoegtoepassing

Een klasse waarmee de interface IStylusAsyncPlugin wordt geïmplementeerd. Asynchrone invoegtoepassingen worden over het algemeen aangeroepen op de gebruikersinterface-thread van de toepassing.

Synchrone invoegtoepassingsverzameling

Een StylusSyncPluginCollection verzameling, een geordende verzameling van IStylusSyncPlugin objecten. Een synchrone invoegtoepassingverzameling verwijst meestal naar de verzameling die is toegewezen aan de eigenschap SyncPluginCollection van een RealTimeStylus--object. Alleen synchrone invoegtoepassingen kunnen worden toegevoegd aan een synchrone invoegtoepassingverzameling.

Asynchrone invoegtoepassingsverzameling

Een StylusAsyncPluginCollection verzameling, een geordende verzameling van IStylusAsyncPlugin objecten. Een asynchrone invoegtoepassingverzameling verwijst meestal naar de verzameling die is toegewezen aan de eigenschap AsyncPluginCollection van een RealTimeStylus--object. Alleen asynchrone invoegtoepassingen kunnen worden toegevoegd aan een asynchrone invoegtoepassingsverzameling.

Synchrone en asynchrone invoegtoepassingen

Het object RealTimeStylus is ontworpen om realtime toegang te bieden tot de gegevensstroom vanaf een tabletpen. Maak of gebruik synchrone invoegtoepassingen voor taken waarvoor realtime toegang tot de gegevensstroom is vereist en die rekenkracht niet vereisen, zoals voor pakketfiltering. Asynchrone invoegtoepassingen maken of gebruiken voor taken waarvoor geen realtime toegang tot de gegevensstroom is vereist, zoals voor het maken en opslaan van pennenstreken in een InkDisp--object.

Bepaalde taken kunnen rekenkundig veeleisend zijn maar realtime toegang tot de gegevensstroom vereisen, zoals meervoudige bewegingherkenning. Om aan deze behoeften te voldoen, bieden de StylusInput-API's een trapsgewijs RealTimeStylus- model waarmee u twee RealTimeStylus--objecten kunt gebruiken, die elk op een eigen thread worden uitgevoerd. Zie The Cascaded RealTimeStylus Modelvoor meer informatie over het trapsgewijs RealTimeStylus-model.

Zie Werken met de StylusInput-API'svoor meer informatie over het gebruik en maken van invoegtoepassingen.

De tabletpengegevensstroom

Het object RealTimeStylus heeft twee interne wachtrijen met de tabletpengegevens, de invoerwachtrij en de uitvoerwachtrij. De pengegevens worden geconverteerd naar exemplaren van de klassen in de Microsoft.StylusInput.PluginData naamruimte. In de volgende lijst wordt beschreven hoe het RealTimeStylus-object de tabletpengegevens verwerkt:

De RealTimeStylus object controleert eerst op invoegtoepassingsgegevensobjecten in de invoerwachtrij en vervolgens vanuit de gegevensstroom van de tabletpen.

Het RealTimeStylus--object verzendt één invoegtoepassingsgegevensobject naar de objecten in de synchrone invoegtoepassingverzameling. Elke synchrone invoegtoepassing kan gegevens toevoegen aan de invoer- of uitvoerwachtrij.

Nadat het invoegtoepassingsgegevensobject is verzonden naar alle leden van de synchrone verzameling van invoegtoepassingen, wordt het invoegtoepassingsgegevensobject op de uitvoerwachtrij van het RealTimeStylus object geplaatst.

Het RealTimeStylus--object controleert vervolgens of het volgende invoegtoepassingsgegevensobject moet worden verwerkt.

Terwijl de uitvoerwachtrij van het RealTimeStylus object gegevens bevat, verzendt het RealTimeStylus object één invoegtoepassingsgegevensobject uit de uitvoerwachtrij naar de objecten in de asynchrone verzameling. Elke asynchrone invoegtoepassing kan gegevens toevoegen aan de invoer- of uitvoerwachtrij. Omdat de asynchrone invoegtoepassingen echter worden uitgevoerd op de UI-thread, worden de gegevens toegevoegd aan de wachtrij ten opzichte van de huidige pengegevens die het RealTimeStylus-object object verwerkt en niet met betrekking tot de gegevens die de asynchrone invoegtoepassing verwerkt.

In het volgende diagram ziet u de stroom van tabletpengegevens via het RealTimeStylus-object en de bijbehorende invoegtoepassingverzamelingen.

stroom van tabletpengegevens via het realtimestylus-object en de bijbehorende plug-inverzamelingen

In dit diagram vertegenwoordigen de cirkels met het label 'A' en 'B' tabletpengegevens die al zijn toegevoegd aan de uitvoerwachtrij van het RealTimeStylus object en die nog niet naar de asynchrone invoegtoepassingverzameling zijn verzonden. De cirkel met het label C vertegenwoordigt de tabletpengegevens die het RealTimeStylus-object object momenteel verwerkt. Het wordt verzonden naar de synchrone invoegtoepassingverzameling en in de uitvoerwachtrij geplaatst. De lege cirkel vertegenwoordigt de positie in de uitvoerwachtrij waar toekomstige tabletpengegevens worden toegevoegd.

Zie Plug-in Data en de RealTimeStylus Classvoor meer informatie over hoe specifieke gegevens worden toegevoegd aan de wachtrij en verwerkt.

De StylusInput-API's

De StylusInput-API's bevinden zich voornamelijk in de Microsoft.StylusInput en Microsoft.StylusInput.PluginData naamruimten. De StylusInput-API's verwijzen echter ook naar enkele klassen in de Microsoft.Ink-naamruimte, zoals de klasse Tablet, de verzameling TabletPropertyDescriptionCollection en de ApplicationGesture en SystemGesture opsommingen.

DynamicRenderer-

GestureRecognizer

RealTimeStylus-

IStylusAsyncPlugin

IStylusSyncPlugin

Werken met de StylusInput-API's

The Cascaded RealTimeStylus Model