Freigeben über


Beispiel für Freihanderkennung

Diese Anwendung veranschaulicht, wie Sie eine Anwendung für die Handschrifterkennung erstellen können. Das Windows Vista SDK stellt auch Versionen dieses Beispiels in C# und Visual Basic .NET bereit. Dieses Thema bezieht sich auf das Visual Basic .NET-Beispiel, aber die Konzepte sind zwischen den Versionen identisch.

Zugreifen auf die Tablet-PC-Schnittstellen

Verweisen Sie zunächst auf die Tablet-PC-API, die mit dem SDK installiert ist.

' The Ink namespace, which contains the Tablet PC Platform API
Imports Microsoft.Ink

Initialisieren des InkCollectors

Im Beispiel wird code zum Load-Ereignishandler des Formulars hinzugefügt, der dazu dient, den InkCollector myInkCollector dem Gruppenfeldfenster zuzuordnen und den InkCollector zu aktivieren.

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

Erkennen der Striche

Der Click-Ereignishandler des Button-Objekts überprüft, ob der Benutzer mindestens eine Erkennung installiert hat, indem die Count-Eigenschaft der Recognizers-Auflistung untersucht wird.

Die SelectedText-Eigenschaft des Textfelds wird mithilfe der ToString-Methode für die Strokes-Auflistung auf die beste Übereinstimmung für die Striche festgelegt. Nachdem die Striche erkannt wurden, werden sie gelöscht. Schließlich erzwingt der Code die Neubemalung der Zeichnungsfläche und löscht sie für die weitere Freihandverwendung.

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

Schließen des Formulars

Die Dispose-Methode des Formulars verwirf das InkCollector-Objekt .