Exemple de reconnaissance manuscrite
Cette application montre comment créer une application de reconnaissance de l’écriture manuscrite. Le Kit de développement logiciel (SDK) Windows Vista fournit également des versions de cet exemple en C# et Visual Basic .NET. Cette rubrique fait référence à l’exemple Visual Basic .NET, mais les concepts sont les mêmes entre les versions.
Accéder aux interfaces Tablet PC
Tout d’abord, référencez l’API Tablet PC, qui est installée avec le Kit de développement logiciel (SDK).
' The Ink namespace, which contains the Tablet PC Platform API
Imports Microsoft.Ink
Initialiser l’élément InkCollector
L’exemple ajoute du code au gestionnaire d’événements Load du formulaire qui sert à associer inkCollector, myInkCollector, à la fenêtre de zone de groupe et à activer inkCollector.
Private Sub InkRecognition_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
' Create the recognizers collection
myRecognizers = New Recognizers()
' Create an ink collector that uses the group box handle
myInkCollector = New InkCollector(gbInkArea.Handle)
' Turn the ink collector on
myInkCollector.Enabled = True
End Sub
Reconnaître les traits
Le gestionnaire d’événements Click de l’objet Button vérifie qu’au moins un module de reconnaissance est installé par l’utilisateur en examinant la propriété Count de la collection Recognizers.
La propriété SelectedText de la zone de texte est définie sur la meilleure correspondance pour les traits à l’aide de la méthode ToString de la collection Strokes . Une fois les traits reconnus, ils sont supprimés. Enfin, le code force le repeint de la zone de dessin, en la désactivant pour une utilisation plus poussée de l’entrée manuscrite.
Private Sub btnRecognize_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnRecognize.Click
' Check to ensure that the user has at least one recognizer installed
' Note that this is a preventive check - otherwise, an exception
' occurs during recognition
If 0 = myRecognizers.Count Then
MessageBox.Show("There are no handwriting recognizers installed. You need to have at least one in order to run this sample.")
Else
' ...
txtResults.SelectedText = myInkCollector.Ink.Strokes.ToString
' If the mouse is pressed, do not perform the recognition -
' this prevents deleting a stroke that is still being drawn
If Not myInkCollector.CollectingInk Then
' Delete the ink from the ink collector
myInkCollector.Ink.DeleteStrokes(myInkCollector.Ink.Strokes)
' Force the Frame to redraw (so the deleted ink goes away)
gbInkArea.Refresh()
End If
End If
End Sub
Fermeture du formulaire
La méthode Dispose du formulaire supprime l’objet InkCollector .