From 63d61712defcf8c5176126245376eff30450f1fd Mon Sep 17 00:00:00 2001 From: linghuam <1551827898@qq.com> Date: Wed, 25 Dec 2019 21:15:18 +0800 Subject: [PATCH] canvas line style --- .../w3c-canvas翻译/assets/lineCap.jpg | Bin 0 -> 16924 bytes .../w3c-canvas翻译/assets/lineJoin.jpg | Bin 0 -> 19628 bytes b00-阅读笔记/w3c-canvas翻译/w3c-canvas.md | 78 ++++++++++++++++++ 3 files changed, 78 insertions(+) create mode 100644 b00-阅读笔记/w3c-canvas翻译/assets/lineCap.jpg create mode 100644 b00-阅读笔记/w3c-canvas翻译/assets/lineJoin.jpg diff --git a/b00-阅读笔记/w3c-canvas翻译/assets/lineCap.jpg b/b00-阅读笔记/w3c-canvas翻译/assets/lineCap.jpg new file mode 100644 index 0000000000000000000000000000000000000000..ebbd5c90bc357090ad293dcf286f1d5da755745b GIT binary patch literal 16924 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 LKiL&iQHK5x_Ys{g literal 0 HcmV?d00001 diff --git a/b00-阅读笔记/w3c-canvas翻译/assets/lineJoin.jpg b/b00-阅读笔记/w3c-canvas翻译/assets/lineJoin.jpg new file mode 100644 index 0000000000000000000000000000000000000000..0aa1d534abd41d0b263510561197292de7605335 GIT binary patch literal 19628 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 NOTE + +> context.[lineWith](#lineWith)[ = value ] +返回当前线宽。 +lineWidth 属性以坐标空间单位给出线的宽度。获取时,它必须返回当前值。零,负,无限和NaN值将被忽略。 +默认值是`1.0`。 + +> context.[lineCap](#lineCap)[ = value ] +返回当前的线帽样式。 +可能的值为 “butt”,“round” 和 “square”。其他值将被忽略。 +默认值是`butt`。 + +> context.[lineJoin](#lineJoin)[ = value ] +返回当前的线连接样式。 +可能的线连接样式为 “bevel”,“round” 和 “miter”。其他值将被忽略。 +默认值是`miter`。 + +> context.[miterLimit](#miterLimit)[ = value ] +返回当前的斜接极限比率。 +可以设置,以更改斜接极限比。零,负,无限和NaN值必须忽略。 +当`lineJoin`属性的值为 “miter” 时,描边将使用斜接限制比率来决定如何渲染连接。可以使用`miterLimit`属性显式设置斜接极限比率。 +默认值是`10.0`。 + +> context.[setLineDash](#setLineDash)(segments) +设置当前线的虚线图案(在描边时使用)。 +该参数是距离的数组,距离要交替显示。 + +> segments = context.[getLineDash](#getLineDash)() +返回当前线交替类型的副本。 +返回的数组将始终具有偶数个条目(即模式已规范化)。 + +> context.[lineDashOffset](#lineDashOffset)[ = value ] +返回相位偏移(以与 line dash pattern 相同的单位)。 +可以设置,以更改相位偏移。不是有限值的值将被忽略。 +默认值是`0.0`。 + +实现 [CanvasDrawingStyles](https://www.w3.org/TR/2dcontext/#canvasdrawingstyles) 接口的对象具有控制对象如何处理线的属性和方法。 + +**lineCap:** +![](./assets/lineCap.jpg) + +**lineJoin:** +![](./assets/lineJoin.jpg) + +每个 CanvasDrawingStyles 对象都有一个 **dash list** 列表,该 **dash list** 可以为空或由偶数个非负数组成。**dash list** 初始值为空数组。 + +调用`setLineDash()`方法时,它必须运行以下步骤: +1. 令`a`为作为提供的参数数组的副本。 +2. 如果数组中包含 Infinity、NaN、负数,则终止此步骤(不会抛出异常;用户代理可能会在开发人员控制台上显示一条消息,因为这将有助于调试)。 +3. 如果`a`中元素的数量为奇数,则令`a`为`a`的两个副本的串联。 +4. 设置 **dash list** 为`a`。 + +代码描述: +```js +var dataList; +function setLineDash(a) { + var isErrorValue = a.some(value => value === Infinity || value !== value || value < 0); + if (isErrorValue) { + console.warn('数据不合法!'); + return; + } + if (a.length % 2 !== 0) { + a = a.concat(a); + } + dataList = a; +} +``` + +当调用`getLineDash()`方法时,它必须以相同的顺序返回一个新创建的 **dash list** 数组。 + +有时更改虚线图案的“phase(相位)”很有用。例如实现“行军蚁”的效果。可以使用`lineDashOffset`属性设置相位。 + +当用户代理要跟踪实现`CanvasDrawingStyles`接口的路径时,它必须运行以下算法。该算法返回新路径。 +1. 令`path`为要跟踪的路径的副本。 +2. 干掉路径中所有`长度为零`的线段。 +3. 从路径中删除任何不包含线的子路径(即只有一个点的子路径)。 +4. + ## 文本样式 ## 建立路径