1e41f4b71Sopenharmony_ci# CanvasRenderingContext2D对象 2e41f4b71Sopenharmony_ci 3e41f4b71Sopenharmony_ci> **说明:** 4e41f4b71Sopenharmony_ci> 5e41f4b71Sopenharmony_ci> 从API version 4开始支持。后续版本如有新增内容,则采用上角标单独标记该内容的起始版本。 6e41f4b71Sopenharmony_ci 7e41f4b71Sopenharmony_ci使用CanvasRenderingContext2D在canvas画布组件上进行绘制,绘制对象可以是矩形、文本、图片等。 8e41f4b71Sopenharmony_ci 9e41f4b71Sopenharmony_ci 10e41f4b71Sopenharmony_ci**示例:** 11e41f4b71Sopenharmony_ci ```html 12e41f4b71Sopenharmony_ci <!-- xxx.hml --> 13e41f4b71Sopenharmony_ci <div> 14e41f4b71Sopenharmony_ci <canvas ref="canvas1" style="width: 200px; height: 150px; background-color: #ffff00;"></canvas> 15e41f4b71Sopenharmony_ci <input type="button" style="width: 180px; height: 60px;" value="handleClick" onclick="handleClick" /> 16e41f4b71Sopenharmony_ci <input type="button" style="width: 180px; height: 60px;" value="antialias" onclick="antialias" /> 17e41f4b71Sopenharmony_ci </div> 18e41f4b71Sopenharmony_ci ``` 19e41f4b71Sopenharmony_ci 20e41f4b71Sopenharmony_ci ```js 21e41f4b71Sopenharmony_ci // xxx.js 22e41f4b71Sopenharmony_ci export default { 23e41f4b71Sopenharmony_ci handleClick() { 24e41f4b71Sopenharmony_ci const el = this.$refs.canvas1; 25e41f4b71Sopenharmony_ci const ctx = el.getContext('2d'); 26e41f4b71Sopenharmony_ci ctx.beginPath(); 27e41f4b71Sopenharmony_ci ctx.arc(100, 75, 50, 0, 6.28); 28e41f4b71Sopenharmony_ci ctx.stroke(); 29e41f4b71Sopenharmony_ci }, 30e41f4b71Sopenharmony_ci antialias() { 31e41f4b71Sopenharmony_ci const el = this.$refs.canvas1; 32e41f4b71Sopenharmony_ci const ctx = el.getContext('2d', { antialias: true }); 33e41f4b71Sopenharmony_ci ctx.beginPath(); 34e41f4b71Sopenharmony_ci ctx.arc(100, 75, 50, 0, 6.28); 35e41f4b71Sopenharmony_ci ctx.stroke(); 36e41f4b71Sopenharmony_ci } 37e41f4b71Sopenharmony_ci } 38e41f4b71Sopenharmony_ci ``` 39e41f4b71Sopenharmony_ci 40e41f4b71Sopenharmony_ci- 示意图(关闭抗锯齿) 41e41f4b71Sopenharmony_ci 42e41f4b71Sopenharmony_ci  43e41f4b71Sopenharmony_ci 44e41f4b71Sopenharmony_ci- 示意图(开启抗锯齿) 45e41f4b71Sopenharmony_ci 46e41f4b71Sopenharmony_ci  47e41f4b71Sopenharmony_ci 48e41f4b71Sopenharmony_ci 49e41f4b71Sopenharmony_ci## 属性 50e41f4b71Sopenharmony_ci 51e41f4b71Sopenharmony_ci| 名称 | 类型 | 描述 | 52e41f4b71Sopenharmony_ci| ---------------------------------------- | ---------------------------------------- | ---------------------------------------- | 53e41f4b71Sopenharmony_ci| [fillStyle](#fillstyle) | <color> \| [CanvasGradient](js-components-canvas-canvasgradient.md) \| CanvasPattern | 指定绘制的填充色。<br/>- 类型为<color>时,表示设置填充区域的颜色。<br/>- 类型为CanvasGradient时,表示渐变对象,使用 createLinearGradient()方法创建。<br/>- 类型为CanvasPattern时,使用 createPattern()方法创建。 | 54e41f4b71Sopenharmony_ci| [lineWidth](#linewidth) | number | 设置绘制线条的宽度。 | 55e41f4b71Sopenharmony_ci| [strokeStyle](#strokestyle) | <color> \| [CanvasGradient](js-components-canvas-canvasgradient.md) \| CanvasPattern | 设置描边的颜色。<br/>- 类型为<color>时,表示设置描边使用的颜色。<br/>- 类型为CanvasGradient时,表示渐变对象,使用 createLinearGradient()方法创建。<br/>- 类型为CanvasPattern时,使用 createPattern()方法创建。 | 56e41f4b71Sopenharmony_ci| [lineCap](#linecap) | string | 指定线端点的样式,可选值为:<br/>- butt:线端点以方形结束。<br/>- round:线端点以圆形结束。<br/>- square:线端点以方形结束,该样式下会增加一个长度和线段厚度相同,宽度是线段厚度一半的矩形。<br>默认值:butt | 57e41f4b71Sopenharmony_ci| [lineJoin](#linejoin) | string | 指定线段间相交的交点样式,可选值为:<br/>- round:在线段相连处绘制一个扇形,扇形的圆角半径是线段的宽度。<br/>- bevel:在线段相连处使用三角形为底填充, 每个部分矩形拐角独立。<br/>- miter:在相连部分的外边缘处进行延伸,使其相交于一点,形成一个菱形区域,该属性可以通过设置miterLimit属性展现效果。<br>默认值:miter | 58e41f4b71Sopenharmony_ci| [miterLimit](#miterlimit) | number | 设置斜接面限制值,该值指定了线条相交处内角和外角的距离。<br>默认值:10 | 59e41f4b71Sopenharmony_ci| [font](#font) | string | 设置文本绘制中的字体样式。<br/>语法:ctx.font="font-style font-weight font-size font-family"<sup>5+</sup><br/>- font-style(可选),用于指定字体样式,支持如下几种样式:normal, italic。<br/>- font-weight(可选),用于指定字体的粗细,支持如下几种类型:normal, bold, bolder, lighter, 100, 200, 300, 400, 500, 600, 700, 800, 900。<br/>- font-size(可选),指定字号和行高,单位只支持px。<br/>- font-family(可选),指定字体系列,支持如下几种类型:sans-serif, serif, monospace。<br>默认值:"normal normal 14px sans-serif" | 60e41f4b71Sopenharmony_ci| [textAlign](#textalign) | string | 设置文本绘制中的文本对齐方式,可选值为:<br/>- left:文本左对齐。<br/>- right:文本右对齐。<br/>- center:文本居中对齐。<br/>- start:文本对齐界线开始的地方。<br/>- end:文本对齐界线结束的地方。<br/>ltr布局模式下start和left一致,rtl布局模式下start和right一致。<br>默认值:left | 61e41f4b71Sopenharmony_ci| [textBaseline](#textbaseline) | string | 设置文本绘制中的水平对齐方式,可选值为:<br/>- alphabetic:文本基线是标准的字母基线。<br/>- top:文本基线在文本块的顶部。<br/>- hanging:文本基线是悬挂基线。<br/>- middle:文本基线在文本块的中间。<br/>- ideographic:文字基线是表意字基线;如果字符本身超出了alphabetic 基线,那么ideographic基线位置在字符本身的底部。<br/>- bottom:文本基线在文本块的底部。 与 ideographic 基线的区别在于 ideographic 基线不需要考虑下行字母。<br>默认值: alphabetic | 62e41f4b71Sopenharmony_ci| [globalAlpha](#globalalpha) | number | 设置透明度,0.0为完全透明,1.0为完全不透明。 | 63e41f4b71Sopenharmony_ci| [lineDashOffset](#linedashoffset) | number | 设置画布的虚线偏移量,精度为float。<br>默认值:0.0 | 64e41f4b71Sopenharmony_ci| [globalCompositeOperation](#globalcompositeoperation) | string | 设置合成操作的方式。类型字段可选值有source-over,source-atop,source-in,source-out,destination-over,destination-atop,destination-in,destination-out,lighter,copy,xor。具体请参考[表 类型字段说明](#globalcompositeoperation)。<br>默认值:ource-over | 65e41f4b71Sopenharmony_ci| [shadowBlur](#shadowblur) | number | 设置绘制阴影时的模糊级别,值越大越模糊,精度为float。<br>默认值:0.0 | 66e41f4b71Sopenharmony_ci| [shadowColor](#shadowcolor) | <color> | 设置绘制阴影时的阴影颜色。 | 67e41f4b71Sopenharmony_ci| [shadowOffsetX](#shadowoffsetx) | number | 设置绘制阴影时和原有对象的水平偏移值。 | 68e41f4b71Sopenharmony_ci| [shadowOffsetY](#shadowoffsety) | number | 设置绘制阴影时和原有对象的垂直偏移值。 | 69e41f4b71Sopenharmony_ci| [imageSmoothingEnabled](#imagesmoothingenabled6)<sup>6+</sup> | boolean | 用于设置绘制图片时是否进行图像平滑度调整,true为启用,false为不启用。<br>默认值:true | 70e41f4b71Sopenharmony_ci 71e41f4b71Sopenharmony_ci 72e41f4b71Sopenharmony_ci### fillStyle 73e41f4b71Sopenharmony_ci 74e41f4b71Sopenharmony_ci ```html 75e41f4b71Sopenharmony_ci<!-- xxx.hml --> 76e41f4b71Sopenharmony_ci<div> 77e41f4b71Sopenharmony_ci <canvas ref="canvas" style="width: 200px; height: 150px; "></canvas> 78e41f4b71Sopenharmony_ci</div> 79e41f4b71Sopenharmony_ci ``` 80e41f4b71Sopenharmony_ci 81e41f4b71Sopenharmony_ci```js 82e41f4b71Sopenharmony_ci// xxx.js 83e41f4b71Sopenharmony_ciexport default { 84e41f4b71Sopenharmony_ci onShow() { 85e41f4b71Sopenharmony_ci const el =this.$refs.canvas; 86e41f4b71Sopenharmony_ci const ctx = el.getContext('2d'); 87e41f4b71Sopenharmony_ci ctx.fillStyle = '#0000ff'; 88e41f4b71Sopenharmony_ci ctx.fillRect(20, 20, 150, 100); 89e41f4b71Sopenharmony_ci } 90e41f4b71Sopenharmony_ci} 91e41f4b71Sopenharmony_ci``` 92e41f4b71Sopenharmony_ci 93e41f4b71Sopenharmony_ci 94e41f4b71Sopenharmony_ci 95e41f4b71Sopenharmony_ci 96e41f4b71Sopenharmony_ci### lineWidth 97e41f4b71Sopenharmony_ci 98e41f4b71Sopenharmony_ci```html 99e41f4b71Sopenharmony_ci<!-- xxx.hml --> 100e41f4b71Sopenharmony_ci<div> 101e41f4b71Sopenharmony_ci <canvas ref="canvas" style="width: 200px; height: 150px; "></canvas> 102e41f4b71Sopenharmony_ci</div> 103e41f4b71Sopenharmony_ci``` 104e41f4b71Sopenharmony_ci 105e41f4b71Sopenharmony_ci```js 106e41f4b71Sopenharmony_ci// xxx.js 107e41f4b71Sopenharmony_ciexport default { 108e41f4b71Sopenharmony_ci onShow() { 109e41f4b71Sopenharmony_ci const el =this.$refs.canvas; 110e41f4b71Sopenharmony_ci const ctx = el.getContext('2d'); 111e41f4b71Sopenharmony_ci ctx.lineWidth = 5; 112e41f4b71Sopenharmony_ci ctx.strokeRect(25, 25, 85, 105); 113e41f4b71Sopenharmony_ci } 114e41f4b71Sopenharmony_ci} 115e41f4b71Sopenharmony_ci 116e41f4b71Sopenharmony_ci``` 117e41f4b71Sopenharmony_ci 118e41f4b71Sopenharmony_ci 119e41f4b71Sopenharmony_ci 120e41f4b71Sopenharmony_ci 121e41f4b71Sopenharmony_ci### strokeStyle 122e41f4b71Sopenharmony_ci 123e41f4b71Sopenharmony_ci```html 124e41f4b71Sopenharmony_ci<!-- xxx.hml --> 125e41f4b71Sopenharmony_ci<div> 126e41f4b71Sopenharmony_ci <canvas ref="canvas" style="width: 200px; height: 150px; "></canvas> 127e41f4b71Sopenharmony_ci</div> 128e41f4b71Sopenharmony_ci``` 129e41f4b71Sopenharmony_ci 130e41f4b71Sopenharmony_ci```js 131e41f4b71Sopenharmony_ci// xxx.js 132e41f4b71Sopenharmony_ciexport default { 133e41f4b71Sopenharmony_ci onShow() { 134e41f4b71Sopenharmony_ci const el =this.$refs.canvas; 135e41f4b71Sopenharmony_ci const ctx = el.getContext('2d'); 136e41f4b71Sopenharmony_ci ctx.lineWidth = 10; 137e41f4b71Sopenharmony_ci ctx.strokeStyle = '#0000ff'; 138e41f4b71Sopenharmony_ci ctx.strokeRect(25, 25, 155, 105); 139e41f4b71Sopenharmony_ci } 140e41f4b71Sopenharmony_ci} 141e41f4b71Sopenharmony_ci``` 142e41f4b71Sopenharmony_ci 143e41f4b71Sopenharmony_ci 144e41f4b71Sopenharmony_ci 145e41f4b71Sopenharmony_ci 146e41f4b71Sopenharmony_ci### lineCap 147e41f4b71Sopenharmony_ci 148e41f4b71Sopenharmony_ci```html 149e41f4b71Sopenharmony_ci<!-- xxx.hml --> 150e41f4b71Sopenharmony_ci<div> 151e41f4b71Sopenharmony_ci <canvas ref="canvas" style="width: 200px; height: 150px; "></canvas> 152e41f4b71Sopenharmony_ci</div> 153e41f4b71Sopenharmony_ci``` 154e41f4b71Sopenharmony_ci 155e41f4b71Sopenharmony_ci```js 156e41f4b71Sopenharmony_ci// xxx.js 157e41f4b71Sopenharmony_ciexport default { 158e41f4b71Sopenharmony_ci onShow() { 159e41f4b71Sopenharmony_ci const el =this.$refs.canvas; 160e41f4b71Sopenharmony_ci const ctx = el.getContext('2d'); 161e41f4b71Sopenharmony_ci ctx.lineWidth = 8; 162e41f4b71Sopenharmony_ci ctx.beginPath(); 163e41f4b71Sopenharmony_ci ctx.lineCap = 'round'; 164e41f4b71Sopenharmony_ci ctx.moveTo(30, 50); 165e41f4b71Sopenharmony_ci ctx.lineTo(220, 50); 166e41f4b71Sopenharmony_ci ctx.stroke(); 167e41f4b71Sopenharmony_ci } 168e41f4b71Sopenharmony_ci} 169e41f4b71Sopenharmony_ci``` 170e41f4b71Sopenharmony_ci 171e41f4b71Sopenharmony_ci 172e41f4b71Sopenharmony_ci 173e41f4b71Sopenharmony_ci### lineJoin 174e41f4b71Sopenharmony_ci 175e41f4b71Sopenharmony_ci```html 176e41f4b71Sopenharmony_ci<!-- xxx.hml --> 177e41f4b71Sopenharmony_ci<div> 178e41f4b71Sopenharmony_ci <canvas ref="canvas" style="width: 200px; height: 150px; "></canvas> 179e41f4b71Sopenharmony_ci</div> 180e41f4b71Sopenharmony_ci``` 181e41f4b71Sopenharmony_ci 182e41f4b71Sopenharmony_ci```js 183e41f4b71Sopenharmony_ci// xxx.js 184e41f4b71Sopenharmony_ciexport default { 185e41f4b71Sopenharmony_ci onShow() { 186e41f4b71Sopenharmony_ci const el =this.$refs.canvas; 187e41f4b71Sopenharmony_ci const ctx = el.getContext('2d'); 188e41f4b71Sopenharmony_ci ctx.beginPath(); 189e41f4b71Sopenharmony_ci ctx.lineWidth = 8; 190e41f4b71Sopenharmony_ci ctx.lineJoin = 'miter'; 191e41f4b71Sopenharmony_ci ctx.moveTo(30, 30); 192e41f4b71Sopenharmony_ci ctx.lineTo(120, 60); 193e41f4b71Sopenharmony_ci ctx.lineTo(30, 110); 194e41f4b71Sopenharmony_ci ctx.stroke(); 195e41f4b71Sopenharmony_ci } 196e41f4b71Sopenharmony_ci} 197e41f4b71Sopenharmony_ci``` 198e41f4b71Sopenharmony_ci 199e41f4b71Sopenharmony_ci 200e41f4b71Sopenharmony_ci 201e41f4b71Sopenharmony_ci### miterLimit 202e41f4b71Sopenharmony_ci 203e41f4b71Sopenharmony_ci```html 204e41f4b71Sopenharmony_ci<!-- xxx.hml --> 205e41f4b71Sopenharmony_ci<div> 206e41f4b71Sopenharmony_ci <canvas ref="canvas" style="width: 500px; height: 500px; "></canvas> 207e41f4b71Sopenharmony_ci</div> 208e41f4b71Sopenharmony_ci``` 209e41f4b71Sopenharmony_ci 210e41f4b71Sopenharmony_ci```js 211e41f4b71Sopenharmony_ci// xxx.js 212e41f4b71Sopenharmony_ciexport default { 213e41f4b71Sopenharmony_ci onShow() { 214e41f4b71Sopenharmony_ci const el =this.$refs.canvas; 215e41f4b71Sopenharmony_ci const ctx = el.getContext('2d'); 216e41f4b71Sopenharmony_ci ctx.lineWidth =14; 217e41f4b71Sopenharmony_ci ctx.lineJoin = 'miter'; 218e41f4b71Sopenharmony_ci ctx.miterLimit = 3; 219e41f4b71Sopenharmony_ci ctx.moveTo(30, 30); 220e41f4b71Sopenharmony_ci ctx.lineTo(120, 60); 221e41f4b71Sopenharmony_ci ctx.lineTo(30, 70); 222e41f4b71Sopenharmony_ci ctx.stroke(); 223e41f4b71Sopenharmony_ci } 224e41f4b71Sopenharmony_ci} 225e41f4b71Sopenharmony_ci``` 226e41f4b71Sopenharmony_ci 227e41f4b71Sopenharmony_ci 228e41f4b71Sopenharmony_ci 229e41f4b71Sopenharmony_ci 230e41f4b71Sopenharmony_ci### font 231e41f4b71Sopenharmony_ci 232e41f4b71Sopenharmony_ci```html 233e41f4b71Sopenharmony_ci<!-- xxx.hml --> 234e41f4b71Sopenharmony_ci<div> 235e41f4b71Sopenharmony_ci <canvas ref="canvas" style="width: 200px; height: 150px; "></canvas> 236e41f4b71Sopenharmony_ci</div> 237e41f4b71Sopenharmony_ci``` 238e41f4b71Sopenharmony_ci 239e41f4b71Sopenharmony_ci```js 240e41f4b71Sopenharmony_ci// xxx.js 241e41f4b71Sopenharmony_ciexport default { 242e41f4b71Sopenharmony_ci onShow() { 243e41f4b71Sopenharmony_ci const el =this.$refs.canvas; 244e41f4b71Sopenharmony_ci const ctx = el.getContext('2d'); 245e41f4b71Sopenharmony_ci ctx.font = '30px sans-serif'; 246e41f4b71Sopenharmony_ci ctx.fillText("Hello World", 20, 60); 247e41f4b71Sopenharmony_ci } 248e41f4b71Sopenharmony_ci} 249e41f4b71Sopenharmony_ci``` 250e41f4b71Sopenharmony_ci 251e41f4b71Sopenharmony_ci 252e41f4b71Sopenharmony_ci 253e41f4b71Sopenharmony_ci 254e41f4b71Sopenharmony_ci### textAlign 255e41f4b71Sopenharmony_ci 256e41f4b71Sopenharmony_ci```html 257e41f4b71Sopenharmony_ci<!-- xxx.hml --> 258e41f4b71Sopenharmony_ci<div> 259e41f4b71Sopenharmony_ci <canvas ref="canvas" style="width: 200px; height: 150px; "></canvas> 260e41f4b71Sopenharmony_ci</div> 261e41f4b71Sopenharmony_ci``` 262e41f4b71Sopenharmony_ci 263e41f4b71Sopenharmony_ci```js 264e41f4b71Sopenharmony_ci// xxx.js 265e41f4b71Sopenharmony_ciexport default { 266e41f4b71Sopenharmony_ci onShow() { 267e41f4b71Sopenharmony_ci const el =this.$refs.canvas; 268e41f4b71Sopenharmony_ci const ctx = el.getContext('2d'); 269e41f4b71Sopenharmony_ci ctx.strokeStyle = '#0000ff'; 270e41f4b71Sopenharmony_ci ctx.moveTo(140, 10); 271e41f4b71Sopenharmony_ci ctx.lineTo(140, 160); 272e41f4b71Sopenharmony_ci ctx.stroke(); 273e41f4b71Sopenharmony_ci ctx.font = '18px sans-serif'; 274e41f4b71Sopenharmony_ci // Show the different textAlign values 275e41f4b71Sopenharmony_ci ctx.textAlign = 'start'; 276e41f4b71Sopenharmony_ci ctx.fillText('textAlign=start', 140, 60); 277e41f4b71Sopenharmony_ci ctx.textAlign = 'end'; 278e41f4b71Sopenharmony_ci ctx.fillText('textAlign=end', 140, 80); 279e41f4b71Sopenharmony_ci ctx.textAlign = 'left'; 280e41f4b71Sopenharmony_ci ctx.fillText('textAlign=left', 140, 100); 281e41f4b71Sopenharmony_ci ctx.textAlign = 'center'; 282e41f4b71Sopenharmony_ci ctx.fillText('textAlign=center',140, 120); 283e41f4b71Sopenharmony_ci ctx.textAlign = 'right'; 284e41f4b71Sopenharmony_ci ctx.fillText('textAlign=right',140, 140); 285e41f4b71Sopenharmony_ci } 286e41f4b71Sopenharmony_ci} 287e41f4b71Sopenharmony_ci 288e41f4b71Sopenharmony_ci``` 289e41f4b71Sopenharmony_ci 290e41f4b71Sopenharmony_ci 291e41f4b71Sopenharmony_ci 292e41f4b71Sopenharmony_ci 293e41f4b71Sopenharmony_ci### textBaseline 294e41f4b71Sopenharmony_ci 295e41f4b71Sopenharmony_ci```html 296e41f4b71Sopenharmony_ci<!-- xxx.hml --> 297e41f4b71Sopenharmony_ci<div> 298e41f4b71Sopenharmony_ci <canvas ref="canvas" style="width: 500px; height: 500px; "></canvas> 299e41f4b71Sopenharmony_ci</div> 300e41f4b71Sopenharmony_ci``` 301e41f4b71Sopenharmony_ci 302e41f4b71Sopenharmony_ci```js 303e41f4b71Sopenharmony_ci// xxx.js 304e41f4b71Sopenharmony_ciexport default { 305e41f4b71Sopenharmony_ci onShow() { 306e41f4b71Sopenharmony_ci const el =this.$refs.canvas; 307e41f4b71Sopenharmony_ci const ctx = el.getContext('2d'); 308e41f4b71Sopenharmony_ci ctx.strokeStyle = '#0000ff'; 309e41f4b71Sopenharmony_ci ctx.moveTo(0, 120); 310e41f4b71Sopenharmony_ci ctx.lineTo(400, 120); 311e41f4b71Sopenharmony_ci ctx.stroke(); 312e41f4b71Sopenharmony_ci ctx.font = '20px sans-serif'; 313e41f4b71Sopenharmony_ci ctx.textBaseline = 'top'; 314e41f4b71Sopenharmony_ci ctx.fillText('Top', 10, 120); 315e41f4b71Sopenharmony_ci ctx.textBaseline = 'bottom'; 316e41f4b71Sopenharmony_ci ctx.fillText('Bottom', 55, 120); 317e41f4b71Sopenharmony_ci ctx.textBaseline = 'middle'; 318e41f4b71Sopenharmony_ci ctx.fillText('Middle', 125, 120); 319e41f4b71Sopenharmony_ci ctx.textBaseline = 'alphabetic'; 320e41f4b71Sopenharmony_ci ctx.fillText('Alphabetic', 195, 120); 321e41f4b71Sopenharmony_ci ctx.textBaseline = 'hanging'; 322e41f4b71Sopenharmony_ci ctx.fillText('Hanging', 295, 120); 323e41f4b71Sopenharmony_ci } 324e41f4b71Sopenharmony_ci} 325e41f4b71Sopenharmony_ci``` 326e41f4b71Sopenharmony_ci 327e41f4b71Sopenharmony_ci 328e41f4b71Sopenharmony_ci 329e41f4b71Sopenharmony_ci### globalAlpha 330e41f4b71Sopenharmony_ci 331e41f4b71Sopenharmony_ci```html 332e41f4b71Sopenharmony_ci<!-- xxx.hml --> 333e41f4b71Sopenharmony_ci<div> 334e41f4b71Sopenharmony_ci <canvas ref="canvas" style="width: 200px; height: 150px; "></canvas> 335e41f4b71Sopenharmony_ci</div> 336e41f4b71Sopenharmony_ci``` 337e41f4b71Sopenharmony_ci 338e41f4b71Sopenharmony_ci```js 339e41f4b71Sopenharmony_ci// xxx.js 340e41f4b71Sopenharmony_ciexport default { 341e41f4b71Sopenharmony_ci onShow() { 342e41f4b71Sopenharmony_ci const el =this.$refs.canvas; 343e41f4b71Sopenharmony_ci const ctx = el.getContext('2d'); 344e41f4b71Sopenharmony_ci ctx.fillStyle = 'rgb(255,0,0)'; 345e41f4b71Sopenharmony_ci ctx.fillRect(0, 0, 50, 50); 346e41f4b71Sopenharmony_ci ctx.globalAlpha = 0.4; 347e41f4b71Sopenharmony_ci ctx.fillStyle = 'rgb(0,0,255)'; 348e41f4b71Sopenharmony_ci ctx.fillRect(50, 50, 50, 50); 349e41f4b71Sopenharmony_ci 350e41f4b71Sopenharmony_ci } 351e41f4b71Sopenharmony_ci} 352e41f4b71Sopenharmony_ci``` 353e41f4b71Sopenharmony_ci 354e41f4b71Sopenharmony_ci 355e41f4b71Sopenharmony_ci 356e41f4b71Sopenharmony_ci### lineDashOffset 357e41f4b71Sopenharmony_ci 358e41f4b71Sopenharmony_ci```html 359e41f4b71Sopenharmony_ci<!-- xxx.hml --> 360e41f4b71Sopenharmony_ci<div> 361e41f4b71Sopenharmony_ci <canvas ref="canvas" style="width: 200px; height: 150px; background-color: #ffff00;"></canvas> 362e41f4b71Sopenharmony_ci</div> 363e41f4b71Sopenharmony_ci``` 364e41f4b71Sopenharmony_ci 365e41f4b71Sopenharmony_ci```js 366e41f4b71Sopenharmony_ci// xxx.js 367e41f4b71Sopenharmony_ciexport default { 368e41f4b71Sopenharmony_ci onShow() { 369e41f4b71Sopenharmony_ci const el =this.$refs.canvas; 370e41f4b71Sopenharmony_ci const ctx = el.getContext('2d'); 371e41f4b71Sopenharmony_ci ctx.arc(100, 75, 50, 0, 6.28); 372e41f4b71Sopenharmony_ci ctx.setLineDash([10,20]); 373e41f4b71Sopenharmony_ci ctx.lineDashOffset = 10.0; 374e41f4b71Sopenharmony_ci ctx.stroke(); 375e41f4b71Sopenharmony_ci } 376e41f4b71Sopenharmony_ci} 377e41f4b71Sopenharmony_ci``` 378e41f4b71Sopenharmony_ci 379e41f4b71Sopenharmony_ci 380e41f4b71Sopenharmony_ci 381e41f4b71Sopenharmony_ci### globalCompositeOperation 382e41f4b71Sopenharmony_ci 383e41f4b71Sopenharmony_ci类型字段说明 384e41f4b71Sopenharmony_ci 385e41f4b71Sopenharmony_ci| 值 | 描述 | 386e41f4b71Sopenharmony_ci| ---------------- | ------------------------ | 387e41f4b71Sopenharmony_ci| source-over | 在现有绘制内容上显示新绘制内容,属于默认值。 | 388e41f4b71Sopenharmony_ci| source-atop | 在现有绘制内容顶部显示新绘制内容。 | 389e41f4b71Sopenharmony_ci| source-in | 在现有绘制内容中显示新绘制内容。 | 390e41f4b71Sopenharmony_ci| source-out | 在现有绘制内容之外显示新绘制内容。 | 391e41f4b71Sopenharmony_ci| destination-over | 在新绘制内容上方显示现有绘制内容。 | 392e41f4b71Sopenharmony_ci| destination-atop | 在新绘制内容顶部显示现有绘制内容。 | 393e41f4b71Sopenharmony_ci| destination-in | 在新绘制内容中显示现有绘制内容。 | 394e41f4b71Sopenharmony_ci| destination-out | 在新绘制内容外显示现有绘制内容。 | 395e41f4b71Sopenharmony_ci| lighter | 显示新绘制内容和现有绘制内容。 | 396e41f4b71Sopenharmony_ci| copy | 显示新绘制内容而忽略现有绘制内容。 | 397e41f4b71Sopenharmony_ci| xor | 使用异或操作对新绘制内容与现有绘制内容进行融合。 | 398e41f4b71Sopenharmony_ci 399e41f4b71Sopenharmony_ci**示例:** 400e41f4b71Sopenharmony_ci 401e41f4b71Sopenharmony_ci```html 402e41f4b71Sopenharmony_ci<!-- xxx.hml --> 403e41f4b71Sopenharmony_ci<div> 404e41f4b71Sopenharmony_ci <canvas ref="canvas" style="width: 200px; height: 150px; "></canvas> 405e41f4b71Sopenharmony_ci</div> 406e41f4b71Sopenharmony_ci``` 407e41f4b71Sopenharmony_ci 408e41f4b71Sopenharmony_ci ```js 409e41f4b71Sopenharmony_ci// xxx.js 410e41f4b71Sopenharmony_ciexport default { 411e41f4b71Sopenharmony_ci onShow() { 412e41f4b71Sopenharmony_ci const el =this.$refs.canvas; 413e41f4b71Sopenharmony_ci const ctx = el.getContext('2d'); 414e41f4b71Sopenharmony_ci ctx.fillStyle = 'rgb(255,0,0)'; 415e41f4b71Sopenharmony_ci ctx.fillRect(20, 20, 50, 50); 416e41f4b71Sopenharmony_ci ctx.globalCompositeOperation = 'source-over'; 417e41f4b71Sopenharmony_ci ctx.fillStyle = 'rgb(0,0,255)'; 418e41f4b71Sopenharmony_ci ctx.fillRect(50, 50, 50, 50); 419e41f4b71Sopenharmony_ci // Start drawing second example 420e41f4b71Sopenharmony_ci ctx.fillStyle = 'rgb(255,0,0)'; 421e41f4b71Sopenharmony_ci ctx.fillRect(120, 20, 50, 50); 422e41f4b71Sopenharmony_ci ctx.globalCompositeOperation = 'destination-over'; 423e41f4b71Sopenharmony_ci ctx.fillStyle = 'rgb(0,0,255)'; 424e41f4b71Sopenharmony_ci ctx.fillRect(150, 50, 50, 50); 425e41f4b71Sopenharmony_ci } 426e41f4b71Sopenharmony_ci} 427e41f4b71Sopenharmony_ci ``` 428e41f4b71Sopenharmony_ci 429e41f4b71Sopenharmony_ci  430e41f4b71Sopenharmony_ci 431e41f4b71Sopenharmony_ci 示例中,新绘制内容是蓝色矩形,现有绘制内容是红色矩形。 432e41f4b71Sopenharmony_ci 433e41f4b71Sopenharmony_ci### shadowBlur 434e41f4b71Sopenharmony_ci 435e41f4b71Sopenharmony_ci ```html 436e41f4b71Sopenharmony_ci<!-- xxx.hml --> 437e41f4b71Sopenharmony_ci<div> 438e41f4b71Sopenharmony_ci <canvas ref="canvas" style="width: 200px; height: 150px; "></canvas> 439e41f4b71Sopenharmony_ci</div> 440e41f4b71Sopenharmony_ci ``` 441e41f4b71Sopenharmony_ci 442e41f4b71Sopenharmony_ci```js 443e41f4b71Sopenharmony_ci// xxx.js 444e41f4b71Sopenharmony_ciexport default { 445e41f4b71Sopenharmony_ci onShow() { 446e41f4b71Sopenharmony_ci const el =this.$refs.canvas; 447e41f4b71Sopenharmony_ci const ctx = el.getContext('2d'); 448e41f4b71Sopenharmony_ci ctx.shadowBlur = 30; 449e41f4b71Sopenharmony_ci ctx.shadowColor = 'rgb(0,0,0)'; 450e41f4b71Sopenharmony_ci ctx.fillStyle = 'rgb(255,0,0)'; 451e41f4b71Sopenharmony_ci ctx.fillRect(20, 20, 100, 80); 452e41f4b71Sopenharmony_ci } 453e41f4b71Sopenharmony_ci} 454e41f4b71Sopenharmony_ci``` 455e41f4b71Sopenharmony_ci 456e41f4b71Sopenharmony_ci 457e41f4b71Sopenharmony_ci 458e41f4b71Sopenharmony_ci### shadowColor 459e41f4b71Sopenharmony_ci 460e41f4b71Sopenharmony_ci```html 461e41f4b71Sopenharmony_ci<!-- xxx.hml --> 462e41f4b71Sopenharmony_ci<div> 463e41f4b71Sopenharmony_ci <canvas ref="canvas" style="width: 200px; height: 150px;"></canvas> 464e41f4b71Sopenharmony_ci</div> 465e41f4b71Sopenharmony_ci``` 466e41f4b71Sopenharmony_ci 467e41f4b71Sopenharmony_ci```js 468e41f4b71Sopenharmony_ci// xxx.js 469e41f4b71Sopenharmony_ciexport default { 470e41f4b71Sopenharmony_ci onShow() { 471e41f4b71Sopenharmony_ci const el =this.$refs.canvas; 472e41f4b71Sopenharmony_ci const ctx = el.getContext('2d'); 473e41f4b71Sopenharmony_ci ctx.shadowBlur = 30; 474e41f4b71Sopenharmony_ci ctx.shadowColor = 'rgb(0,0,255)'; 475e41f4b71Sopenharmony_ci ctx.fillStyle = 'rgb(255,0,0)'; 476e41f4b71Sopenharmony_ci ctx.fillRect(30, 30, 100, 100); 477e41f4b71Sopenharmony_ci } 478e41f4b71Sopenharmony_ci} 479e41f4b71Sopenharmony_ci``` 480e41f4b71Sopenharmony_ci 481e41f4b71Sopenharmony_ci 482e41f4b71Sopenharmony_ci 483e41f4b71Sopenharmony_ci### shadowOffsetX 484e41f4b71Sopenharmony_ci 485e41f4b71Sopenharmony_ci```html 486e41f4b71Sopenharmony_ci<!-- xxx.hml --> 487e41f4b71Sopenharmony_ci<div> 488e41f4b71Sopenharmony_ci <canvas ref="canvas" style="width: 200px; height: 150px;"></canvas> 489e41f4b71Sopenharmony_ci</div> 490e41f4b71Sopenharmony_ci``` 491e41f4b71Sopenharmony_ci 492e41f4b71Sopenharmony_ci```js 493e41f4b71Sopenharmony_ci// xxx.js 494e41f4b71Sopenharmony_ciexport default { 495e41f4b71Sopenharmony_ci onShow() { 496e41f4b71Sopenharmony_ci const el =this.$refs.canvas; 497e41f4b71Sopenharmony_ci const ctx = el.getContext('2d'); 498e41f4b71Sopenharmony_ci ctx.shadowBlur = 10; 499e41f4b71Sopenharmony_ci ctx.shadowOffsetX = 20; 500e41f4b71Sopenharmony_ci ctx.shadowColor = 'rgb(0,0,0)'; 501e41f4b71Sopenharmony_ci ctx.fillStyle = 'rgb(255,0,0)'; 502e41f4b71Sopenharmony_ci ctx.fillRect(20, 20, 100, 80); 503e41f4b71Sopenharmony_ci } 504e41f4b71Sopenharmony_ci} 505e41f4b71Sopenharmony_ci``` 506e41f4b71Sopenharmony_ci 507e41f4b71Sopenharmony_ci 508e41f4b71Sopenharmony_ci 509e41f4b71Sopenharmony_ci 510e41f4b71Sopenharmony_ci### shadowOffsetY 511e41f4b71Sopenharmony_ci 512e41f4b71Sopenharmony_ci```html 513e41f4b71Sopenharmony_ci<!-- xxx.hml --> 514e41f4b71Sopenharmony_ci<div> 515e41f4b71Sopenharmony_ci <canvas ref="canvas" style="width: 200px; height: 150px; "></canvas> 516e41f4b71Sopenharmony_ci</div> 517e41f4b71Sopenharmony_ci``` 518e41f4b71Sopenharmony_ci 519e41f4b71Sopenharmony_ci```js 520e41f4b71Sopenharmony_ci// xxx.js 521e41f4b71Sopenharmony_ciexport default { 522e41f4b71Sopenharmony_ci onShow() { 523e41f4b71Sopenharmony_ci const el =this.$refs.canvas; 524e41f4b71Sopenharmony_ci const ctx = el.getContext('2d'); 525e41f4b71Sopenharmony_ci ctx.shadowBlur = 10; 526e41f4b71Sopenharmony_ci ctx.shadowOffsetY = 20; 527e41f4b71Sopenharmony_ci ctx.shadowColor = 'rgb(0,0,0)'; 528e41f4b71Sopenharmony_ci ctx.fillStyle = 'rgb(255,0,0)'; 529e41f4b71Sopenharmony_ci ctx.fillRect(30, 30, 100, 100); 530e41f4b71Sopenharmony_ci } 531e41f4b71Sopenharmony_ci} 532e41f4b71Sopenharmony_ci``` 533e41f4b71Sopenharmony_ci 534e41f4b71Sopenharmony_ci 535e41f4b71Sopenharmony_ci 536e41f4b71Sopenharmony_ci### imageSmoothingEnabled<sup>6+</sup> 537e41f4b71Sopenharmony_ci 538e41f4b71Sopenharmony_ci```html 539e41f4b71Sopenharmony_ci<!-- xxx.hml --> 540e41f4b71Sopenharmony_ci<div> 541e41f4b71Sopenharmony_ci <canvas ref="canvas" style="width: 200px; height: 150px; "></canvas> 542e41f4b71Sopenharmony_ci</div> 543e41f4b71Sopenharmony_ci``` 544e41f4b71Sopenharmony_ci 545e41f4b71Sopenharmony_ci```js 546e41f4b71Sopenharmony_ci// xxx.js 547e41f4b71Sopenharmony_ciexport default { 548e41f4b71Sopenharmony_ci onShow() { 549e41f4b71Sopenharmony_ci const el =this.$refs.canvas; 550e41f4b71Sopenharmony_ci const ctx = el.getContext('2d'); 551e41f4b71Sopenharmony_ci var img = new Image(); 552e41f4b71Sopenharmony_ci img.src = 'common/image/example.jpg'; 553e41f4b71Sopenharmony_ci img.onload = function() { 554e41f4b71Sopenharmony_ci ctx.imageSmoothingEnabled = false; 555e41f4b71Sopenharmony_ci ctx.drawImage(img, 0, 0, 400, 200); 556e41f4b71Sopenharmony_ci }; 557e41f4b71Sopenharmony_ci } 558e41f4b71Sopenharmony_ci} 559e41f4b71Sopenharmony_ci``` 560e41f4b71Sopenharmony_ci 561e41f4b71Sopenharmony_ci 562e41f4b71Sopenharmony_ci 563e41f4b71Sopenharmony_ci 564e41f4b71Sopenharmony_ci 565e41f4b71Sopenharmony_ci## 方法 566e41f4b71Sopenharmony_ci 567e41f4b71Sopenharmony_ci 568e41f4b71Sopenharmony_ci### fillRect 569e41f4b71Sopenharmony_ci 570e41f4b71Sopenharmony_cifillRect(x: number, y: number, width:number, height: number): void 571e41f4b71Sopenharmony_ci 572e41f4b71Sopenharmony_ci填充一个矩形。 573e41f4b71Sopenharmony_ci 574e41f4b71Sopenharmony_ci**参数:** 575e41f4b71Sopenharmony_ci 576e41f4b71Sopenharmony_ci| 参数 | 类型 | 描述 | 577e41f4b71Sopenharmony_ci| ------ | ------ | ------------- | 578e41f4b71Sopenharmony_ci| x | number | 指定矩形左上角点的x坐标。 | 579e41f4b71Sopenharmony_ci| y | number | 指定矩形左上角点的y坐标。 | 580e41f4b71Sopenharmony_ci| width | number | 指定矩形的宽度。 | 581e41f4b71Sopenharmony_ci| height | number | 指定矩形的高度。 | 582e41f4b71Sopenharmony_ci 583e41f4b71Sopenharmony_ci**示例:** 584e41f4b71Sopenharmony_ci 585e41f4b71Sopenharmony_ci```html 586e41f4b71Sopenharmony_ci <!-- xxx.hml --> 587e41f4b71Sopenharmony_ci <div> 588e41f4b71Sopenharmony_ci <canvas ref="canvas" style="width: 500px; height: 500px; background-color: #ffff00;"></canvas> 589e41f4b71Sopenharmony_ci </div> 590e41f4b71Sopenharmony_ci``` 591e41f4b71Sopenharmony_ci 592e41f4b71Sopenharmony_ci ```js 593e41f4b71Sopenharmony_ci //xxx.js 594e41f4b71Sopenharmony_ci export default { 595e41f4b71Sopenharmony_ci onShow() { 596e41f4b71Sopenharmony_ci const el =this.$refs.canvas; 597e41f4b71Sopenharmony_ci const ctx = el.getContext('2d'); 598e41f4b71Sopenharmony_ci ctx.fillRect(20, 20, 200, 150); 599e41f4b71Sopenharmony_ci } 600e41f4b71Sopenharmony_ci } 601e41f4b71Sopenharmony_ci ``` 602e41f4b71Sopenharmony_ci 603e41f4b71Sopenharmony_ci  604e41f4b71Sopenharmony_ci 605e41f4b71Sopenharmony_ci### clearRect 606e41f4b71Sopenharmony_ci 607e41f4b71Sopenharmony_ciclearRect(x: number, y: number, width:number, height: number): void 608e41f4b71Sopenharmony_ci 609e41f4b71Sopenharmony_ci删除指定区域内的绘制内容。 610e41f4b71Sopenharmony_ci 611e41f4b71Sopenharmony_ci**参数:** 612e41f4b71Sopenharmony_ci 613e41f4b71Sopenharmony_ci| 参数 | 类型 | 描述 | 614e41f4b71Sopenharmony_ci| ------ | ------ | ------------- | 615e41f4b71Sopenharmony_ci| x | number | 指定矩形上的左上角x坐标。 | 616e41f4b71Sopenharmony_ci| y | number | 指定矩形上的左上角y坐标。 | 617e41f4b71Sopenharmony_ci| width | number | 指定矩形的宽度。 | 618e41f4b71Sopenharmony_ci| height | number | 指定矩形的高度。 | 619e41f4b71Sopenharmony_ci 620e41f4b71Sopenharmony_ci**示例:** 621e41f4b71Sopenharmony_ci ```html 622e41f4b71Sopenharmony_ci <!-- xxx.hml --> 623e41f4b71Sopenharmony_ci <div> 624e41f4b71Sopenharmony_ci <canvas ref="canvas" style="width: 500px; height: 500px; background-color: #ffff00;"></canvas> 625e41f4b71Sopenharmony_ci </div> 626e41f4b71Sopenharmony_ci ``` 627e41f4b71Sopenharmony_ci 628e41f4b71Sopenharmony_ci ```js 629e41f4b71Sopenharmony_ci //xxx.js 630e41f4b71Sopenharmony_ci export default { 631e41f4b71Sopenharmony_ci onShow() { 632e41f4b71Sopenharmony_ci const el =this.$refs.canvas; 633e41f4b71Sopenharmony_ci const ctx = el.getContext('2d'); 634e41f4b71Sopenharmony_ci ctx.fillStyle = 'rgb(0,0,255)'; 635e41f4b71Sopenharmony_ci ctx.fillRect(0, 0, 400, 200); 636e41f4b71Sopenharmony_ci ctx.clearRect(20, 20, 150, 100); 637e41f4b71Sopenharmony_ci } 638e41f4b71Sopenharmony_ci } 639e41f4b71Sopenharmony_ci ``` 640e41f4b71Sopenharmony_ci 641e41f4b71Sopenharmony_ci  642e41f4b71Sopenharmony_ci 643e41f4b71Sopenharmony_ci 644e41f4b71Sopenharmony_ci### strokeRect 645e41f4b71Sopenharmony_ci 646e41f4b71Sopenharmony_cistrokeRect(x: number, y: number, width:number, height: number): void 647e41f4b71Sopenharmony_ci 648e41f4b71Sopenharmony_ci绘制具有边框的矩形,矩形内部不填充。 649e41f4b71Sopenharmony_ci 650e41f4b71Sopenharmony_ci**参数:** 651e41f4b71Sopenharmony_ci 652e41f4b71Sopenharmony_ci| 参数 | 类型 | 描述 | 653e41f4b71Sopenharmony_ci| ------ | ------ | ------------ | 654e41f4b71Sopenharmony_ci| x | number | 指定矩形的左上角x坐标。 | 655e41f4b71Sopenharmony_ci| y | number | 指定矩形的左上角y坐标。 | 656e41f4b71Sopenharmony_ci| width | number | 指定矩形的宽度。 | 657e41f4b71Sopenharmony_ci| height | number | 指定矩形的高度。 | 658e41f4b71Sopenharmony_ci 659e41f4b71Sopenharmony_ci**示例:** 660e41f4b71Sopenharmony_ci ```html 661e41f4b71Sopenharmony_ci <!-- xxx.hml --> 662e41f4b71Sopenharmony_ci <div> 663e41f4b71Sopenharmony_ci <canvas ref="canvas" style="width: 200px; height: 150px; "></canvas> 664e41f4b71Sopenharmony_ci </div> 665e41f4b71Sopenharmony_ci ``` 666e41f4b71Sopenharmony_ci 667e41f4b71Sopenharmony_ci ```js 668e41f4b71Sopenharmony_ci //xxx.js 669e41f4b71Sopenharmony_ci export default { 670e41f4b71Sopenharmony_ci onShow() { 671e41f4b71Sopenharmony_ci const el =this.$refs.canvas; 672e41f4b71Sopenharmony_ci const ctx = el.getContext('2d'); 673e41f4b71Sopenharmony_ci ctx.strokeRect(30, 30, 200, 150); 674e41f4b71Sopenharmony_ci } 675e41f4b71Sopenharmony_ci } 676e41f4b71Sopenharmony_ci ``` 677e41f4b71Sopenharmony_ci 678e41f4b71Sopenharmony_ci  679e41f4b71Sopenharmony_ci 680e41f4b71Sopenharmony_ci 681e41f4b71Sopenharmony_ci### fillText 682e41f4b71Sopenharmony_ci 683e41f4b71Sopenharmony_cifillText(text: string, x: number, y: number): void 684e41f4b71Sopenharmony_ci 685e41f4b71Sopenharmony_ci绘制填充类文本。 686e41f4b71Sopenharmony_ci 687e41f4b71Sopenharmony_ci**参数:** 688e41f4b71Sopenharmony_ci 689e41f4b71Sopenharmony_ci| 参数 | 类型 | 描述 | 690e41f4b71Sopenharmony_ci| ---- | ------ | --------------- | 691e41f4b71Sopenharmony_ci| text | string | 需要绘制的文本内容。 | 692e41f4b71Sopenharmony_ci| x | number | 需要绘制的文本的左下角x坐标。 | 693e41f4b71Sopenharmony_ci| y | number | 需要绘制的文本的左下角y坐标。 | 694e41f4b71Sopenharmony_ci 695e41f4b71Sopenharmony_ci**示例:** 696e41f4b71Sopenharmony_ci ```html 697e41f4b71Sopenharmony_ci <!-- xxx.hml --> 698e41f4b71Sopenharmony_ci <div> 699e41f4b71Sopenharmony_ci <canvas ref="canvas" style="width: 200px; height: 150px; "></canvas> 700e41f4b71Sopenharmony_ci </div> 701e41f4b71Sopenharmony_ci ``` 702e41f4b71Sopenharmony_ci 703e41f4b71Sopenharmony_ci ```js 704e41f4b71Sopenharmony_ci //xxx.js 705e41f4b71Sopenharmony_ci export default { 706e41f4b71Sopenharmony_ci onShow() { 707e41f4b71Sopenharmony_ci const el =this.$refs.canvas; 708e41f4b71Sopenharmony_ci const ctx = el.getContext('2d'); 709e41f4b71Sopenharmony_ci ctx.font = '35px sans-serif'; 710e41f4b71Sopenharmony_ci ctx.fillText("Hello World!", 10, 60); 711e41f4b71Sopenharmony_ci } 712e41f4b71Sopenharmony_ci } 713e41f4b71Sopenharmony_ci ``` 714e41f4b71Sopenharmony_ci 715e41f4b71Sopenharmony_ci  716e41f4b71Sopenharmony_ci 717e41f4b71Sopenharmony_ci### strokeText 718e41f4b71Sopenharmony_ci 719e41f4b71Sopenharmony_cistrokeText(text: string, x: number, y: number): void 720e41f4b71Sopenharmony_ci 721e41f4b71Sopenharmony_ci绘制描边类文本。 722e41f4b71Sopenharmony_ci 723e41f4b71Sopenharmony_ci**参数:** 724e41f4b71Sopenharmony_ci 725e41f4b71Sopenharmony_ci| 参数 | 类型 | 描述 | 726e41f4b71Sopenharmony_ci| ---- | ------ | --------------- | 727e41f4b71Sopenharmony_ci| text | string | 需要绘制的文本内容。 | 728e41f4b71Sopenharmony_ci| x | number | 需要绘制的文本的左下角x坐标。 | 729e41f4b71Sopenharmony_ci| y | number | 需要绘制的文本的左下角y坐标。 | 730e41f4b71Sopenharmony_ci 731e41f4b71Sopenharmony_ci**示例:** 732e41f4b71Sopenharmony_ci ```html 733e41f4b71Sopenharmony_ci <!-- xxx.hml --> 734e41f4b71Sopenharmony_ci <div> 735e41f4b71Sopenharmony_ci <canvas ref="canvas" style="width: 200px; height: 150px; "></canvas> 736e41f4b71Sopenharmony_ci </div> 737e41f4b71Sopenharmony_ci ``` 738e41f4b71Sopenharmony_ci 739e41f4b71Sopenharmony_ci ```js 740e41f4b71Sopenharmony_ci //xxx.js 741e41f4b71Sopenharmony_ci export default { 742e41f4b71Sopenharmony_ci onShow() { 743e41f4b71Sopenharmony_ci const el =this.$refs.canvas; 744e41f4b71Sopenharmony_ci const ctx = el.getContext('2d'); 745e41f4b71Sopenharmony_ci ctx.font = '25px sans-serif'; 746e41f4b71Sopenharmony_ci ctx.strokeText("Hello World!", 10, 60); 747e41f4b71Sopenharmony_ci } 748e41f4b71Sopenharmony_ci } 749e41f4b71Sopenharmony_ci ``` 750e41f4b71Sopenharmony_ci 751e41f4b71Sopenharmony_ci  752e41f4b71Sopenharmony_ci 753e41f4b71Sopenharmony_ci### measureText 754e41f4b71Sopenharmony_ci 755e41f4b71Sopenharmony_cimeasureText(text: string): TextMetrics 756e41f4b71Sopenharmony_ci 757e41f4b71Sopenharmony_ci该方法返回一个文本测算的对象,通过该对象可以获取指定文本的宽度值。 758e41f4b71Sopenharmony_ci 759e41f4b71Sopenharmony_ci**参数:** 760e41f4b71Sopenharmony_ci 761e41f4b71Sopenharmony_ci| 参数 | 类型 | 描述 | 762e41f4b71Sopenharmony_ci| ---- | ------ | ---------- | 763e41f4b71Sopenharmony_ci| text | string | 需要进行测量的文本。 | 764e41f4b71Sopenharmony_ci 765e41f4b71Sopenharmony_ci**返回值:** 766e41f4b71Sopenharmony_ci 767e41f4b71Sopenharmony_ci| 类型 | 说明 | 768e41f4b71Sopenharmony_ci| ----------- | -------------------------------------- | 769e41f4b71Sopenharmony_ci| TextMetrics | 包含指定字体的宽度,该宽度可以通过TextMetrics.width来获取。 | 770e41f4b71Sopenharmony_ci 771e41f4b71Sopenharmony_ci**示例:** 772e41f4b71Sopenharmony_ci ```html 773e41f4b71Sopenharmony_ci <!-- xxx.hml --> 774e41f4b71Sopenharmony_ci <div> 775e41f4b71Sopenharmony_ci <canvas ref="canvas" style="width: 200px; height: 150px;"></canvas> 776e41f4b71Sopenharmony_ci </div> 777e41f4b71Sopenharmony_ci ``` 778e41f4b71Sopenharmony_ci 779e41f4b71Sopenharmony_ci ```js 780e41f4b71Sopenharmony_ci //xxx.js 781e41f4b71Sopenharmony_ci export default { 782e41f4b71Sopenharmony_ci onShow() { 783e41f4b71Sopenharmony_ci const el =this.$refs.canvas; 784e41f4b71Sopenharmony_ci const ctx = el.getContext('2d'); 785e41f4b71Sopenharmony_ci ctx.font = '20px sans-serif'; 786e41f4b71Sopenharmony_ci var txt = 'Hello World'; 787e41f4b71Sopenharmony_ci ctx.fillText("width:" + ctx.measureText(txt).width, 20, 60); 788e41f4b71Sopenharmony_ci ctx.fillText(txt, 20, 110); 789e41f4b71Sopenharmony_ci } 790e41f4b71Sopenharmony_ci } 791e41f4b71Sopenharmony_ci ``` 792e41f4b71Sopenharmony_ci 793e41f4b71Sopenharmony_ci  794e41f4b71Sopenharmony_ci 795e41f4b71Sopenharmony_ci 796e41f4b71Sopenharmony_ci### stroke 797e41f4b71Sopenharmony_cistroke(): void 798e41f4b71Sopenharmony_ci 799e41f4b71Sopenharmony_ci进行边框绘制操作。 800e41f4b71Sopenharmony_ci 801e41f4b71Sopenharmony_ci**示例:** 802e41f4b71Sopenharmony_ci ```html 803e41f4b71Sopenharmony_ci <!-- xxx.hml --> 804e41f4b71Sopenharmony_ci <div> 805e41f4b71Sopenharmony_ci <canvas ref="canvas" style="width: 200px; height: 150px; "></canvas> 806e41f4b71Sopenharmony_ci </div> 807e41f4b71Sopenharmony_ci ``` 808e41f4b71Sopenharmony_ci 809e41f4b71Sopenharmony_ci ```js 810e41f4b71Sopenharmony_ci //xxx.js 811e41f4b71Sopenharmony_ci export default { 812e41f4b71Sopenharmony_ci onShow() { 813e41f4b71Sopenharmony_ci const el =this.$refs.canvas; 814e41f4b71Sopenharmony_ci const ctx = el.getContext('2d'); 815e41f4b71Sopenharmony_ci ctx.moveTo(25, 25); 816e41f4b71Sopenharmony_ci ctx.lineTo(25, 250); 817e41f4b71Sopenharmony_ci ctx.lineWidth = '6'; 818e41f4b71Sopenharmony_ci ctx.strokeStyle = 'rgb(0,0,255)'; 819e41f4b71Sopenharmony_ci ctx.stroke(); 820e41f4b71Sopenharmony_ci } 821e41f4b71Sopenharmony_ci } 822e41f4b71Sopenharmony_ci ``` 823e41f4b71Sopenharmony_ci 824e41f4b71Sopenharmony_ci  825e41f4b71Sopenharmony_ci 826e41f4b71Sopenharmony_ci 827e41f4b71Sopenharmony_ci### beginPath 828e41f4b71Sopenharmony_cibeginPath(): void 829e41f4b71Sopenharmony_ci 830e41f4b71Sopenharmony_ci创建一个新的绘制路径。 831e41f4b71Sopenharmony_ci 832e41f4b71Sopenharmony_ci**示例:** 833e41f4b71Sopenharmony_ci ```html 834e41f4b71Sopenharmony_ci <!-- xxx.hml --> 835e41f4b71Sopenharmony_ci <div> 836e41f4b71Sopenharmony_ci <canvas ref="canvas" style="width: 500px; height: 500px; "></canvas> 837e41f4b71Sopenharmony_ci </div> 838e41f4b71Sopenharmony_ci ``` 839e41f4b71Sopenharmony_ci 840e41f4b71Sopenharmony_ci ```js 841e41f4b71Sopenharmony_ci //xxx.js 842e41f4b71Sopenharmony_ci export default { 843e41f4b71Sopenharmony_ci onShow() { 844e41f4b71Sopenharmony_ci const el =this.$refs.canvas; 845e41f4b71Sopenharmony_ci const ctx = el.getContext('2d'); 846e41f4b71Sopenharmony_ci ctx.beginPath(); 847e41f4b71Sopenharmony_ci ctx.lineWidth = '6'; 848e41f4b71Sopenharmony_ci ctx.strokeStyle = '#0000ff'; 849e41f4b71Sopenharmony_ci ctx.moveTo(15, 80); 850e41f4b71Sopenharmony_ci ctx.lineTo(280, 80); 851e41f4b71Sopenharmony_ci ctx.stroke(); 852e41f4b71Sopenharmony_ci } 853e41f4b71Sopenharmony_ci } 854e41f4b71Sopenharmony_ci ``` 855e41f4b71Sopenharmony_ci 856e41f4b71Sopenharmony_ci  857e41f4b71Sopenharmony_ci 858e41f4b71Sopenharmony_ci 859e41f4b71Sopenharmony_ci### moveTo 860e41f4b71Sopenharmony_cimoveTo(x: number, y: number): void 861e41f4b71Sopenharmony_ci 862e41f4b71Sopenharmony_ci路径从当前点移动到指定点。 863e41f4b71Sopenharmony_ci 864e41f4b71Sopenharmony_ci**参数:** 865e41f4b71Sopenharmony_ci 866e41f4b71Sopenharmony_ci| 参数 | 类型 | 描述 | 867e41f4b71Sopenharmony_ci| ---- | ------ | ------------------ | 868e41f4b71Sopenharmony_ci| x | number | 指定位置的x坐标。<br>单位:vp | 869e41f4b71Sopenharmony_ci| y | number | 指定位置的y坐标。<br>单位:vp | 870e41f4b71Sopenharmony_ci 871e41f4b71Sopenharmony_ci**示例:** 872e41f4b71Sopenharmony_ci ```html 873e41f4b71Sopenharmony_ci <!-- xxx.hml --> 874e41f4b71Sopenharmony_ci <div> 875e41f4b71Sopenharmony_ci <canvas ref="canvas" style="width: 200px; height: 150px; "></canvas> 876e41f4b71Sopenharmony_ci </div> 877e41f4b71Sopenharmony_ci ``` 878e41f4b71Sopenharmony_ci 879e41f4b71Sopenharmony_ci ```js 880e41f4b71Sopenharmony_ci //xxx.js 881e41f4b71Sopenharmony_ci export default { 882e41f4b71Sopenharmony_ci onShow() { 883e41f4b71Sopenharmony_ci const el =this.$refs.canvas; 884e41f4b71Sopenharmony_ci const ctx = el.getContext('2d'); 885e41f4b71Sopenharmony_ci ctx.beginPath(); 886e41f4b71Sopenharmony_ci ctx.moveTo(10, 10); 887e41f4b71Sopenharmony_ci ctx.lineTo(280, 160); 888e41f4b71Sopenharmony_ci ctx.stroke(); 889e41f4b71Sopenharmony_ci } 890e41f4b71Sopenharmony_ci } 891e41f4b71Sopenharmony_ci ``` 892e41f4b71Sopenharmony_ci 893e41f4b71Sopenharmony_ci  894e41f4b71Sopenharmony_ci 895e41f4b71Sopenharmony_ci 896e41f4b71Sopenharmony_ci### lineTo 897e41f4b71Sopenharmony_cilineTo(x: number, y: number): void 898e41f4b71Sopenharmony_ci 899e41f4b71Sopenharmony_ci从当前点到指定点进行路径连接。 900e41f4b71Sopenharmony_ci 901e41f4b71Sopenharmony_ci**参数:** 902e41f4b71Sopenharmony_ci 903e41f4b71Sopenharmony_ci| 参数 | 类型 | 描述 | 904e41f4b71Sopenharmony_ci| ---- | ------ | --------- | 905e41f4b71Sopenharmony_ci| x | number | 指定位置的x坐标。<br>单位:vp | 906e41f4b71Sopenharmony_ci| y | number | 指定位置的y坐标。<br>单位:vp | 907e41f4b71Sopenharmony_ci 908e41f4b71Sopenharmony_ci**示例:** 909e41f4b71Sopenharmony_ci ```html 910e41f4b71Sopenharmony_ci <!-- xxx.hml --> 911e41f4b71Sopenharmony_ci <div> 912e41f4b71Sopenharmony_ci <canvas ref="canvas" style="width: 200px; height: 150px; "></canvas> 913e41f4b71Sopenharmony_ci </div> 914e41f4b71Sopenharmony_ci ``` 915e41f4b71Sopenharmony_ci 916e41f4b71Sopenharmony_ci ```js 917e41f4b71Sopenharmony_ci //xxx.js 918e41f4b71Sopenharmony_ci export default { 919e41f4b71Sopenharmony_ci onShow() { 920e41f4b71Sopenharmony_ci const el =this.$refs.canvas; 921e41f4b71Sopenharmony_ci const ctx = el.getContext('2d'); 922e41f4b71Sopenharmony_ci ctx.beginPath(); 923e41f4b71Sopenharmony_ci ctx.moveTo(10, 10); 924e41f4b71Sopenharmony_ci ctx.lineTo(280, 160); 925e41f4b71Sopenharmony_ci ctx.stroke(); 926e41f4b71Sopenharmony_ci } 927e41f4b71Sopenharmony_ci } 928e41f4b71Sopenharmony_ci ``` 929e41f4b71Sopenharmony_ci 930e41f4b71Sopenharmony_ci  931e41f4b71Sopenharmony_ci 932e41f4b71Sopenharmony_ci 933e41f4b71Sopenharmony_ci### closePath 934e41f4b71Sopenharmony_ciclosePath(): void 935e41f4b71Sopenharmony_ci 936e41f4b71Sopenharmony_ci结束当前路径形成一个封闭路径。 937e41f4b71Sopenharmony_ci 938e41f4b71Sopenharmony_ci**示例:** 939e41f4b71Sopenharmony_ci ```html 940e41f4b71Sopenharmony_ci <!-- xxx.hml --> 941e41f4b71Sopenharmony_ci <div> 942e41f4b71Sopenharmony_ci <canvas ref="canvas" style="width: 200px; height: 150px;"></canvas> 943e41f4b71Sopenharmony_ci </div> 944e41f4b71Sopenharmony_ci ``` 945e41f4b71Sopenharmony_ci 946e41f4b71Sopenharmony_ci ```js 947e41f4b71Sopenharmony_ci //xxx.js 948e41f4b71Sopenharmony_ci export default { 949e41f4b71Sopenharmony_ci onShow() { 950e41f4b71Sopenharmony_ci const el =this.$refs.canvas; 951e41f4b71Sopenharmony_ci const ctx = el.getContext('2d'); 952e41f4b71Sopenharmony_ci ctx.beginPath(); 953e41f4b71Sopenharmony_ci ctx.moveTo(30, 30); 954e41f4b71Sopenharmony_ci ctx.lineTo(110, 30); 955e41f4b71Sopenharmony_ci ctx.lineTo(70, 90); 956e41f4b71Sopenharmony_ci ctx.closePath(); 957e41f4b71Sopenharmony_ci ctx.stroke(); 958e41f4b71Sopenharmony_ci } 959e41f4b71Sopenharmony_ci } 960e41f4b71Sopenharmony_ci ``` 961e41f4b71Sopenharmony_ci 962e41f4b71Sopenharmony_ci  963e41f4b71Sopenharmony_ci 964e41f4b71Sopenharmony_ci### createPattern 965e41f4b71Sopenharmony_ci 966e41f4b71Sopenharmony_cicreatePattern(image: Image, repetition: string): Object 967e41f4b71Sopenharmony_ci 968e41f4b71Sopenharmony_ci通过指定图像和重复方式创建图片填充的模板。 969e41f4b71Sopenharmony_ci 970e41f4b71Sopenharmony_ci**参数:** 971e41f4b71Sopenharmony_ci 972e41f4b71Sopenharmony_ci| 参数 | 类型 | 描述 | 973e41f4b71Sopenharmony_ci| ---------- | ------ | ---------------------------------------- | 974e41f4b71Sopenharmony_ci| image | Image | 图源对象,具体参考[Image对象](js-components-canvas-image.md)。 | 975e41f4b71Sopenharmony_ci| repetition | string | 设置图像重复的方式,取值为:'repeat'、'repeat-x'、 'repeat-y'、'no-repeat'。 | 976e41f4b71Sopenharmony_ci 977e41f4b71Sopenharmony_ci**返回值:** 978e41f4b71Sopenharmony_ci 979e41f4b71Sopenharmony_ci| 类型 | 说明 | 980e41f4b71Sopenharmony_ci| ------ | ----------------- | 981e41f4b71Sopenharmony_ci| Object | 指定图像填充的Pattern对象。 | 982e41f4b71Sopenharmony_ci 983e41f4b71Sopenharmony_ci**示例:** 984e41f4b71Sopenharmony_ci ```html 985e41f4b71Sopenharmony_ci <!-- xxx.hml --> 986e41f4b71Sopenharmony_ci <div> 987e41f4b71Sopenharmony_ci <canvas ref="canvas" style="width: 1000px; height: 1000px;"></canvas> 988e41f4b71Sopenharmony_ci </div> 989e41f4b71Sopenharmony_ci ``` 990e41f4b71Sopenharmony_ci 991e41f4b71Sopenharmony_ci ```js 992e41f4b71Sopenharmony_ci //xxx.js 993e41f4b71Sopenharmony_ci export default { 994e41f4b71Sopenharmony_ci onShow() { 995e41f4b71Sopenharmony_ci const el =this.$refs.canvas; 996e41f4b71Sopenharmony_ci const ctx = el.getContext('2d'); 997e41f4b71Sopenharmony_ci var img = new Image(); 998e41f4b71Sopenharmony_ci img.src = 'common/images/example.jpg'; 999e41f4b71Sopenharmony_ci var pat = ctx.createPattern(img, 'repeat'); 1000e41f4b71Sopenharmony_ci ctx.fillStyle = pat; 1001e41f4b71Sopenharmony_ci ctx.fillRect(0, 0, 500, 500); 1002e41f4b71Sopenharmony_ci } 1003e41f4b71Sopenharmony_ci } 1004e41f4b71Sopenharmony_ci ``` 1005e41f4b71Sopenharmony_ci 1006e41f4b71Sopenharmony_ci  1007e41f4b71Sopenharmony_ci 1008e41f4b71Sopenharmony_ci### bezierCurveTo 1009e41f4b71Sopenharmony_ci 1010e41f4b71Sopenharmony_cibezierCurveTo(cp1x: number, cp1y: number, cp2x: number, cp2y: number, x: number, y: number): void 1011e41f4b71Sopenharmony_ci 1012e41f4b71Sopenharmony_ci创建三次贝赛尔曲线的路径。 1013e41f4b71Sopenharmony_ci 1014e41f4b71Sopenharmony_ci**参数:** 1015e41f4b71Sopenharmony_ci 1016e41f4b71Sopenharmony_ci| 参数 | 类型 | 描述 | 1017e41f4b71Sopenharmony_ci| ---- | ------ | -------------- | 1018e41f4b71Sopenharmony_ci| cp1x | number | 第一个贝塞尔参数的x坐标值。 | 1019e41f4b71Sopenharmony_ci| cp1y | number | 第一个贝塞尔参数的y坐标值。 | 1020e41f4b71Sopenharmony_ci| cp2x | number | 第二个贝塞尔参数的x坐标值。 | 1021e41f4b71Sopenharmony_ci| cp2y | number | 第二个贝塞尔参数的y坐标值。 | 1022e41f4b71Sopenharmony_ci| x | number | 路径结束时的x坐标值。 | 1023e41f4b71Sopenharmony_ci| y | number | 路径结束时的y坐标值。 | 1024e41f4b71Sopenharmony_ci 1025e41f4b71Sopenharmony_ci**示例:** 1026e41f4b71Sopenharmony_ci ```html 1027e41f4b71Sopenharmony_ci <!-- xxx.hml --> 1028e41f4b71Sopenharmony_ci <div> 1029e41f4b71Sopenharmony_ci <canvas ref="canvas" style="width: 200px; height: 150px;"></canvas> 1030e41f4b71Sopenharmony_ci </div> 1031e41f4b71Sopenharmony_ci ``` 1032e41f4b71Sopenharmony_ci 1033e41f4b71Sopenharmony_ci ```js 1034e41f4b71Sopenharmony_ci //xxx.js 1035e41f4b71Sopenharmony_ci export default { 1036e41f4b71Sopenharmony_ci onShow() { 1037e41f4b71Sopenharmony_ci const el =this.$refs.canvas; 1038e41f4b71Sopenharmony_ci const ctx = el.getContext('2d'); 1039e41f4b71Sopenharmony_ci ctx.beginPath(); 1040e41f4b71Sopenharmony_ci ctx.moveTo(10, 10); 1041e41f4b71Sopenharmony_ci ctx.bezierCurveTo(20, 100, 200, 100, 200, 20); 1042e41f4b71Sopenharmony_ci ctx.stroke(); 1043e41f4b71Sopenharmony_ci } 1044e41f4b71Sopenharmony_ci } 1045e41f4b71Sopenharmony_ci ``` 1046e41f4b71Sopenharmony_ci 1047e41f4b71Sopenharmony_ci  1048e41f4b71Sopenharmony_ci 1049e41f4b71Sopenharmony_ci### quadraticCurveTo 1050e41f4b71Sopenharmony_ci 1051e41f4b71Sopenharmony_ciquadraticCurveTo(cpx: number, cpy: number, x: number, y: number): void 1052e41f4b71Sopenharmony_ci 1053e41f4b71Sopenharmony_ci创建二次贝赛尔曲线的路径。 1054e41f4b71Sopenharmony_ci 1055e41f4b71Sopenharmony_ci**参数:** 1056e41f4b71Sopenharmony_ci 1057e41f4b71Sopenharmony_ci| 参数 | 类型 | 描述 | 1058e41f4b71Sopenharmony_ci| ---- | ------ | ----------- | 1059e41f4b71Sopenharmony_ci| cpx | number | 贝塞尔参数的x坐标值。 | 1060e41f4b71Sopenharmony_ci| cpy | number | 贝塞尔参数的y坐标值。 | 1061e41f4b71Sopenharmony_ci| x | number | 路径结束时的x坐标值。 | 1062e41f4b71Sopenharmony_ci| y | number | 路径结束时的y坐标值。 | 1063e41f4b71Sopenharmony_ci 1064e41f4b71Sopenharmony_ci**示例:** 1065e41f4b71Sopenharmony_ci ```html 1066e41f4b71Sopenharmony_ci <!-- xxx.hml --> 1067e41f4b71Sopenharmony_ci <div> 1068e41f4b71Sopenharmony_ci <canvas ref="canvas" style="width: 200px; height: 150px; "></canvas> 1069e41f4b71Sopenharmony_ci </div> 1070e41f4b71Sopenharmony_ci ``` 1071e41f4b71Sopenharmony_ci 1072e41f4b71Sopenharmony_ci ```js 1073e41f4b71Sopenharmony_ci //xxx.js 1074e41f4b71Sopenharmony_ci export default { 1075e41f4b71Sopenharmony_ci onShow() { 1076e41f4b71Sopenharmony_ci const el =this.$refs.canvas; 1077e41f4b71Sopenharmony_ci const ctx = el.getContext('2d'); 1078e41f4b71Sopenharmony_ci ctx.beginPath(); 1079e41f4b71Sopenharmony_ci ctx.moveTo(20, 20); 1080e41f4b71Sopenharmony_ci ctx.quadraticCurveTo(100, 100, 200, 20); 1081e41f4b71Sopenharmony_ci ctx.stroke(); 1082e41f4b71Sopenharmony_ci } 1083e41f4b71Sopenharmony_ci } 1084e41f4b71Sopenharmony_ci ``` 1085e41f4b71Sopenharmony_ci 1086e41f4b71Sopenharmony_ci  1087e41f4b71Sopenharmony_ci 1088e41f4b71Sopenharmony_ci 1089e41f4b71Sopenharmony_ci### arc 1090e41f4b71Sopenharmony_ciarc(x: number, y: number, radius: number, startAngle: number, endAngle: number, anticlockwise: boolean): void 1091e41f4b71Sopenharmony_ci 1092e41f4b71Sopenharmony_ci绘制弧线路径。 1093e41f4b71Sopenharmony_ci 1094e41f4b71Sopenharmony_ci**参数:** 1095e41f4b71Sopenharmony_ci 1096e41f4b71Sopenharmony_ci| 参数 | 类型 | 描述 | 1097e41f4b71Sopenharmony_ci| ------------- | ------- | ---------- | 1098e41f4b71Sopenharmony_ci| x | number | 弧线圆心的x坐标值。 | 1099e41f4b71Sopenharmony_ci| y | number | 弧线圆心的y坐标值。 | 1100e41f4b71Sopenharmony_ci| radius | number | 弧线的圆半径。 | 1101e41f4b71Sopenharmony_ci| startAngle | number | 弧线的起始弧度。 | 1102e41f4b71Sopenharmony_ci| endAngle | number | 弧线的终止弧度。 | 1103e41f4b71Sopenharmony_ci| anticlockwise | boolean | 是否逆时针绘制圆弧。 | 1104e41f4b71Sopenharmony_ci 1105e41f4b71Sopenharmony_ci**示例:** 1106e41f4b71Sopenharmony_ci ```html 1107e41f4b71Sopenharmony_ci <!-- xxx.hml --> 1108e41f4b71Sopenharmony_ci <div> 1109e41f4b71Sopenharmony_ci <canvas ref="canvas" style="width: 200px; height: 150px;"></canvas> 1110e41f4b71Sopenharmony_ci </div> 1111e41f4b71Sopenharmony_ci ``` 1112e41f4b71Sopenharmony_ci 1113e41f4b71Sopenharmony_ci ```js 1114e41f4b71Sopenharmony_ci //xxx.js 1115e41f4b71Sopenharmony_ci export default { 1116e41f4b71Sopenharmony_ci onShow() { 1117e41f4b71Sopenharmony_ci const el =this.$refs.canvas; 1118e41f4b71Sopenharmony_ci const ctx = el.getContext('2d'); 1119e41f4b71Sopenharmony_ci ctx.beginPath(); 1120e41f4b71Sopenharmony_ci ctx.arc(100, 75, 50, 0, 6.28); 1121e41f4b71Sopenharmony_ci ctx.stroke(); 1122e41f4b71Sopenharmony_ci } 1123e41f4b71Sopenharmony_ci } 1124e41f4b71Sopenharmony_ci ``` 1125e41f4b71Sopenharmony_ci 1126e41f4b71Sopenharmony_ci  1127e41f4b71Sopenharmony_ci 1128e41f4b71Sopenharmony_ci### arcTo 1129e41f4b71Sopenharmony_ci 1130e41f4b71Sopenharmony_ciarcTo(x1: number, y1: number, x2: number, y2: number, radius: number): void 1131e41f4b71Sopenharmony_ci 1132e41f4b71Sopenharmony_ci依据圆弧经过的点和圆弧半径创建圆弧路径。 1133e41f4b71Sopenharmony_ci 1134e41f4b71Sopenharmony_ci**参数:** 1135e41f4b71Sopenharmony_ci 1136e41f4b71Sopenharmony_ci| 参数 | 类型 | 描述 | 1137e41f4b71Sopenharmony_ci| ------ | ------ | --------------- | 1138e41f4b71Sopenharmony_ci| x1 | number | 圆弧经过的第一个点的x坐标值。 | 1139e41f4b71Sopenharmony_ci| y1 | number | 圆弧经过的第一个点的y坐标值。 | 1140e41f4b71Sopenharmony_ci| x2 | number | 圆弧经过的第二个点的x坐标值。 | 1141e41f4b71Sopenharmony_ci| y2 | number | 圆弧经过的第二个点的y坐标值。 | 1142e41f4b71Sopenharmony_ci| radius | number | 圆弧的圆半径值。 | 1143e41f4b71Sopenharmony_ci 1144e41f4b71Sopenharmony_ci**示例:** 1145e41f4b71Sopenharmony_ci ```html 1146e41f4b71Sopenharmony_ci <!-- xxx.hml --> 1147e41f4b71Sopenharmony_ci <div> 1148e41f4b71Sopenharmony_ci <canvas ref="canvas" style="width: 200px; height: 150px;"></canvas> 1149e41f4b71Sopenharmony_ci </div> 1150e41f4b71Sopenharmony_ci ``` 1151e41f4b71Sopenharmony_ci 1152e41f4b71Sopenharmony_ci ```js 1153e41f4b71Sopenharmony_ci //xxx.js 1154e41f4b71Sopenharmony_ci export default { 1155e41f4b71Sopenharmony_ci onShow() { 1156e41f4b71Sopenharmony_ci const el =this.$refs.canvas; 1157e41f4b71Sopenharmony_ci const ctx = el.getContext('2d'); 1158e41f4b71Sopenharmony_ci ctx.moveTo(100, 20); 1159e41f4b71Sopenharmony_ci ctx.arcTo(150, 20, 150, 70, 50); // Create an arc 1160e41f4b71Sopenharmony_ci ctx.stroke(); 1161e41f4b71Sopenharmony_ci } 1162e41f4b71Sopenharmony_ci } 1163e41f4b71Sopenharmony_ci ``` 1164e41f4b71Sopenharmony_ci 1165e41f4b71Sopenharmony_ci  1166e41f4b71Sopenharmony_ci 1167e41f4b71Sopenharmony_ci### ellipse<sup>6+</sup> 1168e41f4b71Sopenharmony_ci 1169e41f4b71Sopenharmony_ciellipse(x: number, y: number, radiusX: number, radiusY: number, rotation: number, startAngle: number, endAngle: number, anticlockwise: number): void 1170e41f4b71Sopenharmony_ci 1171e41f4b71Sopenharmony_ci在规定的矩形区域绘制一个椭圆。 1172e41f4b71Sopenharmony_ci 1173e41f4b71Sopenharmony_ci**参数:** 1174e41f4b71Sopenharmony_ci 1175e41f4b71Sopenharmony_ci| 参数 | 类型 | 描述 | 1176e41f4b71Sopenharmony_ci| ------------- | ------ | ------------------------------------ | 1177e41f4b71Sopenharmony_ci| x | number | 椭圆圆心的x轴坐标。 | 1178e41f4b71Sopenharmony_ci| y | number | 椭圆圆心的y轴坐标。 | 1179e41f4b71Sopenharmony_ci| radiusX | number | 椭圆x轴的半径长度。 | 1180e41f4b71Sopenharmony_ci| radiusY | number | 椭圆y轴的半径长度。 | 1181e41f4b71Sopenharmony_ci| rotation | number | 椭圆的旋转角度,单位为弧度。 | 1182e41f4b71Sopenharmony_ci| startAngle | number | 椭圆绘制的起始点角度,以弧度表示。 | 1183e41f4b71Sopenharmony_ci| endAngle | number | 椭圆绘制的结束点角度,以弧度表示。 | 1184e41f4b71Sopenharmony_ci| anticlockwise | number | 是否以逆时针方向绘制椭圆,0为顺时针,1为逆时针。(可选参数,默认为0) | 1185e41f4b71Sopenharmony_ci 1186e41f4b71Sopenharmony_ci**示例:** 1187e41f4b71Sopenharmony_ci ```html 1188e41f4b71Sopenharmony_ci <!-- xxx.hml --> 1189e41f4b71Sopenharmony_ci <div> 1190e41f4b71Sopenharmony_ci <canvas ref="canvas" style="width: 500px; height: 500px; background-color: #ffff00;"></canvas> 1191e41f4b71Sopenharmony_ci </div> 1192e41f4b71Sopenharmony_ci ``` 1193e41f4b71Sopenharmony_ci 1194e41f4b71Sopenharmony_ci ```js 1195e41f4b71Sopenharmony_ci //xxx.js 1196e41f4b71Sopenharmony_ci export default { 1197e41f4b71Sopenharmony_ci onShow() { 1198e41f4b71Sopenharmony_ci const el =this.$refs.canvas; 1199e41f4b71Sopenharmony_ci const ctx = el.getContext('2d'); 1200e41f4b71Sopenharmony_ci ctx.beginPath(); 1201e41f4b71Sopenharmony_ci ctx.ellipse(200, 200, 50, 100, Math.PI * 0.25, Math.PI * 0.5, Math.PI, 1); 1202e41f4b71Sopenharmony_ci ctx.stroke(); 1203e41f4b71Sopenharmony_ci } 1204e41f4b71Sopenharmony_ci } 1205e41f4b71Sopenharmony_ci ``` 1206e41f4b71Sopenharmony_ci 1207e41f4b71Sopenharmony_ci  1208e41f4b71Sopenharmony_ci 1209e41f4b71Sopenharmony_ci 1210e41f4b71Sopenharmony_ci### rect 1211e41f4b71Sopenharmony_cirect(x: number, y: number, width: number, height: number): void 1212e41f4b71Sopenharmony_ci 1213e41f4b71Sopenharmony_ci创建矩形路径。 1214e41f4b71Sopenharmony_ci 1215e41f4b71Sopenharmony_ci**参数:** 1216e41f4b71Sopenharmony_ci 1217e41f4b71Sopenharmony_ci| 参数 | 类型 | 描述 | 1218e41f4b71Sopenharmony_ci| ------ | ------ | ------------- | 1219e41f4b71Sopenharmony_ci| x | number | 指定矩形的左上角x坐标值。 | 1220e41f4b71Sopenharmony_ci| y | number | 指定矩形的左上角y坐标值。 | 1221e41f4b71Sopenharmony_ci| width | number | 指定矩形的宽度。 | 1222e41f4b71Sopenharmony_ci| height | number | 指定矩形的高度。 | 1223e41f4b71Sopenharmony_ci 1224e41f4b71Sopenharmony_ci**示例:** 1225e41f4b71Sopenharmony_ci ```html 1226e41f4b71Sopenharmony_ci <!-- xxx.hml --> 1227e41f4b71Sopenharmony_ci <div> 1228e41f4b71Sopenharmony_ci <canvas ref="canvas" style="width: 200px; height: 150px; "></canvas> 1229e41f4b71Sopenharmony_ci </div> 1230e41f4b71Sopenharmony_ci ``` 1231e41f4b71Sopenharmony_ci 1232e41f4b71Sopenharmony_ci ```js 1233e41f4b71Sopenharmony_ci //xxx.js 1234e41f4b71Sopenharmony_ci export default { 1235e41f4b71Sopenharmony_ci onShow() { 1236e41f4b71Sopenharmony_ci const el =this.$refs.canvas; 1237e41f4b71Sopenharmony_ci const ctx = el.getContext('2d'); 1238e41f4b71Sopenharmony_ci ctx.rect(20, 20, 100, 100); // Create a 100*100 rectangle at (20, 20) 1239e41f4b71Sopenharmony_ci ctx.stroke(); // Draw it 1240e41f4b71Sopenharmony_ci } 1241e41f4b71Sopenharmony_ci } 1242e41f4b71Sopenharmony_ci ``` 1243e41f4b71Sopenharmony_ci 1244e41f4b71Sopenharmony_ci  1245e41f4b71Sopenharmony_ci 1246e41f4b71Sopenharmony_ci### fill 1247e41f4b71Sopenharmony_ci 1248e41f4b71Sopenharmony_cifill(): void 1249e41f4b71Sopenharmony_ci 1250e41f4b71Sopenharmony_ci对封闭路径进行填充。 1251e41f4b71Sopenharmony_ci 1252e41f4b71Sopenharmony_ci**示例:** 1253e41f4b71Sopenharmony_ci ```html 1254e41f4b71Sopenharmony_ci <!-- xxx.hml --> 1255e41f4b71Sopenharmony_ci <div> 1256e41f4b71Sopenharmony_ci <canvas ref="canvas" style="width: 200px; height: 150px;"></canvas> 1257e41f4b71Sopenharmony_ci </div> 1258e41f4b71Sopenharmony_ci ``` 1259e41f4b71Sopenharmony_ci 1260e41f4b71Sopenharmony_ci ```js 1261e41f4b71Sopenharmony_ci //xxx.js 1262e41f4b71Sopenharmony_ci export default { 1263e41f4b71Sopenharmony_ci onShow() { 1264e41f4b71Sopenharmony_ci const el =this.$refs.canvas; 1265e41f4b71Sopenharmony_ci const ctx = el.getContext('2d'); 1266e41f4b71Sopenharmony_ci ctx.rect(20, 20, 100, 100); // Create a 100*100 rectangle at (20, 20) 1267e41f4b71Sopenharmony_ci ctx.fill(); // Draw it in default setting 1268e41f4b71Sopenharmony_ci } 1269e41f4b71Sopenharmony_ci } 1270e41f4b71Sopenharmony_ci ``` 1271e41f4b71Sopenharmony_ci 1272e41f4b71Sopenharmony_ci  1273e41f4b71Sopenharmony_ci 1274e41f4b71Sopenharmony_ci### clip 1275e41f4b71Sopenharmony_ci 1276e41f4b71Sopenharmony_ciclip(): void 1277e41f4b71Sopenharmony_ci 1278e41f4b71Sopenharmony_ci设置当前路径为剪切路径。 1279e41f4b71Sopenharmony_ci 1280e41f4b71Sopenharmony_ci**示例:** 1281e41f4b71Sopenharmony_ci ```html 1282e41f4b71Sopenharmony_ci <!-- xxx.hml --> 1283e41f4b71Sopenharmony_ci <div> 1284e41f4b71Sopenharmony_ci <canvas ref="canvas" style="width: 200px; height: 150px;"></canvas> 1285e41f4b71Sopenharmony_ci </div> 1286e41f4b71Sopenharmony_ci ``` 1287e41f4b71Sopenharmony_ci 1288e41f4b71Sopenharmony_ci ```js 1289e41f4b71Sopenharmony_ci //xxx.js 1290e41f4b71Sopenharmony_ci export default { 1291e41f4b71Sopenharmony_ci onShow() { 1292e41f4b71Sopenharmony_ci const el =this.$refs.canvas; 1293e41f4b71Sopenharmony_ci const ctx = el.getContext('2d'); 1294e41f4b71Sopenharmony_ci ctx.rect(0, 0, 200, 200); 1295e41f4b71Sopenharmony_ci ctx.stroke(); 1296e41f4b71Sopenharmony_ci ctx.clip(); 1297e41f4b71Sopenharmony_ci // Draw red rectangle after clip 1298e41f4b71Sopenharmony_ci ctx.fillStyle = "rgb(255,0,0)"; 1299e41f4b71Sopenharmony_ci ctx.fillRect(0, 0, 150, 150); 1300e41f4b71Sopenharmony_ci } 1301e41f4b71Sopenharmony_ci } 1302e41f4b71Sopenharmony_ci ``` 1303e41f4b71Sopenharmony_ci 1304e41f4b71Sopenharmony_ci  1305e41f4b71Sopenharmony_ci 1306e41f4b71Sopenharmony_ci### rotate 1307e41f4b71Sopenharmony_ci 1308e41f4b71Sopenharmony_cirotate(rotate: number): void 1309e41f4b71Sopenharmony_ci 1310e41f4b71Sopenharmony_ci针对当前坐标轴进行顺时针旋转。 1311e41f4b71Sopenharmony_ci 1312e41f4b71Sopenharmony_ci**参数:** 1313e41f4b71Sopenharmony_ci 1314e41f4b71Sopenharmony_ci| 参数 | 类型 | 描述 | 1315e41f4b71Sopenharmony_ci| ------ | ------ | ---------------------------------------- | 1316e41f4b71Sopenharmony_ci| rotate | number | 设置顺时针旋转的弧度值,可以通过Math.PI / 180将角度转换为弧度值。 | 1317e41f4b71Sopenharmony_ci 1318e41f4b71Sopenharmony_ci**示例:** 1319e41f4b71Sopenharmony_ci ```html 1320e41f4b71Sopenharmony_ci <!-- xxx.hml --> 1321e41f4b71Sopenharmony_ci <div> 1322e41f4b71Sopenharmony_ci <canvas ref="canvas" style="width: 200px; height: 150px;"></canvas> 1323e41f4b71Sopenharmony_ci </div> 1324e41f4b71Sopenharmony_ci ``` 1325e41f4b71Sopenharmony_ci 1326e41f4b71Sopenharmony_ci ```js 1327e41f4b71Sopenharmony_ci //xxx.js 1328e41f4b71Sopenharmony_ci export default { 1329e41f4b71Sopenharmony_ci onShow() { 1330e41f4b71Sopenharmony_ci const el =this.$refs.canvas; 1331e41f4b71Sopenharmony_ci const ctx = el.getContext('2d'); 1332e41f4b71Sopenharmony_ci ctx.rotate(45 * Math.PI / 180); // Rotate the rectangle 45 degrees 1333e41f4b71Sopenharmony_ci ctx.fillRect(70, 20, 50, 50); 1334e41f4b71Sopenharmony_ci } 1335e41f4b71Sopenharmony_ci } 1336e41f4b71Sopenharmony_ci ``` 1337e41f4b71Sopenharmony_ci 1338e41f4b71Sopenharmony_ci  1339e41f4b71Sopenharmony_ci 1340e41f4b71Sopenharmony_ci### scale 1341e41f4b71Sopenharmony_ci 1342e41f4b71Sopenharmony_ciscale(x: number, y: number): void 1343e41f4b71Sopenharmony_ci 1344e41f4b71Sopenharmony_ci设置canvas画布的缩放变换属性,后续的绘制操作将按照缩放比例进行缩放。 1345e41f4b71Sopenharmony_ci 1346e41f4b71Sopenharmony_ci**参数:** 1347e41f4b71Sopenharmony_ci 1348e41f4b71Sopenharmony_ci| 参数 | 类型 | 描述 | 1349e41f4b71Sopenharmony_ci| ---- | ------ | ----------- | 1350e41f4b71Sopenharmony_ci| x | number | 设置水平方向的缩放值。 | 1351e41f4b71Sopenharmony_ci| y | number | 设置垂直方向的缩放值。 | 1352e41f4b71Sopenharmony_ci 1353e41f4b71Sopenharmony_ci**示例:** 1354e41f4b71Sopenharmony_ci ```html 1355e41f4b71Sopenharmony_ci <!-- xxx.hml --> 1356e41f4b71Sopenharmony_ci <div> 1357e41f4b71Sopenharmony_ci <canvas ref="canvas" style="width: 200px; height: 150px;"></canvas> 1358e41f4b71Sopenharmony_ci </div> 1359e41f4b71Sopenharmony_ci ``` 1360e41f4b71Sopenharmony_ci 1361e41f4b71Sopenharmony_ci ```js 1362e41f4b71Sopenharmony_ci //xxx.js 1363e41f4b71Sopenharmony_ci export default { 1364e41f4b71Sopenharmony_ci onShow() { 1365e41f4b71Sopenharmony_ci const el =this.$refs.canvas; 1366e41f4b71Sopenharmony_ci const ctx = el.getContext('2d'); 1367e41f4b71Sopenharmony_ci ctx.strokeRect(10, 10, 25, 25); 1368e41f4b71Sopenharmony_ci ctx.scale(2, 2);// Scale to 200% 1369e41f4b71Sopenharmony_ci ctx.strokeRect(10, 10, 25, 25); 1370e41f4b71Sopenharmony_ci } 1371e41f4b71Sopenharmony_ci } 1372e41f4b71Sopenharmony_ci ``` 1373e41f4b71Sopenharmony_ci 1374e41f4b71Sopenharmony_ci  1375e41f4b71Sopenharmony_ci 1376e41f4b71Sopenharmony_ci### transform 1377e41f4b71Sopenharmony_ci 1378e41f4b71Sopenharmony_citransform(scaleX: number, skewX: number, skewY: number, scale: number, translateX: number, translateY: number): void 1379e41f4b71Sopenharmony_ci 1380e41f4b71Sopenharmony_citransform方法对应一个变换矩阵,想对一个图形进行变化的时候,只要设置此变换矩阵相应的参数,对图形的各个定点的坐标分别乘以这个矩阵,就能得到新的定点的坐标。矩阵变换效果可叠加。 1381e41f4b71Sopenharmony_ci 1382e41f4b71Sopenharmony_ci> **说明:** 1383e41f4b71Sopenharmony_ci> 变换后的坐标计算方式(x和y为变换前坐标,x'和y'为变换后坐标): 1384e41f4b71Sopenharmony_ci> 1385e41f4b71Sopenharmony_ci> - x' = scaleX \* x + skewY \* y + translateX 1386e41f4b71Sopenharmony_ci> 1387e41f4b71Sopenharmony_ci> - y' = skewX \* x + scaleY \* y + translateY 1388e41f4b71Sopenharmony_ci 1389e41f4b71Sopenharmony_ci**参数:** 1390e41f4b71Sopenharmony_ci 1391e41f4b71Sopenharmony_ci| 参数 | 类型 | 描述 | 1392e41f4b71Sopenharmony_ci| ---------- | ------ | -------- | 1393e41f4b71Sopenharmony_ci| scaleX | number | 指定水平缩放值。 | 1394e41f4b71Sopenharmony_ci| skewX | number | 指定水平倾斜值。 | 1395e41f4b71Sopenharmony_ci| skewY | number | 指定垂直倾斜值。 | 1396e41f4b71Sopenharmony_ci| scaleY | number | 指定垂直缩放值。 | 1397e41f4b71Sopenharmony_ci| translateX | number | 指定水平移动值。 | 1398e41f4b71Sopenharmony_ci| translateY | number | 指定垂直移动值。 | 1399e41f4b71Sopenharmony_ci 1400e41f4b71Sopenharmony_ci**示例:** 1401e41f4b71Sopenharmony_ci ```html 1402e41f4b71Sopenharmony_ci <!-- xxx.hml --> 1403e41f4b71Sopenharmony_ci <div> 1404e41f4b71Sopenharmony_ci <canvas ref="canvas" style="width: 200px; height: 150px;"></canvas> 1405e41f4b71Sopenharmony_ci </div> 1406e41f4b71Sopenharmony_ci ``` 1407e41f4b71Sopenharmony_ci 1408e41f4b71Sopenharmony_ci ```js 1409e41f4b71Sopenharmony_ci //xxx.js 1410e41f4b71Sopenharmony_ci export default { 1411e41f4b71Sopenharmony_ci onShow() { 1412e41f4b71Sopenharmony_ci const el =this.$refs.canvas; 1413e41f4b71Sopenharmony_ci const ctx = el.getContext('2d'); 1414e41f4b71Sopenharmony_ci ctx.fillStyle = 'rgb(0,0,0)'; 1415e41f4b71Sopenharmony_ci ctx.fillRect(0, 0, 100, 100) 1416e41f4b71Sopenharmony_ci ctx.transform(1, 0.5, -0.5, 1, 10, 10); 1417e41f4b71Sopenharmony_ci ctx.fillStyle = 'rgb(255,0,0)'; 1418e41f4b71Sopenharmony_ci ctx.fillRect(0, 0, 100, 100); 1419e41f4b71Sopenharmony_ci ctx.transform(1, 0.5, -0.5, 1, 10, 10); 1420e41f4b71Sopenharmony_ci ctx.fillStyle = 'rgb(0,0,255)'; 1421e41f4b71Sopenharmony_ci ctx.fillRect(0, 0, 100, 100); 1422e41f4b71Sopenharmony_ci } 1423e41f4b71Sopenharmony_ci } 1424e41f4b71Sopenharmony_ci ``` 1425e41f4b71Sopenharmony_ci 1426e41f4b71Sopenharmony_ci  1427e41f4b71Sopenharmony_ci 1428e41f4b71Sopenharmony_ci### setTransform 1429e41f4b71Sopenharmony_ci 1430e41f4b71Sopenharmony_cisetTransform(scaleX: number, skewX: number, skewY: number, scale: number, translateX: number, translateY: number): void 1431e41f4b71Sopenharmony_ci 1432e41f4b71Sopenharmony_cisetTransform方法使用的参数和transform()方法相同,但setTransform()方法会重置现有的变换矩阵并创建新的变换矩阵。 1433e41f4b71Sopenharmony_ci 1434e41f4b71Sopenharmony_ci**参数:** 1435e41f4b71Sopenharmony_ci 1436e41f4b71Sopenharmony_ci| 参数 | 类型 | 描述 | 1437e41f4b71Sopenharmony_ci| ---------- | ------ | -------- | 1438e41f4b71Sopenharmony_ci| scaleX | number | 指定水平缩放值。 | 1439e41f4b71Sopenharmony_ci| skewX | number | 指定水平倾斜值。 | 1440e41f4b71Sopenharmony_ci| skewY | number | 指定垂直倾斜值。 | 1441e41f4b71Sopenharmony_ci| scaleY | number | 指定垂直缩放值。 | 1442e41f4b71Sopenharmony_ci| translateX | number | 指定水平移动值。 | 1443e41f4b71Sopenharmony_ci| translateY | number | 指定垂直移动值。 | 1444e41f4b71Sopenharmony_ci 1445e41f4b71Sopenharmony_ci**示例:** 1446e41f4b71Sopenharmony_ci ```html 1447e41f4b71Sopenharmony_ci <!-- xxx.hml --> 1448e41f4b71Sopenharmony_ci <div> 1449e41f4b71Sopenharmony_ci <canvas ref="canvas" style="width: 200px; height: 150px;"></canvas> 1450e41f4b71Sopenharmony_ci </div> 1451e41f4b71Sopenharmony_ci ``` 1452e41f4b71Sopenharmony_ci 1453e41f4b71Sopenharmony_ci ```js 1454e41f4b71Sopenharmony_ci //xxx.js 1455e41f4b71Sopenharmony_ci export default { 1456e41f4b71Sopenharmony_ci onShow() { 1457e41f4b71Sopenharmony_ci const el =this.$refs.canvas; 1458e41f4b71Sopenharmony_ci const ctx = el.getContext('2d'); 1459e41f4b71Sopenharmony_ci ctx.fillStyle = 'rgb(255,0,0)'; 1460e41f4b71Sopenharmony_ci ctx.fillRect(0, 0, 100, 100) 1461e41f4b71Sopenharmony_ci ctx.setTransform(1,0.5, -0.5, 1, 10, 10); 1462e41f4b71Sopenharmony_ci ctx.fillStyle = 'rgb(0,0,255)'; 1463e41f4b71Sopenharmony_ci ctx.fillRect(0, 0, 100, 100); 1464e41f4b71Sopenharmony_ci } 1465e41f4b71Sopenharmony_ci } 1466e41f4b71Sopenharmony_ci ``` 1467e41f4b71Sopenharmony_ci 1468e41f4b71Sopenharmony_ci  1469e41f4b71Sopenharmony_ci 1470e41f4b71Sopenharmony_ci### translate 1471e41f4b71Sopenharmony_ci 1472e41f4b71Sopenharmony_citranslate(x: number, y: number): void 1473e41f4b71Sopenharmony_ci 1474e41f4b71Sopenharmony_ci移动当前坐标系的原点。 1475e41f4b71Sopenharmony_ci 1476e41f4b71Sopenharmony_ci**参数:** 1477e41f4b71Sopenharmony_ci 1478e41f4b71Sopenharmony_ci| 参数 | 类型 | 描述 | 1479e41f4b71Sopenharmony_ci| ---- | ------ | -------- | 1480e41f4b71Sopenharmony_ci| x | number | 设置水平平移量。 | 1481e41f4b71Sopenharmony_ci| y | number | 设置竖直平移量。 | 1482e41f4b71Sopenharmony_ci 1483e41f4b71Sopenharmony_ci**示例:** 1484e41f4b71Sopenharmony_ci ```html 1485e41f4b71Sopenharmony_ci <!-- xxx.hml --> 1486e41f4b71Sopenharmony_ci <div> 1487e41f4b71Sopenharmony_ci <canvas ref="canvas" style="width: 200px; height: 150px;"></canvas> 1488e41f4b71Sopenharmony_ci </div> 1489e41f4b71Sopenharmony_ci ``` 1490e41f4b71Sopenharmony_ci 1491e41f4b71Sopenharmony_ci ```js 1492e41f4b71Sopenharmony_ci //xxx.js 1493e41f4b71Sopenharmony_ci export default { 1494e41f4b71Sopenharmony_ci onShow() { 1495e41f4b71Sopenharmony_ci const el =this.$refs.canvas; 1496e41f4b71Sopenharmony_ci const ctx = el.getContext('2d'); 1497e41f4b71Sopenharmony_ci ctx.fillRect(10, 10, 50, 50); 1498e41f4b71Sopenharmony_ci ctx.translate(70, 70); 1499e41f4b71Sopenharmony_ci ctx.fillRect(10, 10, 50, 50); 1500e41f4b71Sopenharmony_ci } 1501e41f4b71Sopenharmony_ci } 1502e41f4b71Sopenharmony_ci ``` 1503e41f4b71Sopenharmony_ci 1504e41f4b71Sopenharmony_ci  1505e41f4b71Sopenharmony_ci 1506e41f4b71Sopenharmony_ci### createPath2D<sup>6+</sup> 1507e41f4b71Sopenharmony_ci 1508e41f4b71Sopenharmony_cicreatePath2D(path: Path2D, cmds: string): Path2D 1509e41f4b71Sopenharmony_ci 1510e41f4b71Sopenharmony_ci创建一个Path2D对象。 1511e41f4b71Sopenharmony_ci 1512e41f4b71Sopenharmony_ci**参数:** 1513e41f4b71Sopenharmony_ci 1514e41f4b71Sopenharmony_ci| 参数 | 类型 | 描述 | 1515e41f4b71Sopenharmony_ci| ---- | ------ | -------------- | 1516e41f4b71Sopenharmony_ci| path | Path2D | Path2D对象。 | 1517e41f4b71Sopenharmony_ci| cmds | string | SVG的Path描述字符串。 | 1518e41f4b71Sopenharmony_ci 1519e41f4b71Sopenharmony_ci**返回值:** 1520e41f4b71Sopenharmony_ci 1521e41f4b71Sopenharmony_ci [Path2D对象](js-components-canvas-path2d.md) 1522e41f4b71Sopenharmony_ci 1523e41f4b71Sopenharmony_ci**示例:** 1524e41f4b71Sopenharmony_ci ```html 1525e41f4b71Sopenharmony_ci <!-- xxx.hml --> 1526e41f4b71Sopenharmony_ci <div> 1527e41f4b71Sopenharmony_ci <canvas ref="canvas" style="width: 500px; height: 500px; background-color: #ffff00;"></canvas> 1528e41f4b71Sopenharmony_ci </div> 1529e41f4b71Sopenharmony_ci ``` 1530e41f4b71Sopenharmony_ci 1531e41f4b71Sopenharmony_ci ```js 1532e41f4b71Sopenharmony_ci //xxx.js 1533e41f4b71Sopenharmony_ci export default { 1534e41f4b71Sopenharmony_ci onShow() { 1535e41f4b71Sopenharmony_ci const el =this.$refs.canvas; 1536e41f4b71Sopenharmony_ci const ctx = el.getContext('2d'); 1537e41f4b71Sopenharmony_ci var path1 = ctx.createPath2D(); 1538e41f4b71Sopenharmony_ci path1.moveTo(100, 100); 1539e41f4b71Sopenharmony_ci path1.lineTo(200, 100); 1540e41f4b71Sopenharmony_ci path1.lineTo(100, 200); 1541e41f4b71Sopenharmony_ci path1.closePath(); 1542e41f4b71Sopenharmony_ci ctx.stroke(path1); 1543e41f4b71Sopenharmony_ci var path2 = ctx.createPath2D("M150 150 L50 250 L250 250 Z"); 1544e41f4b71Sopenharmony_ci ctx.stroke(path2); 1545e41f4b71Sopenharmony_ci var path3 = ctx.createPath2D(path2); 1546e41f4b71Sopenharmony_ci ctx.stroke(path3); 1547e41f4b71Sopenharmony_ci } 1548e41f4b71Sopenharmony_ci } 1549e41f4b71Sopenharmony_ci ``` 1550e41f4b71Sopenharmony_ci 1551e41f4b71Sopenharmony_ci  1552e41f4b71Sopenharmony_ci 1553e41f4b71Sopenharmony_ci### drawImage 1554e41f4b71Sopenharmony_ci 1555e41f4b71Sopenharmony_cidrawImage(image: Image | PixelMap, sx: number, sy: number, sWidth: number, sHeight: number, dx: number, dy: number, dWidth: number, dHeight: number):void 1556e41f4b71Sopenharmony_ci 1557e41f4b71Sopenharmony_ci进行图像绘制。 1558e41f4b71Sopenharmony_ci 1559e41f4b71Sopenharmony_ci**参数:** 1560e41f4b71Sopenharmony_ci 1561e41f4b71Sopenharmony_ci| 参数 | 类型 | 描述 | 1562e41f4b71Sopenharmony_ci| ------- | ------------------------------ | ---------------------------------------- | 1563e41f4b71Sopenharmony_ci| image | Image \| PixelMap<sup>9+</sup> | 图片资源,请参考[Image对象](js-components-canvas-image.md) 或[PixelMap对象](../../apis-image-kit/js-apis-image.md#pixelmap7)。 | 1564e41f4b71Sopenharmony_ci| sx | number | 裁切源图像时距离源图像左上角的x坐标值。 | 1565e41f4b71Sopenharmony_ci| sy | number | 裁切源图像时距离源图像左上角的y坐标值。 | 1566e41f4b71Sopenharmony_ci| sWidth | number | 裁切源图像时需要裁切的宽度。 | 1567e41f4b71Sopenharmony_ci| sHeight | number | 裁切源图像时需要裁切的高度。 | 1568e41f4b71Sopenharmony_ci| dx | number | 绘制区域左上角在x轴的位置。 | 1569e41f4b71Sopenharmony_ci| dy | number | 绘制区域左上角在y 轴的位置。 | 1570e41f4b71Sopenharmony_ci| dWidth | number | 绘制区域的宽度。 | 1571e41f4b71Sopenharmony_ci| dHeight | number | 绘制区域的高度。 | 1572e41f4b71Sopenharmony_ci 1573e41f4b71Sopenharmony_ci**示例:** 1574e41f4b71Sopenharmony_ci ```html 1575e41f4b71Sopenharmony_ci <!-- xxx.hml --> 1576e41f4b71Sopenharmony_ci <div> 1577e41f4b71Sopenharmony_ci <canvas ref="canvas" style="width: 500px; height: 500px; background-color: #ffff00;"></canvas> 1578e41f4b71Sopenharmony_ci </div> 1579e41f4b71Sopenharmony_ci ``` 1580e41f4b71Sopenharmony_ci 1581e41f4b71Sopenharmony_ci ```js 1582e41f4b71Sopenharmony_ci //xxx.js 1583e41f4b71Sopenharmony_ci export default { 1584e41f4b71Sopenharmony_ci onShow() { 1585e41f4b71Sopenharmony_ci var test = this.$refs.canvas; 1586e41f4b71Sopenharmony_ci var ctx = test.getContext('2d'); 1587e41f4b71Sopenharmony_ci var img = new Image(); 1588e41f4b71Sopenharmony_ci img.src = 'common/image/test.jpg'; 1589e41f4b71Sopenharmony_ci ctx.drawImage(img, 0, 0, 200, 200, 10, 10, 200, 200); 1590e41f4b71Sopenharmony_ci } 1591e41f4b71Sopenharmony_ci } 1592e41f4b71Sopenharmony_ci ``` 1593e41f4b71Sopenharmony_ci 1594e41f4b71Sopenharmony_ci  1595e41f4b71Sopenharmony_ci 1596e41f4b71Sopenharmony_ci### restore 1597e41f4b71Sopenharmony_ci 1598e41f4b71Sopenharmony_cirestore(): void 1599e41f4b71Sopenharmony_ci 1600e41f4b71Sopenharmony_ci对保存的绘图上下文进行恢复。 1601e41f4b71Sopenharmony_ci 1602e41f4b71Sopenharmony_ci**示例:** 1603e41f4b71Sopenharmony_ci ```html 1604e41f4b71Sopenharmony_ci <!-- xxx.hml --> 1605e41f4b71Sopenharmony_ci <div> 1606e41f4b71Sopenharmony_ci <canvas ref="canvas" style="width: 200px; height: 150px; background-color: #ffff00;"></canvas> 1607e41f4b71Sopenharmony_ci </div> 1608e41f4b71Sopenharmony_ci ``` 1609e41f4b71Sopenharmony_ci 1610e41f4b71Sopenharmony_ci ```js 1611e41f4b71Sopenharmony_ci //xxx.js 1612e41f4b71Sopenharmony_ci export default { 1613e41f4b71Sopenharmony_ci onShow() { 1614e41f4b71Sopenharmony_ci const el =this.$refs.canvas; 1615e41f4b71Sopenharmony_ci const ctx = el.getContext('2d'); 1616e41f4b71Sopenharmony_ci ctx.restore(); 1617e41f4b71Sopenharmony_ci } 1618e41f4b71Sopenharmony_ci } 1619e41f4b71Sopenharmony_ci ``` 1620e41f4b71Sopenharmony_ci 1621e41f4b71Sopenharmony_ci### save 1622e41f4b71Sopenharmony_ci 1623e41f4b71Sopenharmony_cisave(): void 1624e41f4b71Sopenharmony_ci 1625e41f4b71Sopenharmony_ci对当前的绘图上下文进行保存。 1626e41f4b71Sopenharmony_ci 1627e41f4b71Sopenharmony_ci**示例:** 1628e41f4b71Sopenharmony_ci ```html 1629e41f4b71Sopenharmony_ci <!-- xxx.hml --> 1630e41f4b71Sopenharmony_ci <div> 1631e41f4b71Sopenharmony_ci <canvas ref="canvas" style="width: 200px; height: 150px; background-color: #ffff00;"></canvas> 1632e41f4b71Sopenharmony_ci </div> 1633e41f4b71Sopenharmony_ci ``` 1634e41f4b71Sopenharmony_ci 1635e41f4b71Sopenharmony_ci ```js 1636e41f4b71Sopenharmony_ci //xxx.js 1637e41f4b71Sopenharmony_ci export default { 1638e41f4b71Sopenharmony_ci onShow() { 1639e41f4b71Sopenharmony_ci const el =this.$refs.canvas; 1640e41f4b71Sopenharmony_ci const ctx = el.getContext('2d'); 1641e41f4b71Sopenharmony_ci ctx.save(); 1642e41f4b71Sopenharmony_ci } 1643e41f4b71Sopenharmony_ci } 1644e41f4b71Sopenharmony_ci ``` 1645e41f4b71Sopenharmony_ci 1646e41f4b71Sopenharmony_ci### createLinearGradient<sup>6+</sup> 1647e41f4b71Sopenharmony_ci 1648e41f4b71Sopenharmony_cicreateLinearGradient(x0: number, y0: number, x1: number, y1: number): Object 1649e41f4b71Sopenharmony_ci 1650e41f4b71Sopenharmony_ci创建一个线性渐变色,返回CanvasGradient对象,请参考[CanvasGradient对象](js-components-canvas-canvasgradient.md)。 1651e41f4b71Sopenharmony_ci 1652e41f4b71Sopenharmony_ci**参数:** 1653e41f4b71Sopenharmony_ci 1654e41f4b71Sopenharmony_ci| 参数 | 类型 | 描述 | 1655e41f4b71Sopenharmony_ci| ---- | ------ | -------- | 1656e41f4b71Sopenharmony_ci| x0 | number | 起点的x轴坐标。 | 1657e41f4b71Sopenharmony_ci| y0 | number | 起点的y轴坐标。 | 1658e41f4b71Sopenharmony_ci| x1 | number | 终点的x轴坐标。 | 1659e41f4b71Sopenharmony_ci| y1 | number | 终点的y轴坐标。 | 1660e41f4b71Sopenharmony_ci 1661e41f4b71Sopenharmony_ci**返回值:** 1662e41f4b71Sopenharmony_ci 1663e41f4b71Sopenharmony_ci| 类型 | 说明 | 1664e41f4b71Sopenharmony_ci| ------ | ---------------------- | 1665e41f4b71Sopenharmony_ci| Object | 返回创建的CanvasGradient对象。 | 1666e41f4b71Sopenharmony_ci 1667e41f4b71Sopenharmony_ci**示例:** 1668e41f4b71Sopenharmony_ci ```html 1669e41f4b71Sopenharmony_ci <!-- xxx.hml --> 1670e41f4b71Sopenharmony_ci <div> 1671e41f4b71Sopenharmony_ci <canvas ref="canvas" style="width: 500px; height: 500px; background-color: #ffff00;"></canvas> 1672e41f4b71Sopenharmony_ci <input type="button" style="width: 180px; height: 60px;" value="fillStyle" onclick="handleClick" /> 1673e41f4b71Sopenharmony_ci </div> 1674e41f4b71Sopenharmony_ci ``` 1675e41f4b71Sopenharmony_ci 1676e41f4b71Sopenharmony_ci ```js 1677e41f4b71Sopenharmony_ci // xxx.js 1678e41f4b71Sopenharmony_ci export default { 1679e41f4b71Sopenharmony_ci handleClick() { 1680e41f4b71Sopenharmony_ci const el = this.$refs.canvas; 1681e41f4b71Sopenharmony_ci const ctx = el.getContext('2d'); 1682e41f4b71Sopenharmony_ci // Linear gradient: start(50,0) end(300,100) 1683e41f4b71Sopenharmony_ci var gradient = ctx.createLinearGradient(50,0, 300,100); 1684e41f4b71Sopenharmony_ci // Add three color stops 1685e41f4b71Sopenharmony_ci gradient.addColorStop(0.0, '#ff0000'); 1686e41f4b71Sopenharmony_ci gradient.addColorStop(0.5, '#ffffff'); 1687e41f4b71Sopenharmony_ci gradient.addColorStop(1.0, '#00ff00'); 1688e41f4b71Sopenharmony_ci // Set the fill style and draw a rectangle 1689e41f4b71Sopenharmony_ci ctx.fillStyle = gradient; 1690e41f4b71Sopenharmony_ci ctx.fillRect(0, 0, 500, 500); 1691e41f4b71Sopenharmony_ci } 1692e41f4b71Sopenharmony_ci } 1693e41f4b71Sopenharmony_ci ``` 1694e41f4b71Sopenharmony_ci 1695e41f4b71Sopenharmony_ci  1696e41f4b71Sopenharmony_ci 1697e41f4b71Sopenharmony_ci### createRadialGradient<sup>6+</sup> 1698e41f4b71Sopenharmony_ci 1699e41f4b71Sopenharmony_cicreateRadialGradient(x0: number, y0: number, r0: number, x1: number, y1: number, r1: number): Object 1700e41f4b71Sopenharmony_ci 1701e41f4b71Sopenharmony_ci创建一个径向渐变色,返回CanvasGradient对象,请参考CanvasGradient 1702e41f4b71Sopenharmony_ci 1703e41f4b71Sopenharmony_ci**参数:** 1704e41f4b71Sopenharmony_ci 1705e41f4b71Sopenharmony_ci| 参数 | 类型 | 描述 | 1706e41f4b71Sopenharmony_ci| ---- | ------ | ----------------- | 1707e41f4b71Sopenharmony_ci| x0 | number | 起始圆的x轴坐标。 | 1708e41f4b71Sopenharmony_ci| y0 | number | 起始圆的y轴坐标。 | 1709e41f4b71Sopenharmony_ci| r0 | number | 起始圆的半径。必须是非负且有限的。 | 1710e41f4b71Sopenharmony_ci| x1 | number | 终点圆的x轴坐标。 | 1711e41f4b71Sopenharmony_ci| y1 | number | 终点圆的y轴坐标。 | 1712e41f4b71Sopenharmony_ci| r1 | number | 终点圆的半径。必须为非负且有限的。 | 1713e41f4b71Sopenharmony_ci 1714e41f4b71Sopenharmony_ci**返回值:** 1715e41f4b71Sopenharmony_ci 1716e41f4b71Sopenharmony_ci| 类型 | 说明 | 1717e41f4b71Sopenharmony_ci| ------ | ---------------------- | 1718e41f4b71Sopenharmony_ci| Object | 返回创建的CanvasGradient对象。 | 1719e41f4b71Sopenharmony_ci 1720e41f4b71Sopenharmony_ci**示例:** 1721e41f4b71Sopenharmony_ci ```html 1722e41f4b71Sopenharmony_ci <!-- xxx.hml --> 1723e41f4b71Sopenharmony_ci <div> 1724e41f4b71Sopenharmony_ci <canvas ref="canvas" style="width: 500px; height: 500px; background-color: #ffff00;"></canvas> 1725e41f4b71Sopenharmony_ci <input type="button" style="width: 180px; height: 60px;" value="fillStyle" onclick="handleClick" /> 1726e41f4b71Sopenharmony_ci </div> 1727e41f4b71Sopenharmony_ci ``` 1728e41f4b71Sopenharmony_ci 1729e41f4b71Sopenharmony_ci ```js 1730e41f4b71Sopenharmony_ci // xxx.js 1731e41f4b71Sopenharmony_ci export default { 1732e41f4b71Sopenharmony_ci handleClick() { 1733e41f4b71Sopenharmony_ci const el = this.$refs.canvas; 1734e41f4b71Sopenharmony_ci const ctx = el.getContext('2d'); 1735e41f4b71Sopenharmony_ci // Radial gradient: inner circle(200,200,r:50) outer circle(200,200,r:200) 1736e41f4b71Sopenharmony_ci var gradient = ctx.createRadialGradient(200,200,50, 200,200,200); 1737e41f4b71Sopenharmony_ci // Add three color stops 1738e41f4b71Sopenharmony_ci gradient.addColorStop(0.0, '#ff0000'); 1739e41f4b71Sopenharmony_ci gradient.addColorStop(0.5, '#ffffff'); 1740e41f4b71Sopenharmony_ci gradient.addColorStop(1.0, '#00ff00'); 1741e41f4b71Sopenharmony_ci // Set the fill style and draw a rectangle 1742e41f4b71Sopenharmony_ci ctx.fillStyle = gradient; 1743e41f4b71Sopenharmony_ci ctx.fillRect(0, 0, 500, 500); 1744e41f4b71Sopenharmony_ci } 1745e41f4b71Sopenharmony_ci } 1746e41f4b71Sopenharmony_ci ``` 1747e41f4b71Sopenharmony_ci 1748e41f4b71Sopenharmony_ci  1749e41f4b71Sopenharmony_ci 1750e41f4b71Sopenharmony_ci### createImageData 1751e41f4b71Sopenharmony_ci 1752e41f4b71Sopenharmony_cicreateImageData(width: number, height: number, imageData: Object): Object 1753e41f4b71Sopenharmony_ci 1754e41f4b71Sopenharmony_ci创建新的ImageData 对象,请参考[ImageData对象](js-components-canvas-imagedata.md)。 1755e41f4b71Sopenharmony_ci 1756e41f4b71Sopenharmony_ci**参数:** 1757e41f4b71Sopenharmony_ci 1758e41f4b71Sopenharmony_ci| 参数 | 类型 | 描述 | 1759e41f4b71Sopenharmony_ci| --------- | ------ | ----------------- | 1760e41f4b71Sopenharmony_ci| width | number | ImageData的宽度。 | 1761e41f4b71Sopenharmony_ci| height | number | ImageData的高度。 | 1762e41f4b71Sopenharmony_ci| imagedata | Object | 复制现有的ImageData对象。 | 1763e41f4b71Sopenharmony_ci 1764e41f4b71Sopenharmony_ci**返回值:** 1765e41f4b71Sopenharmony_ci 1766e41f4b71Sopenharmony_ci| 类型 | 说明 | 1767e41f4b71Sopenharmony_ci| ------ | ----------------- | 1768e41f4b71Sopenharmony_ci| Object | 返回创建的ImageData对象。 | 1769e41f4b71Sopenharmony_ci 1770e41f4b71Sopenharmony_ci**示例:** 1771e41f4b71Sopenharmony_ci ```html 1772e41f4b71Sopenharmony_ci <!-- xxx.hml --> 1773e41f4b71Sopenharmony_ci <div> 1774e41f4b71Sopenharmony_ci <canvas ref="canvas" style="width: 200px; height: 150px; background-color: #ffff00;"></canvas> 1775e41f4b71Sopenharmony_ci </div> 1776e41f4b71Sopenharmony_ci ``` 1777e41f4b71Sopenharmony_ci 1778e41f4b71Sopenharmony_ci ```js 1779e41f4b71Sopenharmony_ci //xxx.js 1780e41f4b71Sopenharmony_ci export default { 1781e41f4b71Sopenharmony_ci onShow() { 1782e41f4b71Sopenharmony_ci const el =this.$refs.canvas; 1783e41f4b71Sopenharmony_ci const ctx = el.getContext('2d'); 1784e41f4b71Sopenharmony_ci var imageData = ctx.createImageData(50, 100); // Create ImageData with 50px width and 100px height 1785e41f4b71Sopenharmony_ci var newImageData = ctx.createImageData(imageData); // Create ImageData using the input imageData 1786e41f4b71Sopenharmony_ci } 1787e41f4b71Sopenharmony_ci } 1788e41f4b71Sopenharmony_ci ``` 1789e41f4b71Sopenharmony_ci 1790e41f4b71Sopenharmony_ci### getImageData 1791e41f4b71Sopenharmony_ci 1792e41f4b71Sopenharmony_cigetImageData(sx: number, sy: number, sw: number, sh: number): Object 1793e41f4b71Sopenharmony_ci 1794e41f4b71Sopenharmony_ci以当前canvas指定区域内的像素创建ImageData对象。 1795e41f4b71Sopenharmony_ci 1796e41f4b71Sopenharmony_ci**参数:** 1797e41f4b71Sopenharmony_ci 1798e41f4b71Sopenharmony_ci| 参数 | 类型 | 描述 | 1799e41f4b71Sopenharmony_ci| ---- | ------ | --------------- | 1800e41f4b71Sopenharmony_ci| sx | number | 需要输出的区域的左上角x坐标。 | 1801e41f4b71Sopenharmony_ci| sy | number | 需要输出的区域的左上角y坐标。 | 1802e41f4b71Sopenharmony_ci| sw | number | 需要输出的区域的宽度。 | 1803e41f4b71Sopenharmony_ci| sh | number | 需要输出的区域的高度。 | 1804e41f4b71Sopenharmony_ci 1805e41f4b71Sopenharmony_ci**返回值:** 1806e41f4b71Sopenharmony_ci 1807e41f4b71Sopenharmony_ci| 类型 | 说明 | 1808e41f4b71Sopenharmony_ci| ------ | ----------------------- | 1809e41f4b71Sopenharmony_ci| Object | 返回包含指定区域像素的ImageData对象。 | 1810e41f4b71Sopenharmony_ci 1811e41f4b71Sopenharmony_ci**示例:** 1812e41f4b71Sopenharmony_ci ```html 1813e41f4b71Sopenharmony_ci <!-- xxx.hml --> 1814e41f4b71Sopenharmony_ci <div> 1815e41f4b71Sopenharmony_ci <canvas id="getImageData" style="width: 200px; height: 150px; background-color: #ffff00;"></canvas> 1816e41f4b71Sopenharmony_ci </div> 1817e41f4b71Sopenharmony_ci ``` 1818e41f4b71Sopenharmony_ci 1819e41f4b71Sopenharmony_ci ```js 1820e41f4b71Sopenharmony_ci //xxx.js 1821e41f4b71Sopenharmony_ci export default { 1822e41f4b71Sopenharmony_ci onShow() { 1823e41f4b71Sopenharmony_ci const test = this.$element('getImageData') 1824e41f4b71Sopenharmony_ci const ctx = test.getContext('2d'); 1825e41f4b71Sopenharmony_ci var imageData = ctx.getImageData(0, 0, 280, 300); 1826e41f4b71Sopenharmony_ci } 1827e41f4b71Sopenharmony_ci } 1828e41f4b71Sopenharmony_ci ``` 1829e41f4b71Sopenharmony_ci 1830e41f4b71Sopenharmony_ci### putImageData 1831e41f4b71Sopenharmony_ci 1832e41f4b71Sopenharmony_ciputImageData(imageData: Object, dx: number, dy: number, dirtyX: number, dirtyY: number, dirtyWidth: number, dirtyHeight: number): void 1833e41f4b71Sopenharmony_ci 1834e41f4b71Sopenharmony_ci使用ImageData数据填充新的矩形区域。 1835e41f4b71Sopenharmony_ci 1836e41f4b71Sopenharmony_ci**参数:** 1837e41f4b71Sopenharmony_ci 1838e41f4b71Sopenharmony_ci| 参数 | 类型 | 描述 | 1839e41f4b71Sopenharmony_ci| ----------- | ------ | ----------------------------- | 1840e41f4b71Sopenharmony_ci| imagedata | Object | 包含像素值的ImageData对象。 | 1841e41f4b71Sopenharmony_ci| dx | number | 填充区域在x轴方向的偏移量。 | 1842e41f4b71Sopenharmony_ci| dy | number | 填充区域在y轴方向的偏移量。 | 1843e41f4b71Sopenharmony_ci| dirtyX | number | 源图像数据矩形裁切范围左上角距离源图像左上角的x轴偏移量。 | 1844e41f4b71Sopenharmony_ci| dirtyY | number | 源图像数据矩形裁切范围左上角距离源图像左上角的y轴偏移量。 | 1845e41f4b71Sopenharmony_ci| dirtyWidth | number | 源图像数据矩形裁切范围的宽度。 | 1846e41f4b71Sopenharmony_ci| dirtyHeight | number | 源图像数据矩形裁切范围的高度。 | 1847e41f4b71Sopenharmony_ci 1848e41f4b71Sopenharmony_ci**示例:** 1849e41f4b71Sopenharmony_ci ```html 1850e41f4b71Sopenharmony_ci <!-- xxx.hml --> 1851e41f4b71Sopenharmony_ci <div> 1852e41f4b71Sopenharmony_ci <canvas id="getImageData" style="width: 200px; height: 150px; background-color: #ffff00;"></canvas> 1853e41f4b71Sopenharmony_ci </div> 1854e41f4b71Sopenharmony_ci ``` 1855e41f4b71Sopenharmony_ci 1856e41f4b71Sopenharmony_ci ```js 1857e41f4b71Sopenharmony_ci //xxx.js 1858e41f4b71Sopenharmony_ci export default { 1859e41f4b71Sopenharmony_ci onShow() { 1860e41f4b71Sopenharmony_ci const test = this.$element('getImageData') 1861e41f4b71Sopenharmony_ci const ctx = test.getContext('2d'); 1862e41f4b71Sopenharmony_ci var imgData = ctx.createImageData(100, 100); 1863e41f4b71Sopenharmony_ci for (var i = 0; i < imgData.data.length; i += 4) { 1864e41f4b71Sopenharmony_ci imgData.data[i + 0] = 255; 1865e41f4b71Sopenharmony_ci imgData.data[i + 1] = 0; 1866e41f4b71Sopenharmony_ci imgData.data[i + 2] = 0; 1867e41f4b71Sopenharmony_ci imgData.data[i + 3] = 255; 1868e41f4b71Sopenharmony_ci } 1869e41f4b71Sopenharmony_ci ctx.putImageData(imgData, 10, 10); 1870e41f4b71Sopenharmony_ci } 1871e41f4b71Sopenharmony_ci } 1872e41f4b71Sopenharmony_ci ``` 1873e41f4b71Sopenharmony_ci 1874e41f4b71Sopenharmony_ci  1875e41f4b71Sopenharmony_ci 1876e41f4b71Sopenharmony_ci### getPixelMap<sup>9+</sup> 1877e41f4b71Sopenharmony_ci 1878e41f4b71Sopenharmony_cigetPixelMap(sx: number, sy: number, sw: number, sh: number): PixelMap 1879e41f4b71Sopenharmony_ci 1880e41f4b71Sopenharmony_ci获取用当前canvas指定区域内的像素创建的PixelMap对象。 1881e41f4b71Sopenharmony_ci 1882e41f4b71Sopenharmony_ci**参数:** 1883e41f4b71Sopenharmony_ci 1884e41f4b71Sopenharmony_ci| 参数 | 类型 | 描述 | 1885e41f4b71Sopenharmony_ci| ---- | ------ | ------------ | 1886e41f4b71Sopenharmony_ci| sx | number | 指定区域的左上角x坐标。 | 1887e41f4b71Sopenharmony_ci| sy | number | 指定区域的左上角y坐标。 | 1888e41f4b71Sopenharmony_ci| sw | number | 指定区域的宽度。 | 1889e41f4b71Sopenharmony_ci| sh | number | 指定区域的高度。 | 1890e41f4b71Sopenharmony_ci 1891e41f4b71Sopenharmony_ci**返回值:** 1892e41f4b71Sopenharmony_ci 1893e41f4b71Sopenharmony_ci| 类型 | 说明 | 1894e41f4b71Sopenharmony_ci| ---------------------------------------- | ---------------------- | 1895e41f4b71Sopenharmony_ci| [PixelMap](../../apis-image-kit/js-apis-image.md#pixelmap7) | 返回包含指定区域像素的PixelMap对象。 | 1896e41f4b71Sopenharmony_ci 1897e41f4b71Sopenharmony_ci**示例:** 1898e41f4b71Sopenharmony_ci 1899e41f4b71Sopenharmony_ci ```html 1900e41f4b71Sopenharmony_ci <!-- xxx.hml --> 1901e41f4b71Sopenharmony_ci <div> 1902e41f4b71Sopenharmony_ci <canvas id="canvasId" style="width: 200px; height: 150px; background-color: #ffff00;"></canvas> 1903e41f4b71Sopenharmony_ci </div> 1904e41f4b71Sopenharmony_ci ``` 1905e41f4b71Sopenharmony_ci 1906e41f4b71Sopenharmony_ci ```js 1907e41f4b71Sopenharmony_ci //xxx.js 1908e41f4b71Sopenharmony_ci export default { 1909e41f4b71Sopenharmony_ci onShow() { 1910e41f4b71Sopenharmony_ci const test = this.$element('canvasId') 1911e41f4b71Sopenharmony_ci const ctx = test.getContext('2d'); 1912e41f4b71Sopenharmony_ci var pixelMap = ctx.getPixelMap(0, 0, 280, 300); 1913e41f4b71Sopenharmony_ci } 1914e41f4b71Sopenharmony_ci } 1915e41f4b71Sopenharmony_ci ``` 1916e41f4b71Sopenharmony_ci 1917e41f4b71Sopenharmony_ci### setLineDash 1918e41f4b71Sopenharmony_ci 1919e41f4b71Sopenharmony_cisetLineDash(segments: Array): void 1920e41f4b71Sopenharmony_ci 1921e41f4b71Sopenharmony_ci设置画布的虚线样式。 1922e41f4b71Sopenharmony_ci 1923e41f4b71Sopenharmony_ci**参数:** 1924e41f4b71Sopenharmony_ci 1925e41f4b71Sopenharmony_ci| 参数 | 类型 | 描述 | 1926e41f4b71Sopenharmony_ci| -------- | ----- | -------------------- | 1927e41f4b71Sopenharmony_ci| segments | Array | 作为数组用来描述线段如何交替和间距长度。 | 1928e41f4b71Sopenharmony_ci 1929e41f4b71Sopenharmony_ci**示例:** 1930e41f4b71Sopenharmony_ci ```html 1931e41f4b71Sopenharmony_ci <!-- xxx.hml --> 1932e41f4b71Sopenharmony_ci <div> 1933e41f4b71Sopenharmony_ci <canvas ref="canvas" style="width: 200px; height: 150px; background-color: #ffff00;"></canvas> 1934e41f4b71Sopenharmony_ci </div> 1935e41f4b71Sopenharmony_ci ``` 1936e41f4b71Sopenharmony_ci 1937e41f4b71Sopenharmony_ci ```js 1938e41f4b71Sopenharmony_ci //xxx.js 1939e41f4b71Sopenharmony_ci export default { 1940e41f4b71Sopenharmony_ci onShow() { 1941e41f4b71Sopenharmony_ci const el =this.$refs.canvas; 1942e41f4b71Sopenharmony_ci const ctx = el.getContext('2d'); 1943e41f4b71Sopenharmony_ci ctx.arc(100, 75, 50, 0, 6.28); 1944e41f4b71Sopenharmony_ci ctx.setLineDash([10,20]); 1945e41f4b71Sopenharmony_ci ctx.stroke(); 1946e41f4b71Sopenharmony_ci } 1947e41f4b71Sopenharmony_ci } 1948e41f4b71Sopenharmony_ci ``` 1949e41f4b71Sopenharmony_ci 1950e41f4b71Sopenharmony_ci  1951e41f4b71Sopenharmony_ci 1952e41f4b71Sopenharmony_ci### getLineDash 1953e41f4b71Sopenharmony_ci 1954e41f4b71Sopenharmony_cigetLineDash(): Array 1955e41f4b71Sopenharmony_ci 1956e41f4b71Sopenharmony_ci获得当前画布的虚线样式。 1957e41f4b71Sopenharmony_ci 1958e41f4b71Sopenharmony_ci**返回值:** 1959e41f4b71Sopenharmony_ci 1960e41f4b71Sopenharmony_ci| 类型 | 说明 | 1961e41f4b71Sopenharmony_ci| ----- | ------------------------ | 1962e41f4b71Sopenharmony_ci| Array | 返回数组,该数组用来描述线段如何交替和间距长度。 | 1963e41f4b71Sopenharmony_ci 1964e41f4b71Sopenharmony_ci**示例:** 1965e41f4b71Sopenharmony_ci ```html 1966e41f4b71Sopenharmony_ci <!-- xxx.hml --> 1967e41f4b71Sopenharmony_ci <div> 1968e41f4b71Sopenharmony_ci <canvas ref="canvas" style="width: 200px; height: 150px; "></canvas> 1969e41f4b71Sopenharmony_ci </div> 1970e41f4b71Sopenharmony_ci ``` 1971e41f4b71Sopenharmony_ci 1972e41f4b71Sopenharmony_ci ```js 1973e41f4b71Sopenharmony_ci //xxx.js 1974e41f4b71Sopenharmony_ci export default { 1975e41f4b71Sopenharmony_ci onShow() { 1976e41f4b71Sopenharmony_ci const el =this.$refs.canvas; 1977e41f4b71Sopenharmony_ci const ctx = el.getContext('2d'); 1978e41f4b71Sopenharmony_ci var info = ctx.getLineDash(); 1979e41f4b71Sopenharmony_ci } 1980e41f4b71Sopenharmony_ci } 1981e41f4b71Sopenharmony_ci ``` 1982e41f4b71Sopenharmony_ci 1983e41f4b71Sopenharmony_ci### transferFromImageBitmap<sup>7+</sup> 1984e41f4b71Sopenharmony_ci 1985e41f4b71Sopenharmony_citransferFromImageBitmap(bitmap: ImageBitmap): void 1986e41f4b71Sopenharmony_ci 1987e41f4b71Sopenharmony_ci显示给定的ImageBitmap对象。 1988e41f4b71Sopenharmony_ci 1989e41f4b71Sopenharmony_ci**参数:** 1990e41f4b71Sopenharmony_ci 1991e41f4b71Sopenharmony_ci| 参数 | 类型 | 描述 | 1992e41f4b71Sopenharmony_ci| ------ | ----------- | ------------------ | 1993e41f4b71Sopenharmony_ci| bitmap | ImageBitmap | 待显示的ImageBitmap对象。 | 1994e41f4b71Sopenharmony_ci 1995e41f4b71Sopenharmony_ci**示例:** 1996e41f4b71Sopenharmony_ci ```html 1997e41f4b71Sopenharmony_ci <!-- xxx.hml --> 1998e41f4b71Sopenharmony_ci <div> 1999e41f4b71Sopenharmony_ci <canvas ref="canvas" style="width: 500px; height: 500px; background-color: #ffff00;"></canvas> 2000e41f4b71Sopenharmony_ci </div> 2001e41f4b71Sopenharmony_ci ``` 2002e41f4b71Sopenharmony_ci 2003e41f4b71Sopenharmony_ci ```js 2004e41f4b71Sopenharmony_ci //xxx.js 2005e41f4b71Sopenharmony_ci export default { 2006e41f4b71Sopenharmony_ci onShow() { 2007e41f4b71Sopenharmony_ci const el =this.$refs.canvas; 2008e41f4b71Sopenharmony_ci const ctx = el.getContext('2d'); 2009e41f4b71Sopenharmony_ci var canvas = this.$refs.canvas.getContext('2d'); 2010e41f4b71Sopenharmony_ci var offscreen = new OffscreenCanvas(500,500); 2011e41f4b71Sopenharmony_ci var offscreenCanvasCtx = offscreen.getContext("2d"); 2012e41f4b71Sopenharmony_ci offscreenCanvasCtx.fillRect(0, 0, 200, 200); 2013e41f4b71Sopenharmony_ci 2014e41f4b71Sopenharmony_ci var bitmap = offscreen.transferToImageBitmap(); 2015e41f4b71Sopenharmony_ci canvas.transferFromImageBitmap(bitmap); 2016e41f4b71Sopenharmony_ci } 2017e41f4b71Sopenharmony_ci } 2018e41f4b71Sopenharmony_ci ``` 2019e41f4b71Sopenharmony_ci 2020e41f4b71Sopenharmony_ci 