WPF4.0用tablet实现手写输入(更新XP SP3下也能手写输入方法)
2024-10-02 04:08:34
原文: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
最新文章
- 七天学会ASP.NET MVC (一)——深入理解ASP.NET MVC
- .Net程序员之Python基础教程学习----字符串的使用 [Second Day]
- Spring实战2:装配bean—依赖注入的本质
- Jquery 1.8.2 click function - 动态
- linux 条件变量
- 网易云课堂_C语言程序设计进阶_第七周:文件:文件访问、格式化输入输出、二进制输入输出
- (Problem 46)Goldbach&#39;s other conjecture
- Hadoop: the definitive guide 第三版 拾遗 第十章 之Pig
- Navicat连接报错:cannot load OCI DLL,126
- java_25 FileReader类和FileWriter类
- jQuery获取URL中的参数
- 行为模式--代理Proxy模式(Java)
- Windows Phone本地数据库(SQLCE):2、LINQ to SQL(翻译)(转)
- 如何在Windows版的ScaleIO的节点中添加磁盘
- 《linux 内核全然剖析》 sys.c 代码分析
- iOS UIKit Dynamics入门 UIKit动力学,实现重力、连接、碰撞、悬挂等动画效果
- /proc/meminfo分析(一)
- acm专题---最短路
- js异步处理工作机制(setTimeout, setInterval)
- spring+springmvc+maven+mongodb
热门文章
- MySQL数据库定时自动备份脚本
- [Ramda] Curry, Compose and Pipe examples
- 基于 Android NDK 的学习之旅-----环境搭建
- 阿里云centos 6.5 32位安装可视化界面的方法
- 【SSH2(理论+实践)】--图说Struts2的执行
- Java 中StringBuffer与StringBuilder区别(转)及String类的一些基本操作代码
- 左右Cwnd::Create()功能出现afxwin1.inl line:21错误的解决方案
- docker-windows随笔资料整理
- Maven打包不打test,Maven中-DskipTests和-Dmaven.test.skip=true的区别
- No_Sql总结