From 92e518d0b23a80ae6a6d3d5f3201f8ceacdc37a6 Mon Sep 17 00:00:00 2001 From: linghuam <1551827898@qq.com> Date: Wed, 15 Jan 2020 20:19:34 +0800 Subject: [PATCH] w3c-canvas --- b00-阅读笔记/w3c-canvas翻译/assets/arc1.png | Bin 0 -> 31225 bytes .../w3c-canvas翻译/assets/transform.png | Bin 0 -> 9124 bytes b00-阅读笔记/w3c-canvas翻译/w3c-canvas.md | 118 +++++++++++++++++- 3 files changed, 116 insertions(+), 2 deletions(-) create mode 100644 b00-阅读笔记/w3c-canvas翻译/assets/arc1.png create mode 100644 b00-阅读笔记/w3c-canvas翻译/assets/transform.png diff --git a/b00-阅读笔记/w3c-canvas翻译/assets/arc1.png b/b00-阅读笔记/w3c-canvas翻译/assets/arc1.png new file mode 100644 index 0000000000000000000000000000000000000000..1930b4d44e29cfee4e13c11b0f059df4ec56d476 GIT binary patch literal 31225 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%0Dazz##1G z#obM&bIBx2khQ%Exk9dtH8h(u%Q}z8Cp?RYk7IhD0D9M`_XTvq7wN;M`c3Ea=WM%$ zMd-uI7$l?XouM;u7#Xf7+jKV6*C+vz@Ns` zc=M%4ml5^-^tGOMR`HW|M&KCXI)$`DO{~qb9z0y!`nT8TlEFnea^@L{jlVc~jG|Qu zU_jJZmNg?9c?I9@voSt(BpH&{S;FITz?SN%u*1u)*f)k={n;vdB_RpA(60V=a&bLE z6B+5BEOOYUfN|0a=oKl{^(+?MM%k5*w$he<1y+7r_2$1$WNHk$8kH!^!5`!2qhuY7 z=j*fXABq(->ldr^EU76g`SvGLXO1$gQFe#>4?YvXV~`TdSfuB;ciMvkW&7U<4(Ax^ zzG)xE&HV5i5iTx;`-yltzhya9uzOW#GK-S)>!OXz>ys)sxamv)`Ps$U*?td12! zDm328E!~LLKs@Pj9OxtK%{B}wUrD3x3cW%yo$o&F$ZjD?mH@VNGIDwT`(Blq zIh`X^u{vBy@8Xo4hS_(<`hXDsmIG1>Ez!gTHmUHv6-pKEY(K8!@hb3Fa!+l4Je7>< z2h#TE!dT(*L8@1Mv3QNa|Cu0<-5X*biZ?LWtMxQ!G6%Wd)mTiRk#C&7_>SMuh^n37 zrfY4+ALE^@YW<%4Bs?qYhk(3-u*(xG_e#Q6p0GzQ3t-|hAZH1Lse+JUl0hg!N;j3? z+BiSnk}`{HOC|ss%oH2tGYkUyM?*Gn5iU>PzvH=yDCXl!bMi6zKFHMnv~^40oT86D zxnfgppJu2-aWS6_xf?s9tk@3U)UP1hTx|7h&5ba)>w;0}N{!;4D{8t;#$1Ukm}>Oi z&D&Gown=^ig6IT3bc}n0UrhPtOWQ`waK$G&r7UHi)47t^-*=M2>>Q|jjwv12@ha!)?VfMY#?w>taXx%0yt|tBl;C3AmAFqbT2Q(_TTZv!T21D zV(g>cVyhojn0CYCbTEnUw($XpSs{@J=lgoTc%?)bI)~{^={nAD=;UXo zXvHjE4qH*czvtb!$S5Q(q2&&QVT|Os?;wR#IH87L*_J-W347d_!SRn8=;~%PE&>+0 z+;N@CDC$}Fi!SStB%rVcgE}yy9Y!3Hp*-9dy;HRrv@11`l^#Gs?XR+1oqw{#P zzu-|X3t*haO@9aqL2lK2TTJ+m8`^>2szqO{-(DX3El&aOs}0!R1RNCZsW1JvBP_dY zCCJMF3|F-3!G89rUJSR6(?6^<%jmSl??gDUy59mNc0$pJ zis9M;<6Q|5X#sJk*MLrKwNXZAyFF3?2@?{=-B87d4U(0Zm{`^-%!d=?;;{;pRPxoj zgex(Sl*=k`;kFs$@Y}#0=-EpwdPWNbXh1E#Jl>iFGip|TACyg}t-;Ep#hTUapGej0 zR_skw%)U%A^Tr7GM@-3vMG5N{e05K))6CZ%lG9g0eS8bN|oX;b_JS+?5WunpVEJtui$_Kqzvz6a@SR z8j_s+d+EGx|LsORa<|9r0f)CsBBPN&0BT4`2*KL*e$xu6Vj|C)Z>UdpQ?T9aZ=}R$ z)7l7YfS0SaO^L)E9O_0#CRw$<>9Zk{4}9`~@fZD?Jl5>7n$YaH|D}l~xsX8q-eCj) z@ttP)SYkfT#;>nH-!XlajwS^DjypT=)AYLzwo?bJSaC1>vDlGf=I5bin>E}4w@TSW z5!>_#V?$5vzE2)qJCeXbO2XK0y`#CHGLgF&q|!1s5pcWsmp`;#4phw675xERwE*VJ zm+I{are|OLheJ~sm@I>LLuo3wP z0M?LZl_iIhiw4JzipJr40^Z@YFI_j{|MZZ6QOFOp=K+wAy&97N7UBsPS_Zf)29(?Y z4J-j?KsNg-66h`_RrP6P0PZwVsa*P*0I02zRpDd843A2tEp2gRl8)d96G49(c!sCZ zFoOod*wPVZ|ImOL?37idXn`VljFV)gw}2x4zYn<*LAF1-S1AAE30$Cq NOTE + +> context.[moveTo](#moveTo)(x, y) + 用给定的点创建一个新的子路径。 + +> context.[closePath](#closePath)() + 将当前子路径标记为已关闭,并以与新关闭的子路径的起点和终点相同的点开始一个新的子路径。 + +> context.[lineTo](#lineTo)(x, y) + 将给定点添加到当前子路径,该子路径通过一条直线连接到前一个子路径。 + +> context.[quadraticCurveTo](#quadraticCurveTo)(cpx, cpy, x, y) + 将给定点添加到当前子路径,该子路径通过具有给定控制点的二次Bézier曲线与上一个子路径连接。 + +> context.[bezierCurveTo](#bezierCurveTo)(cp1x, cp1y, cp2x, cp2y, x, y) + 将给定点添加到当前子路径,该子路径通过带有给定控制点的三次贝塞尔曲线与前一条路径连接。 + +> context.[arcTo](#arcTo)(x1, y1, x2, y2, radius) + 将具有给定控制点和半径的圆弧添加到当前子路径,并通过一条直线连接到上一个点 + 如果给定的半径为负数,则抛出`IndexSizeError`异常。 + +> context.[arc](#arc)(x, y, radius, startAngle, endAngle [, counterclockwise(逆时针) ]) + 将点添加到子路径,以便将由自变量描述的圆的圆周描述的弧从给定的起始角度开始,以给定的终止角度终止,并沿给定方向(默认为顺时针)添加到 通过一条直线连接到上一点的路径。 + 从正x轴顺时针以弧度为单位,对应此圆的圆周的`startAngle`和`endAngle`的点。 + 如果给定的半径为负数,则抛出`IndexSizeError`异常。 + +> context.[rect](#rect)(x, y, w, h) + 向该路径添加一个新的闭合子路径,代表给定的矩形。 + + ![](./assets/arc1.png) + + + +## 变换(Transformations) + +每个`CanvasRenderingContext2D`对象都有一个当前的转换矩阵,以及操作方法(在本节中介绍)。创建`CanvasRenderingContext2D`对象时,必须将其变换矩阵初始化为恒等变换。 + +当创建当前路径时,转换矩阵将应用于坐标,以及在`CanvasRenderingContext2D`对象上绘制文本,形状和路径时。 + +转换必须以相反的顺序执行。 + +> NOTE: +context.[scale](#scale)(x, y) +更改变换矩阵以应用具有给定特征的缩放变换。 +context.[rotate](#rotate)(angle) +更改变换矩阵以应用具有给定特征的旋转变换。角度以弧度为单位,顺时针方向。 +context.[translate](#translate)(x, y) +更改变换矩阵以应用具有给定特征的平移变换。 +context.[transform](#transform)(a, b, c, d, e, f) +如下所述,更改变换矩阵以应用由参数指定的矩阵。 +用将当前变换矩阵与以下描述的矩阵相乘的结果来替换当前变换矩阵: +context.[setTransform](#setTransform)(a, b, c, d, e, f) +如下所述将转换矩阵更改为参数指定的矩阵。 +将当前变换重置为单位矩阵,然后使用相同的参数调用`transform(a,b,c,d,e,f)`方法。 + +![](./assets/transform.png) + + ## 2D渲染上下文的图像源 +此联合类型允许实现以下任何接口的对象用作图像源: + +* [HTMLImageElement](https://html.spec.whatwg.org/multipage/embedded-content.html#htmlimageelement)([img](https://html.spec.whatwg.org/multipage/embedded-content.html#the-img-element) elements) + +* [HTMLVideoElement](https://html.spec.whatwg.org/multipage/embedded-content.html#htmlvideoelement)([video](https://html.spec.whatwg.org/multipage/embedded-content.html#the-video-element) elements) + +* [HTMLCanvasElement](https://html.spec.whatwg.org/multipage/embedded-content.html#htmlcanvaselement)([canvas](https://html.spec.whatwg.org/multipage/embedded-content.html#the-canvas-element) elements) + +当需要用户代理检查 image 参数的可用性时,其中 image 是 [CanvasImageSource](https://www.w3.org/TR/2dcontext/#canvasimagesource) 对象,则用户代理必须运行以下步骤,这些步骤返回好,坏或中止: + +1. 如果 _image_ 参数是处于断开 [broken](https://html.spec.whatwg.org/multipage/images.html#img-error) 状态的`HTMLImageElement`对象,则引发 [InvalidStateError](https://www.w3.org/TR/WebIDL-1/#invalidstateerror) 异常,返回 _aborted_,然后终止这些步骤。 + +2. 如果 _image_ 参数是无法完全解码 [fully decodable](https://html.spec.whatwg.org/multipage/images.html#img-good) 的`HTMLImageElement`对象,或者,如果 _image_ 参数是一个 [readyState](https://html.spec.whatwg.org/multipage/media.html#dom-media-readystate) 属性为`HAVE_NOTHING`或`HAVE_METADATA`的`HTMLVideoElement`对象,则返回 _bad_ 并中止这些步骤。 + +3. 如果 _image_ 参数是一个`HTMLImageElement`对象,其固有宽度或固有高度(或两者)等于零,然后返回 _bad_ 并中止这些步骤。 + +4. 如果 _image_ 参数是一个`HTMLCanvasElement`对象,其水平尺寸或垂直尺寸等于零,然后返回 _bad_ 并中止这些步骤。 + +5. 返回 _good_。 + +当`CanvasImageSource`对象表示`HTMLImageElement`时,必须将元素的图像用作源图像。 + +具体来说,当`CanvasImageSource`对象表示`HTMLImageElement`中的动画图像时,用户代理必须使用动画的默认图像(当不支持或禁用动画时,将使用格式定义的图像),如果没有此类图像,则为`CanvasRenderingContext2D API`渲染图像时的第一帧。 + +当`CanvasImageSource`对象表示`HTMLVideoElement`时,为`CanvasRenderingContext2D API`渲染图像时,在调用带有参数的方法时,当前回放位置处的帧必须用作源图像。并且源图像的尺寸必须是媒体资源的固有宽度和固有高度(即在应用任何长宽比校正之后)。 + +当`CanvasImageSource`对象表示`HTMLCanvasElement`时,必须将元素的位图用作源图像。 + +**The image argument is not origin-clean** 如果它是一个`HTMLImageElement`或`HTMLVideoElement`,其起源 [origin](https://html.spec.whatwg.org/multipage/browsers.html#origin-0) 与输入设置对象 [entry settings object](https://html.spec.whatwg.org/multipage/webappapis.html#entry-settings-object) 指定的起源不同,或者它是一个`HTMLCanvasElement`,其位图的`origin-clean`标志为`false`,或者它是一个`CanvasRenderingContext2D`对象,其位图的`origin-clean`标志为`false`。 + ## 填充和描边样式 +> NOTE: + +> context.[fillStyle](#fillStyle) [ = value ] +返回用于填充形状的当前样式。 +可以设置,更改填充样式。 +样式可以是包含 CSS 颜色的字符串,也可以是 [CanvasGradient](https://www.w3.org/TR/2dcontext/#canvasgradient) 或[CanvasPattern](https://www.w3.org/TR/2dcontext/#canvaspattern) 对象。无效的值将被忽略。 + +> context.[strokeStyle](#strokeStyle) [ = value ] +返回用于描边形状的当前样式。 +可以设置,以更改描边样式。 +样式可以是包含 CSS 颜色的字符串,也可以是 [CanvasGradient](https://www.w3.org/TR/2dcontext/#canvasgradient) 或[CanvasPattern](https://www.w3.org/TR/2dcontext/#canvaspattern) 对象。无效的值将被忽略。 + + +如果该值是一个字符串但不能解析为`CSS `值,或者既不是字符串,也不是`CanvasGradient`或`CanvasPattern`,则必须将其忽略,并且该属性必须保留其先前的值。如果新值是标记为 [not origin-clean](https://www.w3.org/TR/2dcontext/#concept-canvas-pattern-not-origin-clean) 的`CanvasPattern`对象,则位图的`origin-clean`标志必须设置为`false`。 + +如果将其设置为`CanvasPattern`或`CanvasGradient`对象,则该赋值是动态的的,这意味着赋值后对该对象所做的更改确实会影响后续的描边或填充形状。 + +当创建上下文时, `fillStyle`和`strokeStyle`属性初始化为字符串`#000000`。 + +当值是颜色时,在画布上绘制时,它一定不受变换矩阵的影响。 + + + ## 在画布上绘制矩形 ## 在画布上绘制文字