在 UWP 的 InkCanvas 里自带了预测书写轨迹的功能,开启此功能可以进行书写预测,从而减少书写延迟。本文将告诉大家如何在 UWP 的 InkCanvas 里开启笔迹书写预测功能

在 UWP 的 InkCanvas 里开启笔迹书写预测功能只需要设置 InkModelerAttributes 的 PredictionTime 属性即可,这个属性是用来设置预测的时间量。默认值为 15 毫秒,有效范围为 0 到 20 毫秒,也就是最多能预测 20 毫秒之后的轨迹点。印象中在 10240 的文档里面,是有一个使用 Inertia 惯性预测算法的笔迹书写预测的,但是我现在还没找到文档

设置 InkModelerAttributes 的 PredictionTime 属性需要先获取到 InkDrawingAttributes 对象,因为 InkModelerAttributes 是 InkDrawingAttributes 里的一个属性

演示的项目如下,先在 MainPage.xaml 添加以下代码

    <Grid>
<InkCanvas x:Name="InkCanvas"></InkCanvas>
</Grid>

以上代码在界面里存放一个 InkCanvas 元素

接着在构造函数使用以下代码设置笔迹书写预测

            var inkPresenter = InkCanvas.InkPresenter;
inkPresenter.InputDeviceTypes =
CoreInputDeviceTypes.Touch | CoreInputDeviceTypes.Mouse | CoreInputDeviceTypes.Pen;
var defaultDrawingAttributes = inkPresenter.CopyDefaultDrawingAttributes();
defaultDrawingAttributes.Color = Colors.Red;
defaultDrawingAttributes.ModelerAttributes.PredictionTime = TimeSpan.FromMilliseconds(20);
inkPresenter.UpdateDefaultDrawingAttributes(defaultDrawingAttributes);

以上核心代码就是通过 defaultDrawingAttributes.ModelerAttributes.PredictionTime = TimeSpan.FromMilliseconds(20); 设置预测时间量。设置为最大的 20 毫秒

如此即可完成笔迹书写预测功能,运行代码,在屏幕上用触摸书写,可以看到在实际鼠标光标之前就能画出一段在不断变更的笔迹

修改 PredictionTime 属性的值,可以在性能比较差的设备上看到比较明显的效果

这个技术在许多 UWP 应用上,例如 OneNote UWP 等都是默认开启的

但是毕竟是预测的,肯定存在纠错时候,这时将会发现笔迹的笔尖抖动。也就是开启笔迹预测功能,能够降低延迟,但是可能在预测和实际触摸点不符合时笔尖会变更

详细请参阅 InkModelerAttributes.PredictionTime - Windows UWP applications Microsoft Learn

如期望更换预测算法或者做更底层控制,请参阅 DelegatedInkTrailVisual.AddTrailPointsWithPrediction Method (Windows.UI.Composition) - Windows UWP applications Microsoft Learn

本文代码放在githubgitee 欢迎访问

可以通过如下方式获取本文以上的源代码,先创建一个名为 KalljelcufedilaiCaiheebeferwhearlair 的空文件夹,接着使用命令行 cd 命令进入此空文件夹,在命令行里面输入以下代码,即可获取到本文的代码

git init
git remote add origin https://gitee.com/lindexi/lindexi_gd.git
git pull origin b8cb3470fa7831173d617aad6498b067236edad2

以上使用的是 gitee 的源,如果 gitee 不能访问,请替换为 github 的源。请在命令行继续输入以下代码

git remote remove origin
git remote add origin https://github.com/lindexi/lindexi_gd.git
git pull origin b8cb3470fa7831173d617aad6498b067236edad2

获取代码之后,进入 KalljelcufedilaiCaiheebeferwhearlair 文件夹

更多触摸和笔迹书写相关请看 WPF 触摸相关

win10 uwp 笔迹书写预测 墨迹书写加速的更多相关文章

  1. Win10/UWP开发-Ink墨迹书写

    在UWP开发中,微软提供了一个新型的InkCanvas控件用来让用户能书写墨迹,在新版的Edga浏览器中微软自己也用到了该控件使用户很方便的可以在web上做笔记. InkCanvas控件使用很简单,从 ...

  2. 2019-7-15-win10-uwp-在笔迹开始书写拿到书写移动事件

    title author date CreateTime categories win10 uwp 在笔迹开始书写拿到书写移动事件 lindexi 2019-7-15 8:58:5 +0800 201 ...

  3. win10 uwp 通过 Win2d 完全控制笔迹绘制逻辑

    本文来告诉大家如何通过 Win2d 完全控制笔迹绘制逻辑,本文适合用来实现复杂的自定义逻辑,可以完全控制笔迹的行为.包括在书写过程中切换模式,如进行手势擦除切换为橡皮擦模式 本文提供的方法适合用来做复 ...

  4. 【广告】win10 uwp 水印图床 含代码

    本文主要是广告我的软件. 图床可以加速大家写博客上传图片的时间,通过简化我们的操作来得到加速. 在写博客的时候,我们发现,我们需要上传一张图片,需要先打开图片,然后选择本地图片,然后上传. 但是我经常 ...

  5. win10 uwp 渲染原理 DirectComposition 渲染

    本文来告诉大家一个新的技术DirectComposition,在 win7 之后(实际上是 vista),微软正在考虑一个新的渲染机制 在 Windows Vista 就引入了一个服务,桌面窗口管理器 ...

  6. Win10 UWP版《芒果TV》v2.4.0直播超女,芒果台综艺一网打尽

    Win10 UWP版<芒果TV>直播超女,芒果台综艺一网打尽 Win10版UWP<芒果TV>自2015年9月登录商店以来,一直在持续更新,积极改进,拥有芒果台视频的独家点播和直 ...

  7. Win10 UWP开发系列:使用VS2015 Update2+ionic开发第一个Cordova App

    安装VS2015 Update2的过程是非常曲折的.还好经过不懈的努力,终于折腾成功了. 如果开发Cordova项目的话,推荐大家用一下ionic这个框架,效果还不错.对于Cordova.PhoneG ...

  8. Win10 UWP开发系列:实现Master/Detail布局

    在开发XX新闻的过程中,UI部分使用了Master/Detail(大纲/细节)布局样式.Win10系统中的邮件App就是这种样式,左侧一个列表,右侧是详情页面.关于这种 样式的说明可参看MSDN文档: ...

  9. Win10 UWP开发实现Bing翻译

    微软在WP上的发展从原来的Win7到Win8,Win8.1,到现在的Win10 UWP,什么是UWP,UWP即Windows 10 中的Universal Windows Platform简称.即Wi ...

  10. Win10/UWP开发—使用Cortana语音与App后台Service交互

    上篇文章中我们介绍了使用Cortana调用前台App,不熟悉的移步到:Win10/UWP开发—使用Cortana语音指令与App的前台交互,这篇我们讲讲如何使用Cortana调用App的后台任务,相比 ...

随机推荐

  1. 记录--前端使用a链接下载内容增加loading效果

    这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助 问题描述:最近工作中出现一个需求,纯前端下载 Excel 数据,并且有的下载内容很多,这时需要给下载增加一个 loading 效果. 代码 ...

  2. .NET分布式Orleans - 3 - Grain放置

    在Orleans 7中,Grain放置是指确定将Grain对象放置在Orleans集群中的哪些物理节点上的过程. Grain是Orleans中的基本单位,代表应用程序中的逻辑单元或实体.Grain放置 ...

  3. SpringBoot如何优雅的进行参数校验

    写在前面 上一篇文章中我们学会了如何优雅的接收前端参数,传送门 SpringBoot如何优雅的接收前端参数 接收到参数后,接下来要做的就是校验参数的合法性.这一步的重要性就不用多说了. 即使前端已经对 ...

  4. KingbaseES Json 系列八:Json记录操作函数三

    KingbaseES Json 系列八--Json记录操作函数三(JSON_TABLE) JSON 数据类型是用来存储 JSON(JavaScript Object Notation)数据的.King ...

  5. RSA进阶(一)

    本篇为RSA进阶篇,继RSA入门 [RSA3]P1(扩展欧几里得) 题目 from Crypto.Util.number import * flag = b'******' m1 = bytes_to ...

  6. io_utils/time_utils

    io_utils.h #pragma once #include<stdio.h> #include<stdarg.h> void PrintBinary(unsigned i ...

  7. [Android开发学iOS系列] 删除storyboard需要几步

    删除iOS项目中的storyboard 删除项目中的storyboard, (变成一个纯代码的iOS UIKit项目), 需要几步? 找到storyboard, 删掉它. 直接用ViewControl ...

  8. #线性dp#CF1110D Jongmah

    题目 分析 考虑三个 \((i,i+1,i+2)\) 可以用 \((i,i,i)\) 和 \((i+1,i+1,i+1)\) 和 \((i+2,i+2,i+2)\) 代替, 所以这样的三元组本质上最多 ...

  9. jcmd:JDK14中的调试神器

    目录 简介 jcmd的语法 列出运行的JVM 打印stack信息 打印heap info 打印heap dump 统计heap使用情况 JFR功能 总结 简介 jcmd是JDK自带的调试工具,具有非常 ...

  10. OpenHarmony:4.0 Release版本的开发数据

    OpenAtom OpenHarmony 4.0 Release版本于 10 月 27 日发布,经过了32周的开发周期.在此期间,有 65499 个 Committs 进入了 版本.在这个周期内完成了 ...