打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
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 ,以避免陈旧错误知识的误导,同时有更好的阅读体验

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
微软不再封闭,宣布开放Microsoft Edge浏览器核心组件
应用程序错误:应用程序正常初始化(0xc0000135)失败的解决方法
微软2023年1月份于周二补丁日针对98个漏洞发布安全补丁
微软最热门的10款前端开源项目!
VBA基础入门(19)禁止显示提示和警告消息
博客手册(1)
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服