Поделиться через


Пример распознавания рукописного ввода

В этом приложении показано, как создать приложение распознавания рукописного ввода. Пакет SDK для Windows Vista предоставляет версии этого примера в C# и Visual Basic .NET, а также. Этот раздел относится к примеру .NET Visual Basic, но основные понятия совпадают между версиями.

Доступ к интерфейсам планшетного компьютера

Во-первых, обратитесь к API планшетного ПК, которые устанавливаются вместе с SDK.

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

Инициализируйте InkCollector

В этом примере добавляется код в обработчик событий load формы, который служит для связывания InkCollector, myInkCollector с окном поля группы и включением 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

Распознавание инсультов

Обработчик событий Button объекта Click проверяет, чтобы у пользователя был установлен по крайней мере один распознаватель, проверяя свойство Count коллекции Recognizers.

Свойство SelectedText текстового поля устанавливается на лучшее соответствие штрихам, используя метод ToString на коллекции Strokes. После того как штрихи распознаны, они удаляются. Наконец, код принудительно вызывает перерисовку области, очищая её для дальнейшего использования чернил.

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

Закрытие формы

Метод Dispose формы удаляет объект InkCollector.