Collection d’encre
La collection d’encre commence par le numériseur. Un utilisateur place un stylet sur le numériseur et commence à écrire. Vous pouvez utiliser les fonctionnalités de collecte d’encre de l’API pour gérer la collection de données manuscrites qui « circulent » à partir du stylet. Vous avez accès à des informations sur le matériel disponible sur Tablet PC via la collection Tablets et l’objet Tablet . Vous utilisez ensuite l’objet InkCollector pour obtenir les données provenant du numériseur.
Une tablette représente un appareil de numériseur de Tablet PC. Un tablet PC peut avoir plusieurs numérisants. À l’aide de l’objet Tablet , vous pouvez rechercher les appareils de numériseur disponibles qui sont attachés à Tablet PC et leurs fonctionnalités matérielles respectives. Par exemple, vous pouvez déterminer si la tablette avec laquelle vous travaillez est intégrée à l’écran ou s’il s’agit d’un appareil externe distinct.
L’objet InkCollector capture l’entrée manuscrite à partir d’appareils Tablet disponibles. L’objet InkCollector collecte uniquement l’encre et les mouvements entrés dans une fenêtre spécifique. Un récepteur d’événements très efficace restitue cette entrée en temps réel. L’objet InkCollector capture l’entrée et la dirige vers un objet Ink.
Notes
La pose simultanée d’encre avec plusieurs stylets peut ou non fonctionner, en fonction des capacités matérielles de l’appareil du numériseur.
L’objet InkCollector s’attache à une fenêtre d’application connue. Il permet ensuite aux utilisateurs d’utiliser n’importe quel appareil Tablet PC disponible (y compris la souris) pour déposer l’entrée manuscrite en temps réel sur cette fenêtre. Les traits d’encre qu’il collecte sont stockés dans un objet Ink associé. Ces traits peuvent ensuite être manipulés ou envoyés à un module de reconnaissance. L’objet InkCollector avertit également l’application lorsqu’un curseur entre dans la plage de l’un des appareils Tablet PC utilisés.
Pour que l’objet InkCollector définisse avec précision le curseur de la souris dans une fenêtre avec entrée manuscrite, cette fenêtre doit pouvoir recevoir le message WM_SETCURSOR . Cela réussit pour toutes les fenêtres normales, mais, pour un contrôle dans une boîte de dialogue, le parent de la boîte de dialogue du contrôle filtre ce message. Pour que le contrôle reçoive le message, définissez le style SS_NOTIFY .
L’objet InkCollector, décrit précédemment, est utile pour que les applications fournissent leur propre modèle pour la sélection, l’effacement et d’autres interactions utilisateur. L’objet InkOverlay est un sur-ensemble de l’objet InkCollector qui prend en charge la modification. Cela est utile pour que les applications intègrent le dessin et la modification manuscrits dans leur propre canevas de document à l’aide d’un ensemble de modèles de sélection d’encre standard que l’objet fournit.
L’objet InkCollector et l’objet InkOverlay (ainsi que le contrôle InkPicture ) utilisent des constructions courantes, telles que l’objet Ink et la collection DrawingAttributes , afin que la façon de base de modifier la couleur de l’encre soit la même partout. Cela vous permet de réutiliser le code et d’avoir un accès par programmation commun, ce qui peut être particulièrement important si vous proposez une prise en charge des scripts dans votre application.
InkOverlay est un objet COM utile pour les scénarios d’annotation dans lesquels les utilisateurs ne se soucient pas d’effectuer la reconnaissance sur l’encre, mais s’intéressent plutôt à la taille, à la forme, à la couleur et à la position de l’encre. Il est bien adapté pour la prise de notes et le gribouillage de base. L’interface utilisateur par défaut est un rectangle transparent avec une entrée manuscrite opaque.
InkOverlay étend la classe InkCollector de trois manières :
- Il déclenche des événements pour les modifications d’attributs de début, de fin et d’entrée manuscrite.
- Il permet aux utilisateurs de sélectionner, d’effacer et de redimensionner l’entrée manuscrite.
- Il prend en charge les commandes Couper, Copier et Coller.
Un scénario classique dans lequel InkOverlay est utile consiste à marquer une diapositive ou une image de présentation. L’objet InkOverlay permet d’implémenter facilement les fonctionnalités d’entrée manuscrite et de disposition requises par ce scénario.
Pour utiliser InkOverlay, vous :
- Instanciez un objet InkOverlay .
- Attachez le hWnd (handle, en code managé) d’une fenêtre à la propriété hWnd de l’objet InkOverlay (propriété Handle, en code managé).
- Définissez la propriété Enabled de l’objet InkOverlay sur TRUE.
L’objet InkOverlay inclut une prise en charge d’impression de base, mais vous devez implémenter l’aperçu avant impression ou d’autres fonctionnalités d’impression avancées.
InkOverlay conserve l’entrée manuscrite au format sérialisé (ISF).
Notes
Si l’objet EditingMode de l’objet InkOverlay est défini sur Supprimer ou Sélectionner, d’autres événements (tels que InkAdded, InkDeleted et Stroke) sont déclenchés. Ces événements sont utiles si vous souhaitez implémenter vos propres modes de suppression ou de sélection.
L’objet InkOverlay permet aux utilisateurs d’utiliser un outil lasso pour sélectionner des objets d’encre contenus dans une région tracée. Les utilisateurs peuvent également sélectionner l’entrée manuscrite en appuyant sur n’importe quel objet Ink.
Utilisez la propriété Selection pour renvoyer une collection Strokes que vous pouvez utiliser pour manipuler la sélection d’un utilisateur.
Lorsqu’un objet Ink ou un ensemble d’objets Ink est sélectionné, les poignées de dimensionnement apparaissent aux quatre coins du cadre englobant de l’encre et à tous les points intermédiaires entre les coins adjacents. Si l’utilisateur fait glisser n’importe où dans la région sélectionnée, l’encre devient déplacée à l’intérieur du contrôle.
L’objet InkOverlay est défini pour collecter l’encre par défaut. L’encre est large de 53 unités d’espace d’encre (où 1 unité d’espace d’entrée manuscrite = 1 HIMETRIC). L’entrée manuscrite est noire si l’utilisateur ne s’exécute pas en mode contraste élevé. Sinon, l’entrée manuscrite est définie sur la valeur COLOR_WINDOWTEXT (WindowText dans le code managé). FitToCurve a la valeur FALSE.
Un curseur correspond à la pointe du stylet utilisé sur tablet PC. Pour instance, un crayon a deux extrémités. En règle générale, une extrémité est utilisée pour l’écriture et l’autre est utilisée pour l’effacement. Ces deux extrémités correspondent à deux curseurs. La classe Cursor n’est pas confondue avec System.Windows.Forms.Cursor.
Sur tablet PC, un curseur est généralement défini pour être utilisé pour l’écriture ou l’effacement. Un curseur peut changer de rôle si l’application active cette fonctionnalité. Certains appareils Tablet PC autorisent plusieurs stylets. Chaque curseur a un ID de curseur associé qui est unique sur le système. Un curseur peut avoir zéro ou plusieurs boutons associés. Ces boutons sont fournis à l’application en tant qu’objets CursorButton. L’application peut fournir un objet DrawingAttributes spécifique pour un curseur donné.
Un objet DrawingAttributes décrit la façon dont tout jeu d’encre connu doit être dessiné. Un objet DrawingAttributes comprend des propriétés de base telles que Color, Width et PenTip. Il peut également englober des paramètres avancés, tels que la transparence variable et le lissage de Bézier, qui peuvent fournir des effets intéressants ou améliorer la lisibilité de l’encre.
Notes
La classe PenInputPanel a été dépréciée. La classe PenInputPanel a été remplacée par la classe TextInputPanel .
L’objet PenInputPanel vous permet d’ajouter facilement une entrée de stylet sur place à vos applications. Le PenInputPanel est disponible en tant qu’objet attachable qui vous permet d’ajouter la fonctionnalité Panneau d’entrée Tablet PC aux contrôles existants. L’interface utilisateur est en grande partie obligatoire par la langue d’entrée actuelle. Vous avez la possibilité de choisir la méthode d’entrée par défaut pour le PenInputPanel, soit l’écriture manuscrite ou le clavier. L’utilisateur final peut basculer entre les méthodes d’entrée à l’aide de boutons sur l’interface utilisateur.