Condividi tramite


Esempio di riconoscimento penna

Questa applicazione illustra come creare un'applicazione di riconoscimento della grafia. Windows Vista SDK offre anche versioni di questo esempio in C# e Visual Basic .NET. Questo argomento fa riferimento all'esempio .NET di Visual Basic, ma i concetti sono uguali tra le versioni.

Accedere alle interfacce tablet PC

Prima di tutto, fare riferimento all'API Tablet PC, installata con l'SDK.

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

Inizializzare InkCollector

L'esempio aggiunge codice al gestore eventi Load del modulo che serve per associare InkCollector, myInkCollector, alla finestra della casella di gruppo e abilitare 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

Riconoscere i tratti

Il gestore eventi Click dell'oggetto Button controlla che l'utente abbia almeno un riconoscimento installato esaminando la proprietà Count dell'insieme Recognizers.

La proprietà SelectedText della casella di testo è impostata sulla corrispondenza migliore per i tratti usando il metodo ToString nell'insieme Strokes . Dopo aver riconosciuto i tratti, vengono eliminati. Infine, il codice forza il repaint dell'area di disegno, cancellandolo per un ulteriore uso dell'input penna.

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

Chiusura del modulo

Il metodo Dispose del modulo elimina l'oggetto InkCollector .