WinForm 下的高性能笔迹方法
在 wpf 中可以通过 stylusplugin 的方式快速从触摸线程拿到触摸数据,而 winforms 没有这个机制,但是可以通过 microsoft.ink 组件和 wpf 相同在 realtimestylus 服务拿到触摸点
本文的例子放在微软的官方例子里面,请看 github 代码
本文不会告诉大家代码如何写,因为看微软的代码就知道了,本文主要告诉大家为什么这样做的触摸收集足够快
在 windows 里面,会通过 wm_touch
的消息发送触摸的信息,但是通过消息的方式不够快。当然这句话不是说消息不快,而是和 wisptis 服务对比还是不够快
从微软的笔和触摸服务里面获取的方法是需要使用复杂的方法才能获取到内容,大概的获取方法就是从共享内存里面读取值,此时的读取速度将比消息快
在 csproj 里面引用 microsoft.ink 组件,将可以获取 realtimestylus 的封装方法,不需要写一个 penimc 的组件。但是通过这个方法将拿到十分底层的内容,需要小伙伴自己处理
<reference include="microsoft.ink, version=6.1.0.0, culture=neutral, publickeytoken=31bf3856ad364e35"> <specificversion>true</specificversion> </reference>
我推荐下载微软的代码,然后构建,尝试运行,然后对比一下性能。这个方法能拿到最快的触摸信息,但是这个方法优化的仅是触摸收集,而对渲染没有做多少优化
更多请看微软文档 windows touch scratchpad using the real-time stylus sample (c#) - win32 apps
在 wpf 中默认的 stylusplugin 就使用了这部分优化,不需要额外的引用组件,如何在 wpf 中做高性能笔请看 wpf 高性能笔
本文会经常更新,请阅读原文: https://blog.lindexi.com/post/winforms-%e4%b8%8b%e7%9a%84%e9%ab%98%e6%80%a7%e8%83%bd%e7%ac%94%e8%bf%b9%e6%96%b9%e6%b3%95.html ,以避免陈旧错误知识的误导,同时有更好的阅读体验
上一篇: Go语言net/http包的简单使用
推荐阅读
-
C#设置WinForm中DataGrid列的方法(列宽/列标题等)
-
WinForm下 TextBox只允许输入数字的小例子
-
win2003服务器下配置 MySQL 群集(Cluster)的方法
-
win10系统下Myeclipse10创建servlet总是报错的解决方法
-
windows7系统下给WORD2010设置打开密码的方法
-
c# winform窗口一直置顶显示在桌面最上方或最底层的方法
-
没网没登QQ不能使用Ctrl + Alt + A的情况下的截图方法汇总
-
Pyqt清空某一个QTreeewidgetItem下的所有分支方法
-
WinForm程序启动时不显示主窗体的5种方法
-
.Net下执行sqlcmd的方法