Partilhar via


Handwriting Recognition

This section discusses the fundamentals of recognition as it pertains to digital ink in the WPF platform.

Recognition Solutions

The following example shows how to recognize ink using the InkAnalyzer.

Observação

This sample requires that handwriting recognizers be installed on the system.

Criar uma nova WPF no Visual Studio 2005 de projeto de aplicativo chamado InkRecognition. Replace the contents of the Window1.xaml file with the following XAML code. This code renders the application's user interface.

<Window x:Class="InkRecognition.Window1"
    xmlns="https://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="https://schemas.microsoft.com/winfx/2006/xaml"
    Title="InkRecognition" 
    >
  <Canvas Name="theRootCanvas">
    <Border
      Background="White"
      BorderBrush="Black"
      BorderThickness="2"
      Height="300"
      Width="300"
      Canvas.Top="10"
      Canvas.Left="10">
      <InkCanvas Name="theInkCanvas"></InkCanvas>
    </Border>
    <TextBox Name="textBox1"
      Height="25"
      Width="225"
      Canvas.Top="325"
      Canvas.Left="10"></TextBox>
    <Button
      Height="25"
      Width="75"
      Canvas.Top="325"
      Canvas.Left="235"
      Click="buttonClick">Recognize</Button>
  </Canvas>
</Window>

Adicione uma referência para a análise de tinta do WPF assemblies, IAWinFX.dll, IACore.dll e IALoader.dll, que pode ser encontrado em \Program Files\Reference Assemblies\Microsoft\Tablet PC\v1.7. Substitua o conteúdo do arquivo code-behind com o código a seguir.

Imports System.Windows
Imports System.Windows.Ink

'/ <summary>
'/ Interaction logic for Window1.xaml
'/ </summary>

Namespace InkRecognition

    Class Window1
        Inherits Window


        Public Sub New()
            InitializeComponent()

        End Sub 'New


        ' Recognizes handwriting by using RecognizerContext
        Private Sub buttonClick(ByVal sender As Object, ByVal e As RoutedEventArgs)
            Dim theInkAnalyzer As New InkAnalyzer()

            theInkAnalyzer.AddStrokes(theInkCanvas.Strokes)

            Dim status As AnalysisStatus = theInkAnalyzer.Analyze()

            If status.Successful Then
                textBox1.Text = theInkAnalyzer.GetRecognizedString()
            Else
                MessageBox.Show("Recognition Failed")
            End If

        End Sub 'buttonClick
    End Class 'Window1 
End Namespace

using System.Windows;
using System.Windows.Ink;

namespace InkRecognition
{
    /// <summary>
    /// Interaction logic for Window1.xaml
    /// </summary>

    public partial class Window1 : Window
    {

        public Window1()
        {
            InitializeComponent();
        }

        // Recognizes handwriting by using RecognizerContext
        private void buttonClick(object sender, RoutedEventArgs e)
        {
            InkAnalyzer theInkAnalyzer = new InkAnalyzer();

            theInkAnalyzer.AddStrokes(theInkCanvas.Strokes);

            AnalysisStatus status = theInkAnalyzer.Analyze();

            if (status.Successful)
            {
                textBox1.Text = theInkAnalyzer.GetRecognizedString();
            }
            else
            {
                MessageBox.Show("Recognition Failed");
            }
        }

    }
}

Consulte também

Referência

InkAnalyzer

AnalysisStatus

InkCanvas