Partager via


Architecture des API StylusInput

Les API StylusInput vous permettent d’interagir avec le flux de données du stylet tablette. Pour interagir avec le flux de données, ajoutez un objet RealTimeStylus à votre application et ajoutez des plug-ins à l’objet RealTimeStylus .

Deux plug-ins sont fournis dans les API StylusInput. L’objet DynamicRenderer implémente l’interface IStylusSyncPlugin. L’objet DynamicRenderer restitue l’entrée manuscrite en temps réel, à mesure qu’elle est dessinée. L’objet GestureRecognizer implémente les interfaces IStylusSyncPlugin et IStylusAsyncPlugin . L’objet GestureRecognizer reconnaît les mouvements de l’application.

Définitions

Les termes suivants sont utilisés dans les sections décrivant les API StylusInput :

Plug-in synchrone

Classe qui implémente l’interface IStylusSyncPlugin . Les plug-ins synchrones sont généralement appelés directement par l’objet RealTimeStylus .

Plug-in asynchrone

Classe qui implémente l’interface IStylusAsyncPlugin . Les plug-ins asynchrones sont généralement appelés sur le thread d’interface utilisateur de l’application.

Collection de plug-ins synchrone

Collection StylusSyncPluginCollection , qui est une collection ordonnée d’objets IStylusSyncPlugin . Une collection de plug-ins synchrones fait généralement référence à la collection affectée à la propriété SyncPluginCollection d’un objet RealTimeStylus . Seuls les plug-ins synchrones peuvent être ajoutés à une collection de plug-ins synchrones.

Collection de plug-ins asynchrone

Collection StylusAsyncPluginCollection , qui est une collection ordonnée d’objets IStylusAsyncPlugin . Une collection de plug-ins asynchrone fait généralement référence à la collection affectée à la propriété AsyncPluginCollection d’un objet RealTimeStylus . Seuls les plug-ins asynchrones peuvent être ajoutés à une collection de plug-ins asynchrones.

Plug-ins synchrones et asynchrones

L’objet RealTimeStylus est conçu pour fournir un accès en temps réel au flux de données à partir d’un stylet de tablette. Créez ou utilisez des plug-ins synchrones pour les tâches qui nécessitent un accès en temps réel au flux de données et qui ne sont pas exigeantes d’un point de vue informatique, par exemple pour le filtrage de paquets. Créez ou utilisez des plug-ins asynchrones pour les tâches qui ne nécessitent pas d’accès en temps réel au flux de données, par exemple pour créer et stocker des traits dans un objet InkDisp .

Certaines tâches peuvent être exigeantes en matière de calcul, mais nécessitent un accès en temps réel au flux de données, comme la reconnaissance de mouvements en plusieurs séquences. Pour répondre à ces besoins, les API StylusInput fournissent un modèle RealTimeStylus en cascade qui vous permet d’utiliser deux objets RealTimeStylus , chacun s’exécutant sur son propre thread. Pour plus d’informations sur le modèle RealTimeStylus en cascade, consultez Le modèle RealTimeStylus en cascade.

Pour plus d’informations sur l’utilisation et la création de plug-ins, consultez Utilisation des API StylusInput.

Flux de données du stylet tablette

L’objet RealTimeStylus a deux files d’attente internes qui transportent les données du stylet de tablette, la file d’attente d’entrée et la file d’attente de sortie. Les données du stylet sont converties en instances des classes dans l’espace de noms Microsoft.StylusInput.PluginData . La liste suivante décrit comment l’objet RealTimeStylus gère les données du stylet de tablette :

L’objet RealTimeStylus recherche d’abord les objets de données du plug-in dans sa file d’attente d’entrée, puis à partir du flux de données du stylet de tablette.

L’objet RealTimeStylus envoie un objet de données de plug-in aux objets de sa collection de plug-ins synchrones. Chaque plug-in synchrone peut ajouter des données à la file d’attente d’entrée ou de sortie.

Une fois que l’objet de données du plug-in a été envoyé à tous les membres de la collection de plug-ins synchrones, l’objet de données du plug-in est placé dans la file d’attente de sortie de l’objet RealTimeStylus .

L’objet RealTimeStylus recherche ensuite l’objet de données de plug-in suivant à traiter.

Alors que la file d’attente de sortie de l’objet RealTimeStylus contient des données, l’objet RealTimeStylus envoie un objet de données de plug-in de sa file d’attente de sortie aux objets de sa collection de plug-ins asynchrone. Chaque plug-in asynchrone peut ajouter des données à la file d’attente d’entrée ou de sortie. Toutefois, étant donné que les plug-ins asynchrones s’exécutent sur le thread d’interface utilisateur, les données sont ajoutées à la file d’attente par rapport aux données de stylet actuelles traitées par l’objet RealTimeStylus , et non par rapport aux données que le plug-in asynchrone traite.

Le diagramme suivant illustre le flux des données du stylet de tablette via l’objet RealTimeStylus et ses collections de plug-ins.

flux de données de stylet de tablette via l’objet realtimestylus et ses collections de plug-ins

Dans ce diagramme, les cercles étiquetés « A » et « B » représentent des données de stylet de tablette qui ont déjà été ajoutées à la file d’attente de sortie de l’objet RealTimeStylus et qui n’ont pas encore été envoyées à la collection de plug-in asynchrone. Le cercle intitulé « C » représente les données du stylet de tablette que l’objet RealTimeStylus traite actuellement. Il est envoyé à la collection de plug-ins synchrones et placé dans la file d’attente de sortie. Le cercle vide représente la position dans la file d’attente de sortie où les données futures du stylet de tablette sont ajoutées.

Pour plus d’informations sur la façon dont des données spécifiques sont ajoutées à la file d’attente et traitées, consultez Plug-in Data and the RealTimeStylus Class.

API StylusInput

Les API StylusInput résident principalement dans les espaces de noms Microsoft.StylusInput et Microsoft.StylusInput.PluginData . Toutefois, les API StylusInput référencent également certaines classes dans l’espace de noms Microsoft.Ink , telles que la classe Tablet , la collection TabletPropertyDescriptionCollection et les énumérations ApplicationGesture et SystemGesture .

DynamicRenderer

GestureRecognizer

Realtimestylus

Istylusasyncplugin

IStylusSyncPlugin

Utilisation des API StylusInput

Modèle RealTimeStylus en cascade