我刚刚走的和你一样的路,我有一个解决方案。您所说的 MSDN Handwriting Recognition 链接根本不起作用,这是因为它依赖于 InkAnalyzer 类,该类仅在您在 XP 机器上安装 Tablet PC v1.7 SDK 时可用(它不会安装在 Windows 8)。
话虽如此,安装 Tablet PC v1.7 SDK确实安装了 Microsoft.Ink.dll,您可以使用它来执行手写识别。唯一的缺点是您必须将 WPF InkCanvas 笔画保存到 Microsoft.Ink.InkCollector 笔画中。
解决方法如下:
1) 安装Windows XP Tablet PC SDK v1.7
2) 遵循MSDN 手写识别指南中列出的所有相同源代码,但buttonClick 实现除外。
3) 通过浏览并选择此 dll 添加对 WPF 应用程序的引用:C:\Program Files (x86)\Microsoft Tablet PC Platform SDK\Include\Microsoft.Ink.dll
4) 在 MainWindow.xaml.cs 文件的顶部添加“使用 Microsoft.Ink”语句,然后将以下代码添加到 buttonClick 方法:
private void buttonClick(object sender, RoutedEventArgs e)
{
using (MemoryStream ms = new MemoryStream())
{
theInkCanvas.Strokes.Save(ms);
var myInkCollector = new InkCollector();
var ink = new Ink();
ink.Load(ms.ToArray());
using (RecognizerContext myRecoContext = new RecognizerContext())
{
RecognitionStatus status;
myRecoContext.Strokes = ink.Strokes;
var recoResult = myRecoContext.Recognize(out status);
if (status == RecognitionStatus.NoError)
{
textBox1.Text = recoResult.TopString;
theInkCanvas.Strokes.Clear();
}
else
{
MessageBox.Show("ERROR: " + status.ToString());
}
}
}
}
而已!!!我想补充一个重要的注意事项。如果您尝试在 Windows 10 或更高版本上进行手写识别,并且不必编写桌面 WPF 应用程序,我强烈建议您使用他们的 DirectInk 技术。我已经在 Windows 10 RC 上对其进行了测试,使用起来要容易得多。不幸的是,它只适用于他们的通用应用程序(Metro)而不是桌面应用程序(WPF)。