Schrifterkennung

Aktualisiert: November 2007

In diesem Abschnitt werden die Grundlagen der Erkennung von Freihandeingaben auf der WPF-Plattform erläutert.

Lösungsmöglichkeiten für die Schrifterkennung

Im folgenden Beispiel wird die Erkennung von Freihandeingaben mithilfe von InkAnalyzer veranschaulicht.

Tipp

Dieses Beispiel erfordert die Installation von Handschrifterkennungen auf dem System.

Erstellen Sie in Visual Studio 2005 ein neues WPF-Anwendungsprojekt mit dem Namen InkRecognition. Ersetzen Sie den Inhalt der Datei Window1.xaml durch den folgenden XAML-Code: In diesem Code wird die Benutzeroberfläche der Anwendung gerendert.

<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>

Fügen Sie einen Verweis auf folgende WPF-Assemblys zur Freihandeingabenanalyse hinzu: IAWinFX.dll, IACore.dll und IALoader.dll. Diese Assemblys sind gespeichert unter: \Program Files\Reference Assemblies\Microsoft\Tablet PC\v1.7. Ersetzen Sie den Inhalt der CodeBehind-Datei durch folgenden Code:

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");
            }
        }

    }
}

Siehe auch

Referenz

InkAnalyzer

AnalysisStatus

InkCanvas