图像和照片·浏览器图像和绘图编辑器
手绘图在浏览器中的工作原理:指向像素的指针事件
· 工作原理
图像编辑 画布 浏览器处理
用鼠标、手指或手写笔绘制的徒手笔画是位置样本流,浏览器将其转换为平滑的线条。这篇文章遵循从输入事件到绘制像素的一笔。
摇晃的圆圈变得平滑 - 您绘制的内容与编辑器记录的内容
手绘标记从采样位置开始,而不是连续的色带。从平滑的摆动圆圈开始:您绘制的是一个手势,而编辑器记录采样位置。对于此笔画管道,源代码确认统一的pointerdown、pointermove、pointerup 和pointercancel 处理程序捕获一个活动指针并通过缩放将CSS 坐标映射回来。画笔以基于其宽度四分之一的间距在稀疏样本之间进行插值,但它忽略压力值。
使用鼠标、手指或手写笔圈出三个答案,并观察一个手势在指针释放后成为一个历史条目。圆帽和连接产生连续的手绘笔画;水龙头仍然会画出圆形标记。即使硬件报告更丰富的输入,压力艺术和矢量手写仍然处于此路径之外。
指针事件:一个 API 中的鼠标、触摸和笔 — 浏览器如何报告位置、压力(如果可用)以及实际获得的采样率
手绘标记从采样位置开始,而不是连续的色带。指针事件将鼠标、触摸和笔输入置于一个 API 后面,以设备提供的采样率报告位置,有时还报告压力。对于此笔划管道,源代码确认画笔以基于其宽度四分之一的间距在稀疏样本之间进行插值,但它忽略压力值。圆帽和连接产生连续的手绘笔画;水龙头仍然会画出圆形标记。
用鼠标、手指或手写笔圈出三个答案,并观察一个手势在指针释放后成为一个历史条目。设备像素比(上限为 3)仅锐化屏幕上的后备存储;文档像素保持图像分辨率。即使硬件报告更丰富的输入,压力艺术和矢量手写仍然处于此路径之外。
指针事件统一了鼠标、触摸和笔的位置,但不消耗压力
手绘标记从采样位置开始,而不是连续的色带。将点变成路径意味着将样本与线段或曲线连接起来,而平滑总是会牺牲一些保真度来换取易读性。对于此笔划管道,源代码确认圆帽和连接会产生连续的徒手笔划;水龙头仍然会画出圆形标记。设备像素比(上限为 3)仅锐化屏幕上的后备存储;文档像素保持图像分辨率。
用鼠标、手指或手写笔圈出三个答案,并观察一个手势在指针释放后成为一个历史条目。统一的pointerdown、pointermove、pointerup 和pointercancel 处理程序捕获一个活动指针并通过缩放将CSS 坐标映射回来。即使硬件报告更丰富的输入,压力艺术和矢量手写仍然处于此路径之外。
在画布上描画路径 — 线宽、帽、连接和抗锯齿,以及为什么描边边缘从来都不是纯单色像素
手绘标记从采样位置开始,而不是连续的色带。抚摸路径会增加宽度、上限、连接和抗锯齿,这就是为什么边缘包含混合像素而不是一种完美的纯颜色。对于此笔划管道,源代码确认设备像素比上限为 3,仅锐化屏幕上的后备存储;文档像素保持图像分辨率。统一的pointerdown、pointermove、pointerup 和pointercancel 处理程序捕获一个活动指针并通过缩放将CSS 坐标映射回来。
用鼠标、手指或手写笔圈出三个答案,并观察一个手势在指针释放后成为一个历史条目。画笔以基于其宽度四分之一的间距在稀疏样本之间进行插值,但它忽略压力值。即使硬件报告更丰富的输入,压力艺术和矢量手写仍然处于此路径之外。
设备像素比 — 为什么绘图画布需要比高密度显示器上的屏幕点更多的背景像素,以及如果不需要的话会发生什么
手绘标记从采样位置开始,而不是连续的色带。设备像素比解释了为什么绘图画布需要比高密度显示器上的屏幕点更多的背景像素,以及为什么低分辨率的背景存储看起来很柔和。对于此笔画管道,源代码确认统一的pointerdown、pointermove、pointerup 和pointercancel 处理程序捕获一个活动指针并通过缩放将CSS 坐标映射回来。画笔以基于其宽度四分之一的间距在稀疏样本之间进行插值,但它忽略压力值。
使用鼠标、手指或手写笔圈出三个答案,并观察一个手势在指针释放后成为一个历史条目。圆帽和连接产生连续的手绘笔画;水龙头仍然会画出圆形标记。即使硬件报告更丰富的输入,压力艺术和矢量手写仍然处于此路径之外。
工作示例:在拍照的工作表上圈出三个答案 - 如何捕获、绘制和导出每个笔画
手绘标记从采样位置开始,而不是连续的色带。在拍摄的工作表上圈出三个答案,路径就变成了一系列样本、插值画笔标记和最终导出的像素。对于此笔划管道,源代码确认画笔以基于其宽度四分之一的间距在稀疏样本之间进行插值,但它忽略压力值。圆帽和连接产生连续的手绘笔触;水龙头仍然会画出圆形标记。
用鼠标、手指或手写笔圈出三个答案,并观察一个手势在指针释放后成为一个历史条目。设备像素比(上限为 3)仅锐化屏幕上的后备存储;文档像素保持图像分辨率。即使硬件报告更丰富的输入,压力艺术和矢量手写仍然处于此路径之外。
这不包括什么 - 压敏画笔、矢量导出和手写识别
手绘标记从采样位置开始,而不是连续的色带。边界包括压感画笔、矢量导出和手写识别。对于此笔划管道,源代码确认圆帽和连接会产生连续的徒手笔划;水龙头仍然会画出圆形标记。设备像素比(上限为 3)仅锐化屏幕上的后备存储;文档像素保持图像分辨率。
用鼠标、手指或手写笔圈出三个答案,并观察一个手势在指针释放后成为一个历史条目。统一的pointerdown、pointermove、pointerup 和pointercancel 处理程序捕获一个活动指针并通过缩放将CSS 坐标映射回来。即使硬件报告更丰富的输入,压力艺术和矢量手写仍然处于此路径之外。
要点:您的设备进行绘图 - 浏览器图像和绘图编辑器如何在本地捕获笔画并且从不将它们发送到任何地方
手绘标记从采样位置开始,而不是连续的色带。要点是本地且具体的:您的设备提供指针输入,而浏览器图像和绘图编辑器在浏览器中捕获并渲染笔画。对于此笔划管道,源代码确认设备像素比上限为 3,仅锐化屏幕上的后备存储;文档像素保持图像分辨率。统一的pointerdown、pointermove、pointerup 和pointercancel 处理程序捕获一个活动指针并通过缩放将CSS 坐标映射回来。
用鼠标、手指或手写笔圈出三个答案,并观察一个手势在指针释放后成为一个历史条目。画笔以基于其宽度四分之一的间距在稀疏样本之间进行插值,但它忽略压力值。即使硬件报告更丰富的输入,压力艺术和矢量手写仍然处于此路径之外。