Partager via


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 .