WPF 手写 .NET 4.5 Windows 8:缺少 IAWinFX.dll 等



我正在尝试在装有.Net 4.5的Windows 8.1计算机上使用WPF InkCanvas控件的文本识别。

注意:**WPF InkCanvas 控制 Windows 8.1,而不是 Windows 窗体,也不是 Windows Apps!

根据帮助,它应该很容易:

MSDN:手写识别

但是,当我到达这一段时,我卡住了。

添加对 WPF 墨迹分析程序集、IAWinFX.dll、IACore.dll 和 IALoader.dll的引用,这些程序集可在 \Program Files\Reference Assemblies\Microsoft\Tablet PC\v1.7 中找到。将代码隐藏文件的内容替换为以下代码。

我的计算机上没有这些文件。我在Windows 7 Pro PC上尝试过,但仍然找不到它们。

从搜索堆栈溢出和其他地方来看,其他人似乎也有类似的问题,并且似乎还有几种不同版本的墨迹书写/手写识别可用。例如,将其放入Windows 8商店应用程序中似乎应该很容易。但我的问题专门针对 MSDN 文档的 .NET 4.5 WPF 程序!

我只是走上了和你完全相同的道路,我有一个解决方案。 您所说的 MSDN 手写识别链接根本不起作用,这是因为它依赖于 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 手写识别指南中概述的所有相同源代码,但按钮单击实现除外

3( 通过浏览并选择此 dll,添加对 WPF 应用程序的引用:C:\Program Files (x86(\Microsoft Tablet PC Platform SDK\Include\Microsoft.Ink.dll

4( 将"using Microsoft.Ink"语句添加到 MainWindow.xaml.cs 文件的顶部,然后将以下代码添加到 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(。

请尝试以下适用于 Windows 8 的示例。https://code.msdn.microsoft.com/windowsapps/InkPen-sample-in-CSharp-189ce853/sourcecode?fileId=60841&pathId=233613099

相关内容

  • 没有找到相关文章

最新更新