Dela via


Exempel på pennanteckningsigenkänning

Det här programmet visar hur du kan skapa ett program för handskriftsigenkänning. Windows Vista SDK innehåller även versioner av det här exemplet i C# och Visual Basic .NET. Det här avsnittet refererar till Visual Basic .NET-exemplet, men begreppen är desamma mellan olika versioner.

Få åtkomst till Tablet PC-gränssnitt

Börja med att referera till Tablet PC-API:et, som installeras med SDK:n.

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

Initiera InkCollector

Exemplet lägger till kod i formulärets Load händelsehanterare som används för att associera InkCollector, myInkCollector, med grupprutans fönster och aktivera 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

Identifiera slagen

Button objektets Klick händelsehanterare kontrollerar att användaren har minst en igenkännare installerad genom att undersöka egenskapen Count för samlingen Recognizers.

Egenskapen SelectedText i textrutan är inställd på den bästa matchningen för linjerna med hjälp av metoden ToString i Strokes-samlingen. När markeringarna har identifierats tas de bort. Slutligen tvingar koden området att ritas om och rensar det för fortsatt bläckanvändning.

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

Stänga formuläret

Formulärets metod Dispose tar bort objektet InkCollector.