原文:WPF4.0用tablet实现手写输入(更新XP SP3下也能手写输入方法)

  由于项目需求一个手写输入的控件,纠结了2天,终于搞定了。

  主要是由于本人的英语不过关,一直和ocr混淆在一起,研究了Tesseract-OCR,我说奇怪了号称老牌OCR新版本还支持中文,怎么效果这么差,必须写个标准楷体才能够识别...||-_-.。还以为不行,必须得花钱买汉王的东西了.....一不小心让我知道了有tablet这种东西,大家可以体验一下,通过右键任务栏--工具栏--Tablet PC 输入面板。识别率相当高啊,于是谷歌了一下table SDK(google更懂E文)

  05年的资源,各种下啊,迅雷、旋风、IE都没下下来。后来用谷歌阅览器自带的下载搞定....(果然很懂),满怀欣喜地打开看demo,效果不错啊,一看源码...我勒个去,全是C++的,不愧是6年前的资源。

  废话不说了进入正题,微软手写识别无非是用InkAnalyzer这个类,具体用法,msdn....但是.net4.0 System.Windows.Ink;中这个类已经不存在了,只有3.5的有。我msdn了下,手写识别无非用到IACore.dll IALoader.dll IAWinFX.dll这3个动态库,于是上 zhaodll.com下了。引用后果然可以用,可是运行时报错,a百度了下,原来在4.0里用3.5的库要在app.config里加入下面这句配置

<startup useLegacyV2RuntimeActivationPolicy="true">

    <supportedRuntime version="v4.0"/>

  </startup>

  

  OK,完美运行了。效果如图:

对我的草书的识别率相当不错啊,但是,默认会识别多个字符,导致“识”被拆分成两个字,跪求高手赐教,要怎么设置可以让它只识别一个字呢???

theInkAnalyer = new InkAnalyzer();            
theInkAnalyer.AddStrokes(inkCanvs.Strokes);

theInkAnalyer.SetStrokesLanguageId(inkCanvs.Strokes,0x0804);
theInkAnalyer.SetStrokesType(inkCanvs.Strokes, StrokeType.Writing);
AnalysisStatus status = theInkAnalyer.Analyze();
if (status.Successful)
{
textBox1.Text = theInkAnalyer.GetRecognizedString();
for (int i = ; i < theInkAnalyer.GetAlternates().Count; i++)
{
textBox2.Text += theInkAnalyer.GetAlternates()[i].RecognizedString;
}

}
else
{
MessageBox.Show("识别失败");
}
3个识别动态库下载
引用后就可以直接调用 InkAnalyzer 这个类了,具体用法自己msdn


更新

由于项目需求必须在XP SP3的操作系统上使用,会出现无法识别,上网找了点教程,貌似实现都很复杂,有的说重装了20次系统才搞定.....有点夸大其词了。
我找了某个比较新的教程,前后在虚拟机上尝试了4遍,总结了最简洁的方法:
inf里面的几个文件全部拷贝到windows的inf目录,tabletpc.rar里面的文件建议放到C:\i386,等下方便找。
.运行1.reg,导入注册表后重启
.运行3.cmd,弹出需要文件的窗口时,单击“浏览”,定位到tabletpc.rar的解压目录。安装过程中会出现无法识别XP版本问题,点“取消”,再点“是”。忽略掉。
.完成后重启搞定,可以用官方测试软件试下看看搞定否。
我前后试了4次,尽管方法不同但是,没有一次是会导致系统蹦掉的。
用到的文件打包下载:http://dl.dbank.com/c0cwngvxui





最新文章

  1. 七天学会ASP.NET MVC (一)——深入理解ASP.NET MVC
  2. .Net程序员之Python基础教程学习----字符串的使用 [Second Day]
  3. Spring实战2:装配bean—依赖注入的本质
  4. Jquery 1.8.2 click function - 动态
  5. linux 条件变量
  6. 网易云课堂_C语言程序设计进阶_第七周:文件:文件访问、格式化输入输出、二进制输入输出
  7. (Problem 46)Goldbach&#39;s other conjecture
  8. Hadoop: the definitive guide 第三版 拾遗 第十章 之Pig
  9. Navicat连接报错:cannot load OCI DLL,126
  10. java_25 FileReader类和FileWriter类
  11. jQuery获取URL中的参数
  12. 行为模式--代理Proxy模式(Java)
  13. Windows Phone本地数据库(SQLCE):2、LINQ to SQL(翻译)(转)
  14. 如何在Windows版的ScaleIO的节点中添加磁盘
  15. 《linux 内核全然剖析》 sys.c 代码分析
  16. iOS UIKit Dynamics入门 UIKit动力学,实现重力、连接、碰撞、悬挂等动画效果
  17. /proc/meminfo分析(一)
  18. acm专题---最短路
  19. js异步处理工作机制(setTimeout, setInterval)
  20. spring+springmvc+maven+mongodb

热门文章

  1. MySQL数据库定时自动备份脚本
  2. [Ramda] Curry, Compose and Pipe examples
  3. 基于 Android NDK 的学习之旅-----环境搭建
  4. 阿里云centos 6.5 32位安装可视化界面的方法
  5. 【SSH2(理论+实践)】--图说Struts2的执行
  6. Java 中StringBuffer与StringBuilder区别(转)及String类的一些基本操作代码
  7. 左右Cwnd::Create()功能出现afxwin1.inl line:21错误的解决方案
  8. docker-windows随笔资料整理
  9. Maven打包不打test,Maven中-DskipTests和-Dmaven.test.skip=true的区别
  10. No_Sql总结