キャンバスに描いた手書き文字を認識する
2014/10/18
文書番号:20387
WPF で InkCanvas に描いた手書き文字を認識する方法。
動作確認環境:Visua Studio 2010(vb) .NET Framework 4.0
【参照設定】
- C:\Program Files\Reference Assemblies\Microsoft\Tablet PC\v1.7\IACore.dll と
C:\Program Files\Reference Assemblies\Microsoft\Tablet PC\v1.7\IAWinFX.dll を参照設定に追加します。
クリックで拡大 - C:\Program Files\Microsoft SDKs\Windows\v6.0A\Bin\IALoader.dll を参照設定に追加します。
クリックで拡大
【XAML】
クリックで拡大
<Window x:Class="MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="500" Width="550">
<Grid>
<StackPanel>
<InkCanvas Name="InkCanvas1" Background="LightGray" />
<Button Content="Button" Name="Button1" Width="100"/>
<TextBlock Name="TextBlock1" Text="TextBlock" />
<Label Content="第1候補" Name="Label1" />
<Label Content="他の候補" Name="Label2" />
<ListBox Height="100" Name="ListBox1" />
</StackPanel>
</Grid>
</Window>
【VB.NET】
Imports System.Windows.Ink
Class MainWindow
Private Sub Button1_Click(sender As System.Object, e As System.Windows.RoutedEventArgs) Handles Button1.Click
Dim ia As New InkAnalyzer()
'InkCanvasの文字を認識するためアナライザにストロークをセット
ia.AddStrokes(InkCanvas1.Strokes)
ia.SetStrokesType(InkCanvas1.Strokes, StrokeType.Writing)
'文字列を解析
ia.Analyze()
'文字列の解析結果の第1候補を表示する
TextBlock1.Text = ia.GetRecognizedString()
'その他の候補を取得する
Dim alternates As AnalysisAlternateCollection = ia.GetAlternates()
'その他の候補をリストボックスに表示する
ListBox1.Items.Clear()
For Each alternate In alternates
ListBox1.Items.Add(alternate.RecognizedString)
Next
End Sub
End Class
-
キャンバスに文字を描いてボタンをクリックすると認識した文字が表示されます。
クリックで拡大
実行時に以下のエラーが出る場合は 手書き文字を認識する際に「FileLoadException」が発生するを参照してください。
================================================================
混合モード アセンブリはバージョン 'v1.0.3705' のランタイムに対して作成されており、追加の構成情報がないと 4.0 ランタイムでは読み込めません。
================================================================