Пример распознавания рукописного ввода
В этом приложении показано, как создать приложение для распознавания рукописного ввода. Пакет SDK для Windows Vista также предоставляет версии этого примера на C# и Visual Basic .NET. В этом разделе описывается пример Visual Basic .NET, но в разных версиях основные понятия совпадают.
Доступ к интерфейсам планшетного пк
Сначала укажите 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
Распознавание штрихов
Обработчик событий Click объекта Button проверяет наличие у пользователя по крайней мере одного распознавателя, проверяя свойство Count коллекции Распознавателей.
Свойству 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 .