1# @ohos.graphics.drawing (绘制模块)
2
3drawing模块提供了基本的绘制能力,如绘制矩形、圆形、点、直线、自定义Path、字体等等。
4
5> **说明:**
6>
7> - 本模块首批接口从API version 11开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。
8>
9> - 本模块采用屏幕物理像素单位px。
10>
11> - 本模块为单线程模型策略,需要调用方自行管理线程安全和上下文状态的切换。
12
13## 导入模块
14
15```ts
16import { drawing } from '@kit.ArkGraphics2D';
17```
18
19## BlendMode
20
21混合模式枚举。混合模式的操作会为两种颜色(源色、目标色)生成一种新的颜色。 这些操作在4个颜色通道(红、绿、蓝、透明度)上是相同的。 对于这些,我们使用透明度通道作为示例,而不是单独命名每个通道。
22
23为简洁起见,我们使用以下缩写:
24
25s : source 源的缩写。 d : destination 目标的缩写。 sa : source alpha 源透明度的缩写。 da : destination alpha 目标透明度的缩写。
26
27计算结果用如下缩写表示:
28
29r : 如果4个通道的计算方式相同,用r表示。 ra : 如果只操作透明度通道,用ra表示。 rc : 如果操作3个颜色通道,用rc表示。
30
31以黄色矩形为源图像,蓝色圆形为目标图像,各混合模式枚举生成的效果示意图请参考下表。
32
33**系统能力:** SystemCapability.Graphics.Drawing
34
35| 名称        | 值   | 说明                                                         | 示意图   |
36| ----------- | ---- | ------------------------------------------------------------ | -------- |
37| CLEAR       | 0    | 清除模式,r = 0。                                            | ![CLEAR](./figures/zh-ch_image_BlendMode_Clear.png) |
38| SRC         | 1    | r = s(result的4个通道,都等于source的4个通道,即结果等于源。) | ![SRC](./figures/zh-ch_image_BlendMode_Src.png) |
39| DST         | 2    | r = d(result的4个通道,都等于destination的4个通道,即结果等于目标。) | ![DST](./figures/zh-ch_image_BlendMode_Dst.png) |
40| SRC_OVER    | 3    | r = s + (1 - sa) * d                                         | ![SRC_OVER](./figures/zh-ch_image_BlendMode_SrcOver.png) |
41| DST_OVER    | 4    | r = d + (1 - da) * s                                         | ![DST_OVER](./figures/zh-ch_image_BlendMode_DstOver.png) |
42| SRC_IN      | 5    | r = s * da                                                   | ![SRC_IN](./figures/zh-ch_image_BlendMode_SrcIn.png) |
43| DST_IN      | 6    | r = d * sa                                                   | ![DST_IN](./figures/zh-ch_image_BlendMode_DstIn.png) |
44| SRC_OUT     | 7    | r = s * (1 - da)                                             | ![SRC_OUT](./figures/zh-ch_image_BlendMode_SrcOut.png) |
45| DST_OUT     | 8    | r = d * (1 - sa)                                             | ![DST_OUT](./figures/zh-ch_image_BlendMode_DstOut.png) |
46| SRC_ATOP    | 9    | r = s * da + d * (1 - sa)                                    | ![SRC_ATOP](./figures/zh-ch_image_BlendMode_SrcATop.png) |
47| DST_ATOP    | 10   | r = d * sa + s * (1 - da)                                    | ![DST_ATOP](./figures/zh-ch_image_BlendMode_DstATop.png) |
48| XOR         | 11   | r = s * (1 - da) + d * (1 - sa)                              | ![XOR](./figures/zh-ch_image_BlendMode_Xor.png) |
49| PLUS        | 12   | r = min(s + d, 1)                                            | ![PLUS](./figures/zh-ch_image_BlendMode_Plus.png) |
50| MODULATE    | 13   | r = s * d                                                    | ![MODULATE](./figures/zh-ch_image_BlendMode_Modulate.png) |
51| SCREEN      | 14   | 滤色模式,r = s + d - s * d                                  | ![SCREEN](./figures/zh-ch_image_BlendMode_Screen.png) |
52| OVERLAY     | 15   | 叠加模式                                                     | ![OVERLAY](./figures/zh-ch_image_BlendMode_Overlay.png) |
53| DARKEN      | 16   | 变暗模式,rc = s + d - max(s * da, d * sa), ra = s + (1 - sa) * d | ![DARKEN](./figures/zh-ch_image_BlendMode_Darken.png) |
54| LIGHTEN     | 17   | 变亮模式,rc = s + d - min(s * da, d * sa), ra = s + (1 - sa) * d | ![LIGHTEN](./figures/zh-ch_image_BlendMode_Lighten.png) |
55| COLOR_DODGE | 18   | 颜色减淡模式                                                 | ![COLOR_DODGE](./figures/zh-ch_image_BlendMode_ColorDodge.png) |
56| COLOR_BURN  | 19   | 颜色加深模式                                                 | ![COLOR_BURN](./figures/zh-ch_image_BlendMode_ColorBurn.png) |
57| HARD_LIGHT  | 20   | 强光模式                                                     | ![HARD_LIGHT](./figures/zh-ch_image_BlendMode_HardLight.png) |
58| SOFT_LIGHT  | 21   | 柔光模式                                                     | ![SOFT_LIGHT](./figures/zh-ch_image_BlendMode_SoftLight.png) |
59| DIFFERENCE  | 22   | 差值模式,rc = s + d - 2 * (min(s * da, d * sa)), ra = s + (1 - sa) * d | ![DIFFERENCE](./figures/zh-ch_image_BlendMode_Difference.png) |
60| EXCLUSION   | 23   | 排除模式,rc = s + d - two(s * d), ra = s + (1 - sa) * d     | ![EXCLUSION](./figures/zh-ch_image_BlendMode_Exclusion.png) |
61| MULTIPLY    | 24   | 正片叠底,r = s * (1 - da) + d * (1 - sa) + s * d            | ![MULTIPLY](./figures/zh-ch_image_BlendMode_Multiply.png) |
62| HUE         | 25   | 色相模式                                                     | ![HUE](./figures/zh-ch_image_BlendMode_Hue.png) |
63| SATURATION  | 26   | 饱和度模式                                                   | ![SATURATION](./figures/zh-ch_image_BlendMode_Saturation.png) |
64| COLOR       | 27   | 颜色模式                                                     | ![COLOR](./figures/zh-ch_image_BlendMode_Color.png) |
65| LUMINOSITY  | 28   | 亮度模式                                                     | ![LUMINOSITY](./figures/zh-ch_image_BlendMode_Luminosity.png) |
66
67## PathMeasureMatrixFlags<sup>12+</sup>
68
69路径测量获取相应矩阵信息维度枚举。
70
71**系统能力:** SystemCapability.Graphics.Drawing
72
73| 名称        | 值   | 说明                                                         |
74| ----------- | ---- | ------------------------------------------------------------ |
75| GET_POSITION_MATRIX        | 0    | 获取位置信息对应的矩阵。                                            |
76| GET_TANGENT_MATRIX          | 1    | 获取切线信息对应的矩阵。 |
77| GET_POSITION_AND_TANGENT_MATRIX    | 2     | 获取位置和切线信息对应的矩阵。 |
78
79## SrcRectConstraint<sup>12+</sup>
80
81源矩形区域约束类型枚举。
82
83**系统能力:** SystemCapability.Graphics.Drawing
84
85| 名称        | 值   | 说明                                                         |
86| ----------- | ---- | ------------------------------------------------------------ |
87| STRICT         | 0    | 严格限制采样范围在源矩形区域内,速度较慢。                                            |
88| FAST           | 1    | 允许采样范围超出源矩形范围,速度较快。 |
89
90## ShadowFlag<sup>12+</sup>
91
92控制阴影绘制行为的标志,以实现不同的阴影效果。
93
94**系统能力**:SystemCapability.Graphics.Drawing
95
96| 名称                         | 值    | 说明                 |
97| -------------------------- | ---- | ------------------ |
98| NONE      | 0    | 不使能以下标志。        |
99| TRANSPARENT_OCCLUDER | 1    | 遮挡物是透明的。         |
100| GEOMETRIC_ONLY    | 2    | 仅使用几何阴影效果。        |
101| ALL           | 3    | 使能以上所有功能。 |
102
103## PathOp<sup>12+</sup>
104
105路径操作类型枚举。
106
107**系统能力**:SystemCapability.Graphics.Drawing
108
109| 名称                   | 值   | 说明                           |
110| ---------------------- | ---- | ------------------------------ |
111| DIFFERENCE     | 0    | 差集操作。 |
112| INTERSECT    | 1    | 交集操作。 |
113| UNION    | 2    | 并集操作。 |
114| XOR     | 3    | 异或操作。 |
115| REVERSE_DIFFERENCE     | 4    | 反向差集操作。 |
116
117## Path
118
119由直线、圆弧、二阶贝塞尔、三阶贝塞尔组成的复合几何路径。
120
121### constructor<sup>12+</sup>
122
123constructor()
124
125构造一个路径。
126
127**系统能力:** SystemCapability.Graphics.Drawing
128
129**示例:**
130
131```ts
132import { drawing } from '@kit.ArkGraphics2D';
133let path: drawing.Path = new drawing.Path();
134```
135
136### constructor<sup>12+</sup>
137
138constructor(path: Path)
139
140构造一个已有路径的副本。
141
142**系统能力:** SystemCapability.Graphics.Drawing
143
144**参数:**
145
146| 参数名   | 类型                                         | 必填 | 说明                            |
147| -------- | -------------------------------------------- | ---- | ------------------------------- |
148| path | [Path](#path) | 是   | 待复制的路径对象。                 |
149
150**示例:**
151
152```ts
153import { drawing } from '@kit.ArkGraphics2D';
154let path: drawing.Path = new drawing.Path();
155path.moveTo(0, 0);
156path.lineTo(0, 700);
157path.lineTo(700, 0);
158path.close();
159let path1: drawing.Path =  new drawing.Path(path);
160```
161
162### moveTo
163
164moveTo(x: number, y: number) : void
165
166用于设置自定义路径的起始点位置。
167
168**系统能力**:SystemCapability.Graphics.Drawing
169
170**参数:**
171
172| 参数名 | 类型   | 必填 | 说明                    |
173| ------ | ------ | ---- | ----------------------- |
174| x      | number | 是   | 起始点的x轴坐标,该参数为浮点数。 |
175| y      | number | 是   | 起始点的y轴坐标,该参数为浮点数。 |
176
177**错误码:**
178
179以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
180
181| 错误码ID | 错误信息 |
182| ------- | --------------------------------------------|
183| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. |
184
185**示例:**
186
187```ts
188import { drawing } from '@kit.ArkGraphics2D';
189let path = new drawing.Path();
190path.moveTo(10,10);
191```
192
193### lineTo
194
195lineTo(x: number, y: number) : void
196
197用于添加一条从路径的最后点位置(若路径没有内容则默认为 (0, 0))到目标点位置的线段。
198
199**系统能力**:SystemCapability.Graphics.Drawing
200
201**参数:**
202
203| 参数名 | 类型   | 必填 | 说明                    |
204| ------ | ------ | ---- | ----------------------- |
205| x      | number | 是   | 目标点的x轴坐标,该参数为浮点数。 |
206| y      | number | 是   | 目标点的y轴坐标,该参数为浮点数。 |
207
208**错误码:**
209
210以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
211
212| 错误码ID | 错误信息 |
213| ------- | --------------------------------------------|
214| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. |
215
216**示例:**
217
218```ts
219import { drawing } from '@kit.ArkGraphics2D';
220let path = new drawing.Path();
221path.moveTo(10,10);
222path.lineTo(10, 15);
223```
224
225### arcTo
226
227arcTo(x1: number, y1: number, x2: number, y2: number, startDeg: number, sweepDeg: number): void
228
229用于给路径添加一段弧线,绘制弧线的方式为角度弧,该方式首先会指定一个矩形边框,矩形边框会包裹椭圆, 然后会指定一个起始角度和扫描度数,从起始角度扫描截取的椭圆周长一部分即为绘制的弧线。另外会默认添加一条从路径的最后点位置到弧线起始点位置的线段。
230
231**系统能力**:SystemCapability.Graphics.Drawing
232
233**参数:**
234
235| 参数名   | 类型   | 必填 | 说明                       |
236| -------- | ------ | ---- | -------------------------- |
237| x1       | number | 是   | 矩形左上角的x坐标,该参数为浮点数。 |
238| y1       | number | 是   | 矩形左上角的y坐标,该参数为浮点数。 |
239| x2       | number | 是   | 矩形右下角的x坐标,该参数为浮点数。 |
240| y2       | number | 是   | 矩形右下角的y坐标,该参数为浮点数。 |
241| startDeg | number | 是   | 起始角度,单位为度,该参数为浮点数。 |
242| sweepDeg | number | 是   | 扫描度数,单位为度,该参数为浮点数。 |
243
244**错误码:**
245
246以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
247
248| 错误码ID | 错误信息 |
249| ------- | --------------------------------------------|
250| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. |
251
252**示例:**
253
254```ts
255import { drawing } from '@kit.ArkGraphics2D';
256let path = new drawing.Path();
257path.moveTo(10,10);
258path.arcTo(10, 15, 10, 10, 10, 10);
259```
260
261### quadTo
262
263quadTo(ctrlX: number, ctrlY: number, endX: number, endY: number): void
264
265用于添加一条从路径最后点位置(若路径没有内容则默认为 (0, 0))到目标点位置的二阶贝塞尔圆滑曲线。
266
267**系统能力**:SystemCapability.Graphics.Drawing
268
269**参数:**
270
271| 参数名 | 类型   | 必填 | 说明                  |
272| ------ | ------ | ---- | --------------------- |
273| ctrlX  | number | 是   | 控制点的x坐标,该参数为浮点数。 |
274| ctrlY  | number | 是   | 控制点的y坐标,该参数为浮点数。 |
275| endX   | number | 是   | 目标点的x坐标,该参数为浮点数。 |
276| endY   | number | 是   | 目标点的y坐标,该参数为浮点数。 |
277
278**错误码:**
279
280以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
281
282| 错误码ID | 错误信息 |
283| ------- | --------------------------------------------|
284| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. |
285
286**示例:**
287
288```ts
289import { drawing } from '@kit.ArkGraphics2D';
290let path = new drawing.Path();
291path.moveTo(10,10);
292path.quadTo(10, 15, 10, 10);
293```
294
295### conicTo<sup>12+</sup>
296
297conicTo(ctrlX: number, ctrlY: number, endX: number, endY: number, weight: number): void
298
299在当前路径上添加一条路径终点(若路径没有内容则默认为 (0, 0))到目标点位置的圆锥曲线,其控制点为 (ctrlX, ctrlY),结束点为 (endX, endY)。
300
301**系统能力**:SystemCapability.Graphics.Drawing
302
303**参数:**
304
305| 参数名 | 类型   | 必填 | 说明                  |
306| ------ | ------ | ---- | --------------------- |
307| ctrlX  | number | 是   | 控制点的x坐标,该参数为浮点数。 |
308| ctrlY  | number | 是   | 控制点的y坐标,该参数为浮点数。 |
309| endX   | number | 是   | 目标点的x坐标,该参数为浮点数。 |
310| endY   | number | 是   | 目标点的y坐标,该参数为浮点数。 |
311| weight | number | 是   | 表示曲线的权重,决定了曲线的形状,越大越接近控制点。若小于等于0则等同于使用[lineTo](#lineto)添加一条到结束点的线段,若为1则等同于[quadTo](#quadto),该参数为浮点数。 |
312
313**错误码:**
314
315以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
316
317| 错误码ID | 错误信息 |
318| ------- | --------------------------------------------|
319| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. |
320
321**示例:**
322
323```ts
324import { drawing } from '@kit.ArkGraphics2D';
325
326const path = new drawing.Path();
327path.conicTo(200, 400, 100, 200, 0);
328```
329
330### cubicTo
331
332cubicTo(ctrlX1: number, ctrlY1: number, ctrlX2: number, ctrlY2: number, endX: number, endY: number): void
333
334用于添加一条从路径最后点位置(若路径没有内容则默认为 (0, 0))到目标点位置的三阶贝塞尔圆滑曲线。
335
336**系统能力**:SystemCapability.Graphics.Drawing
337
338**参数:**
339
340| 参数名 | 类型   | 必填 | 说明                        |
341| ------ | ------ | ---- | --------------------------- |
342| ctrlX1 | number | 是   | 第一个控制点的x坐标,该参数为浮点数。 |
343| ctrlY1 | number | 是   | 第一个控制点的y坐标,该参数为浮点数。 |
344| ctrlX2 | number | 是   | 第二个控制点的x坐标,该参数为浮点数。 |
345| ctrlY2 | number | 是   | 第二个控制点的y坐标,该参数为浮点数。 |
346| endX   | number | 是   | 目标点的x坐标,该参数为浮点数。 |
347| endY   | number | 是   | 目标点的y坐标,该参数为浮点数。 |
348
349**错误码:**
350
351以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
352
353| 错误码ID | 错误信息 |
354| ------- | --------------------------------------------|
355| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. |
356
357**示例:**
358
359```ts
360import { drawing } from '@kit.ArkGraphics2D';
361let path = new drawing.Path();
362path.moveTo(10,10);
363path.cubicTo(10, 10, 10, 10, 15, 15);
364```
365
366### rMoveTo<sup>12+</sup>
367
368rMoveTo(dx : number, dy : number): void
369
370设置一个相对于当前路径终点(若路径没有内容则默认为 (0, 0))的路径起始点位置。
371
372**系统能力**:SystemCapability.Graphics.Drawing
373
374**参数:**
375
376| 参数名 | 类型   | 必填 | 说明                    |
377| ------ | ------ | ---- | ----------------------- |
378| dx     | number | 是   | 路径新起始点相对于当前路径终点的x轴偏移量,正数往x轴正方向偏移,负数往x轴负方向偏移,该参数为浮点数。 |
379| dy     | number | 是   | 路径新起始点相对于当前路径终点的y轴偏移量,正数往y轴正方向偏移,负数往y轴负方向偏移,该参数为浮点数。 |
380
381**错误码:**
382
383以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
384
385| 错误码ID | 错误信息 |
386| ------- | --------------------------------------------|
387| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. |
388
389**示例:**
390
391```ts
392import { drawing } from '@kit.ArkGraphics2D';
393
394const path = new drawing.Path();
395path.rMoveTo(10, 10);
396```
397
398### rLineTo<sup>12+</sup>
399
400rLineTo(dx : number, dy : number): void
401
402使用相对位置在当前路径上添加一条当前路径终点(若路径没有内容则默认为 (0, 0))到目标点位置的线段。
403
404**系统能力**:SystemCapability.Graphics.Drawing
405
406**参数:**
407
408| 参数名 | 类型   | 必填 | 说明                    |
409| ------ | ------ | ---- | ----------------------- |
410| dx     | number | 是   | 目标点相对于当前路径终点的x轴偏移量,正数往x轴正方向偏移,负数往x轴负方向偏移,该参数为浮点数。 |
411| dy     | number | 是   | 目标点相对于当前路径终点的y轴偏移量,正数往y轴正方向偏移,负数往y轴负方向偏移,该参数为浮点数。 |
412
413**错误码:**
414
415以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
416
417| 错误码ID | 错误信息 |
418| ------- | --------------------------------------------|
419| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. |
420
421**示例:**
422
423```ts
424import { drawing } from '@kit.ArkGraphics2D';
425
426const path = new drawing.Path();
427path.rLineTo(400, 200);
428```
429
430### rQuadTo<sup>12+</sup>
431
432rQuadTo(dx1: number, dy1: number, dx2: number, dy2: number): void
433
434使用相对位置在当前路径上添加一条当前路径终点(若路径没有内容则默认为 (0, 0))到目标点位置的二阶贝塞尔曲线。
435
436**系统能力**:SystemCapability.Graphics.Drawing
437
438**参数:**
439
440| 参数名 | 类型   | 必填 | 说明                  |
441| ------ | ------ | ---- | --------------------- |
442| dx1  | number | 是   | 控制点相对于路径终点的x轴偏移量,正数往x轴正方向偏移,负数往x轴负方向偏移,该参数为浮点数。 |
443| dy1  | number | 是   | 控制点相对于路径终点的y轴偏移量,正数往y轴正方向偏移,负数往y轴负方向偏移,该参数为浮点数。 |
444| dx2   | number | 是   | 目标点相对于路径终点的x轴偏移量,正数往x轴正方向偏移,负数往x轴负方向偏移,该参数为浮点数。 |
445| dy2   | number | 是   | 目标点相对于路径终点的y轴偏移量,正数往y轴正方向偏移,负数往y轴负方向偏移,该参数为浮点数。 |
446
447**错误码:**
448
449以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
450
451| 错误码ID | 错误信息 |
452| ------- | --------------------------------------------|
453| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. |
454
455**示例:**
456
457```ts
458import { drawing } from '@kit.ArkGraphics2D';
459
460const path = new drawing.Path();
461path.rQuadTo(100, 0, 0, 200);
462```
463
464### rConicTo<sup>12+</sup>
465
466rConicTo(ctrlX: number, ctrlY: number, endX: number, endY: number, weight: number): void
467
468使用相对位置在当前路径上添加一条路径终点(若路径没有内容则默认为 (0, 0))到目标点位置的圆锥曲线。
469
470**系统能力**:SystemCapability.Graphics.Drawing
471
472**参数:**
473
474| 参数名 | 类型   | 必填 | 说明                  |
475| ------ | ------ | ---- | --------------------- |
476| ctrlX  | number | 是   | 控制点相对于路径终点的x轴偏移量,正数往x轴正方向偏移,负数往x轴负方向偏移,该参数为浮点数。 |
477| ctrlY  | number | 是   | 控制点相对于路径终点的y轴偏移量,正数往y轴正方向偏移,负数往y轴负方向偏移,该参数为浮点数。 |
478| endX   | number | 是   | 目标点相对于路径终点的x轴偏移量,正数往x轴正方向偏移,负数往x轴负方向偏移,该参数为浮点数。 |
479| endY   | number | 是   | 目标点相对于路径终点的y轴偏移量,正数往y轴正方向偏移,负数往y轴负方向偏移,该参数为浮点数。 |
480| weight | number | 是   | 表示曲线的权重,决定了曲线的形状,越大越接近控制点。若小于等于0则等同于使用[rLineTo](#rlineto12)添加一条到结束点的线段,若为1则等同于[rQuadTo](#rquadto12),该参数为浮点数。 |
481
482**错误码:**
483
484以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
485
486| 错误码ID | 错误信息 |
487| ------- | --------------------------------------------|
488| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. |
489
490**示例:**
491
492```ts
493import { drawing } from '@kit.ArkGraphics2D';
494
495const path = new drawing.Path();
496path.rConicTo(200, 400, 100, 200, 0);
497```
498
499### rCubicTo<sup>12+</sup>
500
501rCubicTo(ctrlX1: number, ctrlY1: number, ctrlX2: number, ctrlY2: number, endX: number, endY: number): void
502
503使用相对位置在当前路径上添加一条当前路径终点(若路径没有内容则默认为 (0, 0))到目标点位置的三阶贝塞尔曲线。
504
505**系统能力**:SystemCapability.Graphics.Drawing
506
507**参数:**
508
509| 参数名 | 类型   | 必填 | 说明                        |
510| ------ | ------ | ---- | --------------------------- |
511| ctrlX1 | number | 是   | 第一个控制点相对于路径终点的x轴偏移量,正数往x轴正方向偏移,负数往x轴负方向偏移,该参数为浮点数。 |
512| ctrlY1 | number | 是   | 第一个控制点相对于路径终点的y轴偏移量,正数往y轴正方向偏移,负数往y轴负方向偏移,该参数为浮点数。 |
513| ctrlX2 | number | 是   | 第二个控制点相对于路径终点的x轴偏移量,正数往x轴正方向偏移,负数往x轴负方向偏移,该参数为浮点数。 |
514| ctrlY2 | number | 是   | 第二个控制点相对于路径终点的y轴偏移量,正数往y轴正方向偏移,负数往y轴负方向偏移,该参数为浮点数。 |
515| endX   | number | 是   | 目标点相对于路径终点的x轴偏移量,正数往x轴正方向偏移,负数往x轴负方向偏移,该参数为浮点数。 |
516| endY   | number | 是   | 目标点相对于路径终点的y轴偏移量,正数往y轴正方向偏移,负数往y轴负方向偏移,该参数为浮点数。 |
517
518**错误码:**
519
520以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
521
522| 错误码ID | 错误信息 |
523| ------- | --------------------------------------------|
524| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. |
525
526**示例:**
527
528```ts
529import { drawing } from '@kit.ArkGraphics2D';
530
531const path = new drawing.Path();
532path.rCubicTo(200, 0, 0, 200, -20, 0);
533```
534
535### addArc<sup>12+</sup>
536
537addArc(rect: common2D.Rect, startAngle: number, sweepAngle: number): void
538
539向路径添加一段圆弧。
540当startAngle和sweepAngle同时满足以下两种情况时,添加整个椭圆而不是圆弧:
5411.startAngle对90取余接近于0;
5422.sweepAngle不在(-360, 360)区间内。
543其余情况sweepAngle会对360取余后添加圆弧。
544
545**系统能力**:SystemCapability.Graphics.Drawing
546
547**参数:**
548
549| 参数名         | 类型                                       | 必填   | 说明                  |
550| ----------- | ---------------------------------------- | ---- | ------------------- |
551| rect        | [common2D.Rect](js-apis-graphics-common2D.md#rect) | 是    | 包含弧的椭圆的矩形边界。      |
552| startAngle   | number | 是   | 弧的起始角度,单位为度,0度为x轴正方向,该参数为浮点数。 |
553| sweepAngle   | number | 是   | 扫描角度,单位为度。正数表示顺时针方向,负数表示逆时针方向,该参数为浮点数。 |
554
555**错误码:**
556
557以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
558
559| 错误码ID | 错误信息 |
560| ------- | --------------------------------------------|
561| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. |
562
563**示例:**
564
565```ts
566import { common2D, drawing } from '@kit.ArkGraphics2D';
567
568let path = new drawing.Path();
569const rect: common2D.Rect = {left:100, top:100, right:500, bottom:500};
570path.addArc(rect, 90, 180);
571```
572
573### addCircle<sup>12+</sup>
574
575addCircle(x: number, y: number, radius: number, pathDirection?: PathDirection): void
576
577按指定方向,向路径添加圆形,圆的起点位于(x + radius, y)。
578
579**系统能力**:SystemCapability.Graphics.Drawing
580
581**参数:**
582
583| 参数名         | 类型                                       | 必填   | 说明                  |
584| ----------- | ---------------------------------------- | ---- | ------------------- |
585| x   | number | 是   | 表示圆心的x轴坐标,该参数为浮点数。 |
586| y   | number | 是   | 表示圆心的y轴坐标,该参数为浮点数。 |
587| radius   | number | 是   | 表示圆形的半径,该参数为浮点数,小于等于0时不会有任何效果。 |
588| pathDirection   | [PathDirection](#pathdirection12)  | 否   | 表示路径方向,默认为顺时针方向。 |
589
590**错误码:**
591
592以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
593
594| 错误码ID | 错误信息 |
595| ------- | --------------------------------------------|
596| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified;2. Incorrect parameter types; 3. Parameter verification failed. |
597
598**示例:**
599
600```ts
601
602import { drawing } from '@kit.ArkGraphics2D';
603
604let path = new drawing.Path();
605path.addCircle(100, 200, 50, drawing.PathDirection.CLOCKWISE);
606```
607
608### addOval<sup>12+</sup>
609
610addOval(rect: common2D.Rect, start: number, pathDirection?: PathDirection): void
611
612按指定方向,将椭圆添加到路径中,其中矩形对象作为椭圆的外切矩形区域。
613
614**系统能力**:SystemCapability.Graphics.Drawing
615
616**参数:**
617
618| 参数名         | 类型                                       | 必填   | 说明                  |
619| ----------- | ---------------------------------------- | ---- | ------------------- |
620| rect        | [common2D.Rect](js-apis-graphics-common2D.md#rect) | 是    | 椭圆的矩形边界。      |
621| start   | number | 是   | 表示椭圆初始点的索引,0,1,2,3分别对应椭圆的上端点,右端点,下端点,左端点,该参数为不小于0的整数,大于等于4时会对4取余。 |
622| pathDirection   | [PathDirection](#pathdirection12)  | 否   | 表示路径方向,默认为顺时针方向。 |
623
624**错误码:**
625
626以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
627
628| 错误码ID | 错误信息 |
629| ------- | --------------------------------------------|
630| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified;2. Incorrect parameter types; 3. Parameter verification failed.|
631
632**示例:**
633
634```ts
635import { common2D, drawing } from '@kit.ArkGraphics2D';
636
637let path = new drawing.Path();
638const rect: common2D.Rect = {left:100, top:100, right:500, bottom:500};
639path.addOval(rect, 5, drawing.PathDirection.CLOCKWISE);
640```
641
642### addRect<sup>12+</sup>
643
644addRect(rect: common2D.Rect, pathDirection?: PathDirection): void
645
646按指定方向,将矩形添加到路径中,添加的路径的起始点为矩形左上角。
647
648**系统能力**:SystemCapability.Graphics.Drawing
649
650**参数:**
651
652| 参数名         | 类型                                       | 必填   | 说明                  |
653| ----------- | ---------------------------------------- | ---- | ------------------- |
654| rect        | [common2D.Rect](js-apis-graphics-common2D.md#rect) | 是    | 向路径中添加的矩形轮廓。      |
655| pathDirection   | [PathDirection](#pathdirection12)  | 否   | 表示路径方向,默认为顺时针方向。 |
656
657**错误码:**
658
659以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
660
661| 错误码ID | 错误信息 |
662| ------- | --------------------------------------------|
663| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified;2. Incorrect parameter types; 3. Parameter verification failed.|
664
665**示例:**
666
667```ts
668import { common2D, drawing } from '@kit.ArkGraphics2D';
669
670let path = new drawing.Path();
671const rect: common2D.Rect = {left:100, top:100, right:500, bottom:500};
672path.addRect(rect, drawing.PathDirection.CLOCKWISE);
673```
674
675### addRoundRect<sup>12+</sup>
676
677addRoundRect(roundRect: RoundRect, pathDirection?: PathDirection): void
678
679按指定方向,向路径添加圆角矩形轮廓。路径添加方向为顺时针时,起始点位于圆角矩形左下方圆角与左边界的交点;路径添加方向为逆时针时,起始点位于圆角矩形左上方圆角与左边界的交点。
680
681**系统能力**:SystemCapability.Graphics.Drawing
682
683**参数:**
684
685| 参数名         | 类型                                       | 必填   | 说明                  |
686| ----------- | ---------------------------------------- | ---- | ------------------- |
687| roundRect        | [RoundRect](#roundrect12) | 是    | 圆角矩形对象。      |
688| pathDirection   | [PathDirection](#pathdirection12)  | 否   | 表示路径方向,默认为顺时针方向。 |
689
690**错误码:**
691
692以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
693
694| 错误码ID | 错误信息 |
695| ------- | --------------------------------------------|
696| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified;2. Incorrect parameter types; 3. Parameter verification failed.|
697
698**示例:**
699
700```ts
701import { common2D, drawing } from '@kit.ArkGraphics2D';
702
703let path = new drawing.Path();
704const rect: common2D.Rect = {left:100, top:100, right:500, bottom:500};
705let roundRect = new drawing.RoundRect(rect, 50, 50);
706path.addRoundRect(roundRect, drawing.PathDirection.CLOCKWISE);
707```
708
709### addPath<sup>12+</sup>
710
711addPath(path: Path, matrix?: Matrix | null): void
712
713将源路径进行矩阵变换后,添加到当前路径中。
714
715**系统能力**:SystemCapability.Graphics.Drawing
716
717**参数:**
718
719| 参数名         | 类型                                       | 必填   | 说明                  |
720| ----------- | ---------------------------------------- | ---- | ------------------- |
721| path        | [Path](#path) | 是    | 表示源路径对象。      |
722| matrix   | [Matrix](#matrix12)\|null  | 否   | 表示矩阵对象,默认为单位矩阵。 |
723
724**错误码:**
725
726以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
727
728| 错误码ID | 错误信息 |
729| ------- | --------------------------------------------|
730| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. |
731
732**示例:**
733
734```ts
735import { common2D, drawing } from '@kit.ArkGraphics2D';
736
737let path = new drawing.Path();
738let matrix = new drawing.Matrix();
739const rect: common2D.Rect = {left:100, top:100, right:500, bottom:500};
740let roundRect = new drawing.RoundRect(rect, 50, 50);
741path.addRoundRect(roundRect, drawing.PathDirection.CLOCKWISE);
742let dstPath = new drawing.Path();
743dstPath.addPath(path, matrix);
744```
745
746### transform<sup>12+</sup>
747
748transform(matrix: Matrix): void
749
750对路径进行矩阵变换。
751
752**系统能力**:SystemCapability.Graphics.Drawing
753
754**参数:**
755
756| 参数名         | 类型                                       | 必填   | 说明                  |
757| ----------- | ---------------------------------------- | ---- | ------------------- |
758| matrix   | [Matrix](#matrix12)  | 是   | 表示矩阵对象。 |
759
760**错误码:**
761
762以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
763
764| 错误码ID | 错误信息 |
765| ------- | --------------------------------------------|
766| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. |
767
768**示例:**
769
770```ts
771import { common2D, drawing } from '@kit.ArkGraphics2D';
772
773let path = new drawing.Path();
774let matrix = new drawing.Matrix();
775matrix.setScale(1.5, 1.5, 10, 10);
776const rect: common2D.Rect = {left:100, top:100, right:500, bottom:500};
777let roundRect = new drawing.RoundRect(rect, 50, 50);
778path.addRoundRect(roundRect, drawing.PathDirection.CLOCKWISE);
779path.transform(matrix);
780```
781
782### contains<sup>12+</sup>
783
784contains(x: number, y: number): boolean
785
786判断指定坐标点是否被路径包含,判定是否被路径包含的规则参考[PathFillType](#pathfilltype12)。
787
788**系统能力:** SystemCapability.Graphics.Drawing
789
790**参数:**
791
792| 参数名 | 类型   | 必填 | 说明                    |
793| ------ | ------ | ---- | ----------------------- |
794| x      | number | 是   | x轴上坐标点,该参数必须为浮点数。 |
795| y      | number | 是   | y轴上坐标点,该参数必须为浮点数。 |
796
797**返回值:**
798
799| 类型    | 说明           |
800| ------- | -------------- |
801| boolean | 返回指定坐标点是否在路径内。true表示点在路径内,false表示点不在路径内。 |
802
803**错误码:**
804
805以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
806
807| 错误码ID | 错误信息 |
808| ------- | --------------------------------------------|
809| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. |
810
811**示例:**
812
813```ts
814import { common2D, drawing } from '@kit.ArkGraphics2D';
815
816const path = new drawing.Path();
817let rect : common2D.Rect = {left: 50, top: 50, right: 250, bottom: 250};
818path.addRect(rect, drawing.PathDirection.CLOCKWISE);
819console.info("test contains: " + path.contains(0, 0));
820console.info("test contains: " + path.contains(60, 60));
821```
822
823### setFillType<sup>12+</sup>
824
825setFillType(pathFillType: PathFillType): void
826
827设置路径的填充类型,这个决定了路径内部区域的定义方式。例如,使用 Winding 填充类型时,路径内部区域由路径环绕的次数决定,而使用 EvenOdd 填充类型时,路径内部区域由路径环绕的次数是否为奇数决定。
828
829**系统能力**:SystemCapability.Graphics.Drawing
830
831**参数:**
832
833| 参数名         | 类型                                       | 必填   | 说明                  |
834| ----------- | ---------------------------------------- | ---- | ------------------- |
835| pathFillType   | [PathFillType](#pathfilltype12)  | 是   | 表示路径填充规则。 |
836
837**错误码:**
838
839以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
840
841| 错误码ID | 错误信息 |
842| ------- | --------------------------------------------|
843| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified;2. Incorrect parameter types; 3. Parameter verification failed.|
844
845**示例:**
846
847```ts
848import { drawing } from '@kit.ArkGraphics2D';
849
850const path = new drawing.Path();
851path.setFillType(drawing.PathFillType.WINDING);
852```
853
854### getBounds<sup>12+</sup>
855
856getBounds(): common2D.Rect
857
858获取包含路径的最小矩形边界。
859
860**系统能力**:SystemCapability.Graphics.Drawing
861
862**返回值:**
863
864| 类型                                               | 说明                   |
865| -------------------------------------------------- | ---------------------- |
866| [common2D.Rect](js-apis-graphics-common2D.md#rect) | 包含路径的最小矩形区域。 |
867
868**示例:**
869
870```ts
871import { common2D, drawing } from '@kit.ArkGraphics2D';
872
873const path = new drawing.Path();
874path.lineTo(50, 40)
875let rect : common2D.Rect = {left: 0, top: 0, right: 0, bottom: 0};
876rect = path.getBounds();
877console.info("test rect.left: " + rect.left);
878console.info("test rect.top: " + rect.top);
879console.info("test rect.right: " + rect.right);
880console.info("test rect.bottom: " + rect.bottom);
881```
882
883### addPolygon<sup>12+</sup>
884
885addPolygon(points: Array\<common2D.Point>, close: boolean): void
886
887通过坐标点列表添加多条连续的线段。
888
889**系统能力**:SystemCapability.Graphics.Drawing
890
891**参数:**
892
893| 参数名 | 类型   | 必填 | 说明                    |
894| ------ | ------ | ---- | ----------------------- |
895| points | Array\<[common2D.Point](js-apis-graphics-common2D.md#point)>   | 是   | 坐标点数组。 |
896| close  | boolean                                                        | 是   | 表示是否将路径闭合,即是否添加路径起始点到终点的连线,true表示将路径闭合,false表示不将路径闭合。 |
897
898**错误码:**
899
900以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
901
902| 错误码ID | 错误信息 |
903| ------- | --------------------------------------------|
904| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. |
905
906**示例:**
907
908```ts
909import { common2D, drawing } from '@kit.ArkGraphics2D';
910
911let pointsArray = new Array<common2D.Point>();
912const point1: common2D.Point = { x: 200, y: 200 };
913const point2: common2D.Point = { x: 400, y: 200 };
914const point3: common2D.Point = { x: 100, y: 400 };
915const point4: common2D.Point = { x: 300, y: 400 };
916pointsArray.push(point1);
917pointsArray.push(point2);
918pointsArray.push(point3);
919pointsArray.push(point4);
920const path = new drawing.Path();
921path.addPolygon(pointsArray, false);
922```
923
924### offset<sup>12+</sup>
925
926offset(dx: number, dy: number): Path
927
928将路径沿着x轴和y轴方向偏移一定距离并保存在返回的路径对象中。
929
930**系统能力**:SystemCapability.Graphics.Drawing
931
932**参数:**
933
934| 参数名 | 类型   | 必填 | 说明                    |
935| ------ | ------ | ---- | ----------------------- |
936| dx     | number        | 是   | x轴方向偏移量,正数往x轴正方向偏移,负数往x轴负方向偏移,该参数为浮点数。 |
937| dy     | number        | 是   | y轴方向偏移量,正数往y轴正方向偏移,负数往y轴负方向偏移,该参数为浮点数。 |
938
939**返回值:**
940
941| 类型   | 说明                |
942| ------ | ------------------ |
943| [Path](#path) | 返回当前路径偏移(dx,dy)后生成的新路径对象。 |
944
945**错误码:**
946
947以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
948
949| 错误码ID | 错误信息 |
950| ------- | --------------------------------------------|
951| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. |
952
953**示例:**
954
955```ts
956import { drawing } from '@kit.ArkGraphics2D';
957
958const path = new drawing.Path();
959path.moveTo(200, 200);
960path.lineTo(300, 300);
961const dst = path.offset(200, 200);
962```
963
964### op<sup>12+</sup>
965
966op(path: Path, pathOp: PathOp): boolean
967
968将当前路径置为和path按照指定的路径操作类型合并后的结果。
969
970**系统能力**:SystemCapability.Graphics.Drawing
971
972**参数:**
973
974| 参数名 | 类型   | 必填 | 说明                    |
975| ------ | ------ | ---- | ----------------------- |
976| path    | [Path](#path) | 是   | 路径对象,用于与当前路径合并。 |
977| pathOp  | [PathOp](#pathop12)   | 是    | 路径操作类型枚举。    |
978
979**返回值:**
980
981| 类型   | 说明                |
982| ------ | ------------------ |
983| boolean | 返回路径合并是否成功的结果,true表示合并成功,false表示合并失败。 |
984
985**错误码:**
986
987以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
988
989| 错误码ID | 错误信息 |
990| ------- | --------------------------------------------|
991| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types;3.Parameter verification failed. |
992
993**示例:**
994
995```ts
996import { drawing } from '@kit.ArkGraphics2D';
997
998const path = new drawing.Path();
999const path2 = new drawing.Path();
1000path.addCircle(100, 200, 100, drawing.PathDirection.CLOCKWISE);
1001console.info("get pathOp: ", path2.op(path, drawing.PathOp.DIFFERENCE));
1002```
1003
1004### close
1005
1006close(): void
1007
1008用于闭合路径,会添加一条从路径起点位置到最后点位置的线段。
1009
1010**系统能力**:SystemCapability.Graphics.Drawing
1011
1012**示例:**
1013
1014```ts
1015import { drawing } from '@kit.ArkGraphics2D';
1016let path = new drawing.Path();
1017path.moveTo(10,10);
1018path.cubicTo(10, 10, 10, 10, 15, 15);
1019path.close();
1020```
1021
1022### reset
1023
1024reset(): void
1025
1026用于重置自定义路径数据。
1027
1028**系统能力**:SystemCapability.Graphics.Drawing
1029
1030**示例:**
1031
1032```ts
1033import { drawing } from '@kit.ArkGraphics2D';
1034let path = new drawing.Path();
1035path.moveTo(10,10);
1036path.cubicTo(10, 10, 10, 10, 15, 15);
1037path.reset();
1038```
1039
1040### getLength<sup>12+</sup>
1041
1042getLength(forceClosed: boolean): number
1043
1044用于获取路径长度。
1045
1046**系统能力**:SystemCapability.Graphics.Drawing
1047
1048**参数:**
1049
1050| 参数名| 类型  | 必填| 说明     |
1051| ----- | ------ | ---- | --------- |
1052| forceClosed  | boolean | 是  | 表示是否按照闭合路径测量,true表示测量时路径会被强制视为已闭合,false表示会根据路径的实际闭合状态测量。|
1053
1054**返回值:**
1055
1056| 类型  | 说明 |
1057| ------ | ---- |
1058| number | 路径长度。|
1059
1060**示例:**
1061
1062```ts
1063import { drawing } from '@kit.ArkGraphics2D'
1064let path = new drawing.Path();
1065path.arcTo(20, 20, 180, 180, 180, 90);
1066let len = path.getLength(false);
1067console.info("path length = " + len);
1068```
1069
1070### getPositionAndTangent<sup>12+</sup>
1071
1072getPositionAndTangent(forceClosed: boolean, distance: number, position: common2D.Point, tangent: common2D.Point): boolean
1073
1074获取距路径起始点指定距离的坐标点和切线值。
1075
1076**系统能力**:SystemCapability.Graphics.Drawing
1077
1078**参数:**
1079
1080| 参数名   | 类型                                         | 必填 | 说明                            |
1081| -------- | -------------------------------------------- | ---- | ------------------------------- |
1082| forceClosed | boolean | 是   | 表示是否按照闭合路径测量,true表示测量时路径会被强制视为已闭合,false表示会根据路径的实际闭合状态测量。                 |
1083| distance | number | 是   | 表示与路径起始点的距离,小于0时会被视作0,大于路径长度时会被视作路径长度。该参数为浮点数。               |
1084| position | [common2D.Point](js-apis-graphics-common2D.md#point) | 是   | 存储获取到的距离路径起始点distance处的点的的坐标。                  |
1085| tangent | [common2D.Point](js-apis-graphics-common2D.md#point) | 是   | 存储获取到的距离路径起始点distance处的点的的切线值,tangent.x表示该点切线的余弦值,tangent.y表示该点切线的正弦值。                 |
1086
1087**返回值:**
1088
1089| 类型                  | 说明           |
1090| --------------------- | -------------- |
1091| boolean |表示是否成功获取距离路径起始点distance处的点的坐标和正切值的结果,true表示获取成功,false表示获取失败,position和tangent不会被改变。 |
1092
1093**错误码:**
1094
1095以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
1096
1097| 错误码ID | 错误信息 |
1098| ------- | --------------------------------------------|
1099| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. |
1100
1101**示例:**
1102
1103```ts
1104import { common2D, drawing } from '@kit.ArkGraphics2D';
1105let path: drawing.Path = new drawing.Path();
1106path.moveTo(0, 0);
1107path.lineTo(0, 700);
1108path.lineTo(700, 0);
1109let position: common2D.Point = { x: 0.0, y: 0.0 };
1110let tangent: common2D.Point = { x: 0.0, y: 0.0 };
1111if (path.getPositionAndTangent(false, 0.1, position, tangent)) {
1112  console.info("getPositionAndTangent-----position:  "+ position.x);
1113  console.info("getPositionAndTangent-----position:  "+ position.y);
1114  console.info("getPositionAndTangent-----tangent:  "+ tangent.x);
1115  console.info("getPositionAndTangent-----tangent:  "+ tangent.y);
1116}
1117```
1118
1119### isClosed<sup>12+</sup>
1120
1121isClosed(): boolean
1122
1123获取路径是否闭合。
1124
1125**系统能力**:SystemCapability.Graphics.Drawing
1126
1127**返回值:**
1128
1129| 类型                  | 说明           |
1130| --------------------- | -------------- |
1131| boolean | 表示当前路径是否闭合,true表示闭合,false表示不闭合。 |
1132
1133**示例:**
1134
1135```ts
1136import { drawing } from '@kit.ArkGraphics2D';
1137let path: drawing.Path = new drawing.Path();
1138path.moveTo(0, 0);
1139path.lineTo(0, 700);
1140if (path.isClosed()) {
1141  console.info("path is closed.");
1142} else {
1143  console.info("path is not closed.");
1144}
1145```
1146
1147### getMatrix<sup>12+</sup>
1148
1149getMatrix(forceClosed: boolean, distance: number, matrix: Matrix, flags: PathMeasureMatrixFlags): boolean
1150
1151获取距路径起始点指定距离的相应变换矩阵。
1152
1153**系统能力**:SystemCapability.Graphics.Drawing
1154
1155**参数:**
1156
1157| 参数名   | 类型                                         | 必填 | 说明                            |
1158| -------- | -------------------------------------------- | ---- | ------------------------------- |
1159| forceClosed | boolean | 是   | 表示是否按照闭合路径测量,true表示测量时路径会被强制视为已闭合,false表示会根据路径的实际闭合状态测量。                  |
1160| distance | number | 是   | 表示与路径起始点的距离,小于0时会被视作0,大于路径长度时会被视作路径长度。该参数为浮点数。                  |
1161| matrix | [Matrix](#matrix12) | 是   | 矩阵对象,用于存储得到的矩阵。                  |
1162| flags | [PathMeasureMatrixFlags](#pathmeasurematrixflags12) | 是   | 矩阵信息维度枚举。                  |
1163
1164**返回值:**
1165
1166| 类型                  | 说明           |
1167| --------------------- | -------------- |
1168| boolean | 返回获取变换矩阵是否成功的结果,true表示获取成功,false表示获取失败。 |
1169
1170**错误码:**
1171
1172以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
1173
1174| 错误码ID | 错误信息 |
1175| ------- | --------------------------------------------|
1176| 401 | Parameter error. Possible causes: Mandatory parameters are left unspecified. |
1177
1178**示例:**
1179
1180```ts
1181import { drawing } from '@kit.ArkGraphics2D';
1182let path: drawing.Path = new drawing.Path();
1183let matrix = new drawing.Matrix();
1184if(path.getMatrix(false, 10, matrix, drawing.PathMeasureMatrixFlags.GET_TANGENT_MATRIX)) {
1185  console.info("path.getMatrix return true");
1186} else {
1187  console.info("path.getMatrix return false");
1188}
1189```
1190
1191### buildFromSvgString<sup>12+</sup>
1192
1193buildFromSvgString(str: string): boolean
1194
1195解析SVG字符串表示的路径。
1196
1197**系统能力**:SystemCapability.Graphics.Drawing
1198
1199**参数:**
1200
1201| 参数名   | 类型                                         | 必填 | 说明                            |
1202| -------- | -------------------------------------------- | ---- | ------------------------------- |
1203| str | string | 是   | SVG格式的字符串,用于描述绘制路径。                 |
1204
1205**返回值:**
1206
1207| 类型                  | 说明           |
1208| --------------------- | -------------- |
1209| boolean | 返回解析SVG字符串是否成功的结果,true表示解析成功,false表示解析失败。 |
1210
1211**错误码:**
1212
1213以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
1214
1215| 错误码ID | 错误信息 |
1216| ------- | --------------------------------------------|
1217| 401 | Parameter error. Possible causes: Mandatory parameters are left unspecified. |
1218
1219**示例:**
1220
1221```ts
1222import { drawing } from '@kit.ArkGraphics2D';
1223let path: drawing.Path = new drawing.Path();
1224let svgStr: string =  "M150 100 L75 300 L225 300 Z";
1225if(path.buildFromSvgString(svgStr)) {
1226  console.info("buildFromSvgString return true");
1227} else {
1228  console.info("buildFromSvgString return false");
1229}
1230```
1231
1232## Canvas
1233
1234承载绘制内容与绘制状态的载体。
1235
1236> **说明:**
1237>
1238> 画布自带一个黑色,开启反走样,不具备其他任何样式效果的默认画刷,当且仅当画布中主动设置的画刷和画笔都不存在时生效。
1239
1240### constructor
1241
1242constructor(pixelmap: image.PixelMap)
1243
1244Canvas对象的构造函数。
1245
1246**系统能力**:SystemCapability.Graphics.Drawing
1247
1248**参数:**
1249
1250| 参数名   | 类型                                         | 必填 | 说明           |
1251| -------- | -------------------------------------------- | ---- | -------------- |
1252| pixelmap | [image.PixelMap](../apis-image-kit/js-apis-image.md#pixelmap7) | 是   | 构造函数入参。 |
1253
1254**错误码:**
1255
1256以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
1257
1258| 错误码ID | 错误信息 |
1259| ------- | --------------------------------------------|
1260| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. |
1261
1262**示例:**
1263
1264```ts
1265import { drawing } from '@kit.ArkGraphics2D';
1266import { image } from '@kit.ImageKit';
1267const color = new ArrayBuffer(96);
1268let opts : image.InitializationOptions = {
1269  editable: true,
1270  pixelFormat: 3,
1271  size: {
1272    height: 4,
1273    width: 6
1274  }
1275}
1276image.createPixelMap(color, opts).then((pixelMap) => {
1277  const canvas = new drawing.Canvas(pixelMap);
1278})
1279```
1280
1281### drawRect
1282
1283drawRect(rect: common2D.Rect): void
1284
1285用于绘制一个矩形,默认使用黑色填充。
1286
1287**系统能力**:SystemCapability.Graphics.Drawing
1288
1289**参数:**
1290
1291| 参数名 | 类型                                               | 必填 | 说明           |
1292| ------ | -------------------------------------------------- | ---- | -------------- |
1293| rect   | [common2D.Rect](js-apis-graphics-common2D.md#rect) | 是   | 绘制的矩形区域 |
1294
1295**错误码:**
1296
1297以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
1298
1299| 错误码ID | 错误信息 |
1300| ------- | --------------------------------------------|
1301| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. |
1302
1303**示例:**
1304
1305```ts
1306import { RenderNode } from '@kit.ArkUI';
1307import { common2D, drawing } from '@kit.ArkGraphics2D';
1308class DrawingRenderNode extends RenderNode {
1309  draw(context : DrawContext) {
1310    const canvas = context.canvas;
1311    const pen = new drawing.Pen();
1312    pen.setStrokeWidth(5);
1313    pen.setColor({alpha: 255, red: 255, green: 0, blue: 0});
1314    canvas.attachPen(pen);
1315    canvas.drawRect({ left : 0, right : 10, top : 0, bottom : 10 });
1316    canvas.detachPen();
1317  }
1318}
1319```
1320
1321### drawRect<sup>12+</sup>
1322
1323drawRect(left: number, top: number, right: number, bottom: number): void
1324
1325用于绘制一个矩形,默认使用黑色填充。性能优于[drawRect](#drawrect)接口,推荐使用本接口。
1326
1327**系统能力**:SystemCapability.Graphics.Drawing
1328
1329**参数:**
1330
1331| 参数名 | 类型    | 必填 | 说明           |
1332| ------ | ------ | ---- | -------------- |
1333| left   | number | 是   | 矩形的左上角x轴坐标,该参数为浮点数。 |
1334| top    | number | 是   | 矩形的左上角y轴坐标,该参数为浮点数。 |
1335| right  | number | 是   | 矩形的右下角x轴坐标,该参数为浮点数。 |
1336| bottom | number | 是   | 矩形的右下角y轴坐标,该参数为浮点数。 |
1337
1338**错误码:**
1339
1340以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
1341
1342| 错误码ID | 错误信息 |
1343| ------- | --------------------------------------------|
1344| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. |
1345
1346**示例:**
1347
1348```ts
1349import { RenderNode } from '@kit.ArkUI';
1350import { drawing } from '@kit.ArkGraphics2D';
1351class DrawingRenderNode extends RenderNode {
1352
1353  draw(context : DrawContext) {
1354    const canvas = context.canvas;
1355    const pen = new drawing.Pen();
1356    pen.setStrokeWidth(5);
1357    pen.setColor({alpha: 255, red: 255, green: 0, blue: 0});
1358    canvas.attachPen(pen);
1359    canvas.drawRect(0, 0, 10, 10);
1360    canvas.detachPen();
1361  }
1362}
1363```
1364
1365### drawRoundRect<sup>12+</sup>
1366
1367drawRoundRect(roundRect: RoundRect): void
1368
1369画一个圆角矩形。
1370
1371**系统能力**:SystemCapability.Graphics.Drawing
1372
1373**参数**
1374
1375| 参数名     | 类型                    | 必填 | 说明       |
1376| ---------- | ----------------------- | ---- | ------------ |
1377| roundRect  | [RoundRect](#roundrect12) | 是   | 圆角矩形对象。|
1378
1379**错误码:**
1380
1381以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
1382
1383| 错误码ID | 错误信息 |
1384| ------- | --------------------------------------------|
1385| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. |
1386
1387**示例**
1388
1389```ts
1390import { RenderNode } from '@kit.ArkUI';
1391import { common2D, drawing } from '@kit.ArkGraphics2D';
1392class DrawingRenderNode extends RenderNode {
1393  draw(context : DrawContext) {
1394    const canvas = context.canvas;
1395    let rect: common2D.Rect = { left : 100, top : 100, right : 400, bottom : 500 };
1396    let roundRect = new drawing.RoundRect(rect, 10, 10);
1397    canvas.drawRoundRect(roundRect);
1398  }
1399}
1400```
1401
1402### drawNestedRoundRect<sup>12+</sup>
1403
1404drawNestedRoundRect(outer: RoundRect, inner: RoundRect): void
1405
1406绘制两个嵌套的圆角矩形,外部矩形边界必须包含内部矩形边界,否则无绘制效果。
1407
1408**系统能力**:SystemCapability.Graphics.Drawing
1409
1410**参数**
1411
1412| 参数名  | 类型                    | 必填 | 说明       |
1413| ------ | ----------------------- | ---- | ------------ |
1414| outer  | [RoundRect](#roundrect12) | 是   | 圆角矩形对象,表示外部圆角矩形边界。|
1415| inner  | [RoundRect](#roundrect12) | 是   | 圆角矩形对象,表示内部圆角矩形边界。|
1416
1417**错误码:**
1418
1419以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
1420
1421| 错误码ID | 错误信息 |
1422| ------- | --------------------------------------------|
1423| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. |
1424
1425**示例**
1426
1427```ts
1428import { RenderNode } from '@kit.ArkUI';
1429import { common2D, drawing } from '@kit.ArkGraphics2D';
1430class DrawingRenderNode extends RenderNode {
1431  draw(context : DrawContext) {
1432    const canvas = context.canvas;
1433    let inRect: common2D.Rect = { left : 200, top : 200, right : 400, bottom : 500 };
1434    let outRect: common2D.Rect = { left : 100, top : 100, right : 400, bottom : 500 };
1435    let outRoundRect = new drawing.RoundRect(outRect, 10, 10);
1436    let inRoundRect = new drawing.RoundRect(inRect, 10, 10);
1437    canvas.drawNestedRoundRect(outRoundRect, inRoundRect);
1438    canvas.drawRoundRect(outRoundRect);
1439  }
1440}
1441```
1442
1443### drawBackground<sup>12+</sup>
1444
1445drawBackground(brush: Brush): void
1446
1447使用画刷填充画布的可绘制区域。
1448
1449**系统能力**:SystemCapability.Graphics.Drawing
1450
1451**参数**
1452
1453| 参数名 | 类型            | 必填 | 说明       |
1454| ------ | --------------- | ---- | ---------- |
1455| brush  | [Brush](#brush) | 是   | 画刷对象。 |
1456
1457**错误码:**
1458
1459以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
1460
1461| 错误码ID | 错误信息 |
1462| ------- | --------------------------------------------|
1463| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. |
1464
1465**示例**
1466
1467```ts
1468import { RenderNode } from '@kit.ArkUI';
1469import { common2D, drawing } from '@kit.ArkGraphics2D';
1470class DrawingRenderNode extends RenderNode {
1471  draw(context : DrawContext) {
1472    const canvas = context.canvas;
1473    const brush = new drawing.Brush();
1474    const color : common2D.Color = { alpha: 255, red: 255, green: 0, blue: 0 };
1475    brush.setColor(color);
1476    canvas.drawBackground(brush);
1477  }
1478}
1479```
1480
1481### drawShadow<sup>12+</sup>
1482
1483drawShadow(path: Path, planeParams: common2D.Point3d, devLightPos: common2D.Point3d, lightRadius: number, ambientColor: common2D.Color, spotColor: common2D.Color, flag: ShadowFlag) : void
1484
1485绘制射灯类型阴影,使用路径描述环境光阴影的轮廓。
1486
1487**系统能力**:SystemCapability.Graphics.Drawing
1488
1489**参数:**
1490
1491| 参数名          | 类型                                       | 必填   | 说明         |
1492| ------------ | ---------------------------------------- | ---- | ---------- |
1493| path | [Path](#path)                | 是    | 路径对象,可生成阴影。 |
1494| planeParams  | [common2D.Point3d](js-apis-graphics-common2D.md#point3d12) | 是    | 表示一个三维向量,用于计算z轴方向的偏移量。 |
1495| devLightPos  | [common2D.Point3d](js-apis-graphics-common2D.md#point3d12) | 是    | 光线相对于画布的位置。 |
1496| lightRadius   | number           | 是    | 圆形灯半径,该参数为浮点数。      |
1497| ambientColor  | [common2D.Color](js-apis-graphics-common2D.md#color) | 是    | 环境阴影颜色。 |
1498| spotColor  | [common2D.Color](js-apis-graphics-common2D.md#color) | 是    | 点阴影颜色。 |
1499| flag         | [ShadowFlag](#shadowflag12)                  | 是    | 阴影标志枚举。    |
1500
1501**错误码:**
1502
1503以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
1504
1505| 错误码ID | 错误信息 |
1506| ------- | --------------------------------------------|
1507| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types;3.Parameter verification failed. |
1508
1509**示例:**
1510
1511```ts
1512import { RenderNode } from '@kit.ArkUI';
1513import { common2D, drawing } from '@kit.ArkGraphics2D';
1514class DrawingRenderNode extends RenderNode {
1515  draw(context : DrawContext) {
1516    const canvas = context.canvas;
1517    const path = new drawing.Path();
1518    path.addCircle(100, 200, 100, drawing.PathDirection.CLOCKWISE);
1519    let pen = new drawing.Pen();
1520    pen.setAntiAlias(true);
1521    let pen_color : common2D.Color = { alpha: 0xFF, red: 0xFF, green: 0x00, blue: 0x00 };
1522    pen.setColor(pen_color);
1523    pen.setStrokeWidth(10.0);
1524    canvas.attachPen(pen);
1525    let brush = new drawing.Brush();
1526    let brush_color : common2D.Color = { alpha: 0xFF, red: 0x00, green: 0xFF, blue: 0x00 };
1527    brush.setColor(brush_color);
1528    canvas.attachBrush(brush);
1529    let point1 : common2D.Point3d = {x: 100, y: 80, z:80};
1530    let point2 : common2D.Point3d = {x: 200, y: 10, z:40};
1531    let color1 : common2D.Color = {alpha: 0xFF, red:0, green:0, blue:0xFF};
1532    let color2 : common2D.Color = {alpha: 0xFF, red:0xFF, green:0, blue:0};
1533    let shadowFlag : drawing.ShadowFlag = drawing.ShadowFlag.ALL;
1534    canvas.drawShadow(path, point1, point2, 30, color1, color2, shadowFlag);
1535  }
1536}
1537```
1538
1539### drawShadow<sup>13+</sup>
1540
1541drawShadow(path: Path, planeParams: common2D.Point3d, devLightPos: common2D.Point3d, lightRadius: number, ambientColor: number, spotColor: number, flag: ShadowFlag) : void
1542
1543绘制射灯类型阴影,使用路径描述环境光阴影的轮廓。
1544
1545**系统能力**:SystemCapability.Graphics.Drawing
1546
1547**参数:**
1548
1549| 参数名          | 类型                                       | 必填   | 说明         |
1550| ------------ | ---------------------------------------- | ---- | ---------- |
1551| path | [Path](#path)                | 是    | 路径对象,可生成阴影。 |
1552| planeParams  | [common2D.Point3d](js-apis-graphics-common2D.md#point3d12) | 是    | 表示一个三维向量,用于计算z轴方向的偏移量。 |
1553| devLightPos  | [common2D.Point3d](js-apis-graphics-common2D.md#point3d12) | 是    | 光线相对于画布的位置。 |
1554| lightRadius   | number           | 是    | 圆形灯半径,该参数为浮点数。      |
1555| ambientColor  |number | 是    | 环境阴影颜色,用16进制ARGB格式的32位无符号整数表示 |
1556| spotColor  |number | 是    | 点阴影颜色,用16进制ARGB格式的32位无符号整数表示 |
1557| flag         | [ShadowFlag](#shadowflag12)                  | 是    | 阴影标志枚举。    |
1558
1559**错误码:**
1560
1561以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
1562
1563| 错误码ID | 错误信息 |
1564| ------- | --------------------------------------------|
1565| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types;3.Parameter verification failed. |
1566
1567**示例:**
1568
1569```ts
1570import { RenderNode } from '@kit.ArkUI';
1571import { common2D, drawing } from '@kit.ArkGraphics2D';
1572class DrawingRenderNode extends RenderNode {
1573  draw(context : DrawContext) {
1574    const canvas = context.canvas;
1575    const path = new drawing.Path();
1576    path.addCircle(300, 600, 100, drawing.PathDirection.CLOCKWISE);
1577    let point1 : common2D.Point3d = {x: 100, y: 80, z:80};
1578    let point2 : common2D.Point3d = {x: 200, y: 10, z:40};
1579    let shadowFlag : drawing.ShadowFlag = drawing.ShadowFlag.ALL;
1580    canvas.drawShadow(path, point1, point2, 30, 0xFF0000FF, 0xFFFF0000, shadowFlag);
1581  }
1582}
1583```
1584
1585### getLocalClipBounds<sup>12+</sup>
1586
1587getLocalClipBounds(): common2D.Rect
1588
1589获取画布裁剪区域的边界。
1590
1591**系统能力**:SystemCapability.Graphics.Drawing
1592
1593**返回值:**
1594
1595| 类型                                       | 说明       |
1596| ---------------------------------------- | -------- |
1597| [common2D.Rect](js-apis-graphics-common2D.md#rect) | 返回画布裁剪区域的矩形边界。 |
1598
1599**示例:**
1600
1601```ts
1602import { RenderNode } from '@kit.ArkUI';
1603import { common2D, drawing } from '@kit.ArkGraphics2D';
1604class DrawingRenderNode extends RenderNode {
1605  draw(context : DrawContext) {
1606    const canvas = context.canvas;
1607    let clipRect: common2D.Rect = {
1608      left : 150, top : 150, right : 300, bottom : 400
1609    };
1610    canvas.clipRect(clipRect,drawing.ClipOp.DIFFERENCE, true);
1611    console.info("test rect.left: " + clipRect.left);
1612    console.info("test rect.top: " + clipRect.top);
1613    console.info("test rect.right: " + clipRect.right);
1614    console.info("test rect.bottom: " + clipRect.bottom);
1615    canvas.getLocalClipBounds();
1616  }
1617}
1618```
1619
1620### getTotalMatrix<sup>12+</sup>
1621
1622getTotalMatrix(): Matrix
1623
1624获取画布矩阵。
1625
1626**系统能力**:SystemCapability.Graphics.Drawing
1627
1628**返回值:**
1629
1630| 类型                | 说明       |
1631| ----------------- | -------- |
1632| [Matrix](#matrix12) |返回画布矩阵。 |
1633
1634**示例:**
1635
1636```ts
1637import { RenderNode } from '@kit.ArkUI';
1638import { drawing } from '@kit.ArkGraphics2D';
1639class DrawingRenderNode extends RenderNode {
1640  draw(context : DrawContext) {
1641    const canvas = context.canvas;
1642    let matrix = new drawing.Matrix();
1643    matrix.setMatrix([5, 0, 0, 0, 1, 1, 0, 0, 1]);
1644    canvas.setMatrix(matrix);
1645    let matrixResult =canvas.getTotalMatrix();
1646  }
1647}
1648```
1649
1650### drawCircle
1651
1652drawCircle(x: number, y: number, radius: number): void
1653
1654用于画一个圆形。如果半径小于等于零,则不绘制任何内容。默认使用黑色填充。
1655
1656**系统能力**:SystemCapability.Graphics.Drawing
1657
1658**参数:**
1659
1660| 参数名 | 类型   | 必填 | 说明                |
1661| ------ | ------ | ---- | ------------------- |
1662| x      | number | 是   | 圆心的x坐标,该参数为浮点数。 |
1663| y      | number | 是   | 圆心的y坐标,该参数为浮点数。 |
1664| radius | number | 是   | 圆的半径,大于0的浮点数。 |
1665
1666**错误码:**
1667
1668以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
1669
1670| 错误码ID | 错误信息 |
1671| ------- | --------------------------------------------|
1672| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types;3.Parameter verification failed. |
1673
1674**示例:**
1675
1676```ts
1677import { RenderNode } from '@kit.ArkUI';
1678import { drawing } from '@kit.ArkGraphics2D';
1679class DrawingRenderNode extends RenderNode {
1680  draw(context : DrawContext) {
1681    const canvas = context.canvas;
1682    const pen = new drawing.Pen();
1683    pen.setStrokeWidth(5);
1684    pen.setColor({alpha: 255, red: 255, green: 0, blue: 0});
1685    canvas.attachPen(pen);
1686    canvas.drawCircle(10, 10, 2);
1687    canvas.detachPen();
1688  }
1689}
1690```
1691
1692### drawImage
1693
1694drawImage(pixelmap: image.PixelMap, left: number, top: number, samplingOptions?: SamplingOptions): void
1695
1696用于画一张图片,图片的左上角坐标为(left, top)。
1697
1698**系统能力**:SystemCapability.Graphics.Drawing
1699
1700**参数:**
1701
1702| 参数名   | 类型                                         | 必填 | 说明                            |
1703| -------- | -------------------------------------------- | ---- | ------------------------------- |
1704| pixelmap | [image.PixelMap](../apis-image-kit/js-apis-image.md#pixelmap7) | 是   | 图片的PixelMap                  |
1705| left     | number                                       | 是   | 图片位置的左上角x轴坐标,该参数为浮点数。 |
1706| top      | number                                       | 是   | 图片位置的左上角y轴坐标,该参数为浮点数。 |
1707| samplingOptions<sup>12+</sup>  | [SamplingOptions](#samplingoptions12)  | 否  | 采样选项对象,默认为不使用任何参数构造的原始采样选项对象。 |
1708
1709**错误码:**
1710
1711以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
1712
1713| 错误码ID | 错误信息 |
1714| ------- | --------------------------------------------|
1715| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. |
1716
1717**示例:**
1718
1719```ts
1720import { RenderNode } from '@kit.ArkUI';
1721import { image } from '@kit.ImageKit';
1722import { drawing } from '@kit.ArkGraphics2D';
1723class DrawingRenderNode extends RenderNode {
1724  pixelMap: image.PixelMap | null = null;
1725
1726  async draw(context : DrawContext) {
1727    const canvas = context.canvas;
1728    let options = new drawing.SamplingOptions(drawing.FilterMode.FILTER_MODE_NEAREST);
1729    if (this.pixelMap != null) {
1730      canvas.drawImage(this.pixelMap, 0, 0, options);
1731    }
1732  }
1733}
1734```
1735
1736### drawImageRect<sup>12+</sup>
1737
1738drawImageRect(pixelmap: image.PixelMap, dstRect: common2D.Rect, samplingOptions?: SamplingOptions): void
1739
1740将图片绘制到画布的指定区域上。
1741
1742**系统能力**:SystemCapability.Graphics.Drawing
1743
1744**参数:**
1745
1746| 参数名   | 类型                                         | 必填 | 说明                            |
1747| -------- | -------------------------------------------- | ---- | ------------------------------- |
1748| pixelmap | [image.PixelMap](../apis-image-kit/js-apis-image.md#pixelmap7) | 是   | 图片的PixelMap。                 |
1749| dstRect     | [common2D.Rect](js-apis-graphics-common2D.md#rect)                               | 是   | 矩形对象,用于指定画布上图片的绘制区域。 |
1750| samplingOptions     | [SamplingOptions](#samplingoptions12)                           | 否   | 采样选项对象,默认为不使用任何参数构造的原始采样选项对象。 |
1751
1752**错误码:**
1753
1754以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
1755
1756| 错误码ID | 错误信息 |
1757| ------- | --------------------------------------------|
1758| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. |
1759
1760**示例:**
1761
1762```ts
1763import { RenderNode } from '@kit.ArkUI';
1764import { image } from '@kit.ImageKit';
1765import { common2D, drawing } from '@kit.ArkGraphics2D';
1766class DrawingRenderNode extends RenderNode {
1767pixelMap: image.PixelMap | null = null;
1768  draw(context : DrawContext) {
1769    const canvas = context.canvas;
1770    let pen = new drawing.Pen();
1771    canvas.attachPen(pen);
1772    let rect: common2D.Rect = { left: 0, top: 0, right: 200, bottom: 200 };
1773    canvas.drawImageRect(this.pixelMap, rect);
1774    canvas.detachPen();
1775  }
1776}
1777```
1778
1779### drawImageRectWithSrc<sup>12+</sup>
1780
1781drawImageRectWithSrc(pixelmap: image.PixelMap, srcRect: common2D.Rect, dstRect: common2D.Rect, samplingOptions?: SamplingOptions, constraint?: SrcRectConstraint): void
1782
1783将图片的指定区域绘制到画布的指定区域。
1784
1785**系统能力**:SystemCapability.Graphics.Drawing
1786
1787**参数:**
1788
1789| 参数名   | 类型                                         | 必填 | 说明                            |
1790| -------- | -------------------------------------------- | ---- | ------------------------------- |
1791| pixelmap | [image.PixelMap](../apis-image-kit/js-apis-image.md#pixelmap7) | 是   | 图片的PixelMap。                 |
1792| srcRect     | [common2D.Rect](js-apis-graphics-common2D.md#rect)                               | 是   | 矩形对象,用于指定图片的待绘制区域。 |
1793| dstRect     | [common2D.Rect](js-apis-graphics-common2D.md#rect)                               | 是   | 矩形对象,用于指定画布上图片的绘制区域。 |
1794| samplingOptions     | [SamplingOptions](#samplingoptions12)                           | 否   | 采样选项对象,默认为不使用任何参数构造的原始采样选项对象。 |
1795| constraint     | [SrcRectConstraint](#srcrectconstraint12)                        | 否   | 源矩形区域约束类型,默认为STRICT。 |
1796
1797**错误码:**
1798
1799以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
1800
1801| 错误码ID | 错误信息 |
1802| ------- | --------------------------------------------|
1803| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. |
1804
1805**示例:**
1806
1807```ts
1808import { RenderNode } from '@kit.ArkUI';
1809import { image } from '@kit.ImageKit';
1810import { common2D, drawing } from '@kit.ArkGraphics2D';
1811class DrawingRenderNode extends RenderNode {
1812pixelMap: image.PixelMap | null = null;
1813  draw(context : DrawContext) {
1814    const canvas = context.canvas;
1815    let pen = new drawing.Pen();
1816    canvas.attachPen(pen);
1817    let srcRect: common2D.Rect = { left: 0, top: 0, right: 100, bottom: 100 };
1818    let dstRect: common2D.Rect = { left: 100, top: 100, right: 200, bottom: 200 };
1819    canvas.drawImageRectWithSrc(this.pixelMap, srcRect, dstRect);
1820    canvas.detachPen();
1821  }
1822}
1823```
1824
1825### drawColor
1826
1827drawColor(color: common2D.Color, blendMode?: BlendMode): void
1828
1829绘制背景颜色。
1830
1831**系统能力**:SystemCapability.Graphics.Drawing
1832
1833**参数:**
1834
1835| 参数名    | 类型                                                 | 必填 | 说明                             |
1836| --------- | ---------------------------------------------------- | ---- | -------------------------------- |
1837| color     | [common2D.Color](js-apis-graphics-common2D.md#color) | 是   | ARGB格式的颜色,每个颜色通道是0到255之间的整数。                   |
1838| blendMode | [BlendMode](#blendmode)                              | 否   | 颜色混合模式,默认模式为SRC_OVER |
1839
1840**错误码:**
1841
1842以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
1843
1844| 错误码ID | 错误信息 |
1845| ------- | --------------------------------------------|
1846| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types;3.Parameter verification failed. |
1847
1848**示例:**
1849
1850```ts
1851import { RenderNode } from '@kit.ArkUI';
1852import { common2D, drawing } from '@kit.ArkGraphics2D';
1853class DrawingRenderNode extends RenderNode {
1854  draw(context : DrawContext) {
1855    const canvas = context.canvas;
1856    let color: common2D.Color = {
1857      alpha : 255,
1858      red: 0,
1859      green: 10,
1860      blue: 10
1861    }
1862    canvas.drawColor(color, drawing.BlendMode.CLEAR);
1863  }
1864}
1865```
1866
1867### drawColor<sup>12+</sup>
1868
1869drawColor(alpha: number, red: number, green: number, blue: number, blendMode?: BlendMode): void
1870
1871绘制背景颜色。性能优于[drawColor](#drawcolor)接口,推荐使用本接口。
1872
1873**系统能力**:SystemCapability.Graphics.Drawing
1874
1875**参数:**
1876
1877| 参数名     | 类型                    | 必填 | 说明                                               |
1878| --------- | ----------------------- | ---- | ------------------------------------------------- |
1879| alpha     | number                  | 是   | ARGB格式颜色的透明度通道值,该参数是0到255之间的整数,传入范围内的浮点数会向下取整。 |
1880| red       | number                  | 是   | ARGB格式颜色的红色通道值,该参数是0到255之间的整数,传入范围内的浮点数会向下取整。   |
1881| green     | number                  | 是   | ARGB格式颜色的绿色通道值,该参数是0到255之间的整数,传入范围内的浮点数会向下取整。   |
1882| blue      | number                  | 是   | ARGB格式颜色的蓝色通道值,该参数是0到255之间的整数,传入范围内的浮点数会向下取整。   |
1883| blendMode | [BlendMode](#blendmode) | 否   | 颜色混合模式,默认模式为SRC_OVER。                   |
1884
1885**错误码:**
1886
1887以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
1888
1889| 错误码ID | 错误信息 |
1890| ------- | --------------------------------------------|
1891| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types;3.Parameter verification failed. |
1892
1893**示例:**
1894
1895```ts
1896import { RenderNode } from '@kit.ArkUI';
1897import { drawing } from '@kit.ArkGraphics2D';
1898class DrawingRenderNode extends RenderNode {
1899  draw(context : DrawContext) {
1900    const canvas = context.canvas;
1901    canvas.drawColor(255, 0, 10, 10, drawing.BlendMode.CLEAR);
1902  }
1903}
1904```
1905
1906### drawPixelMapMesh<sup>12+</sup>
1907
1908drawPixelMapMesh(pixelmap: image.PixelMap, meshWidth: number, meshHeight: number, vertices: Array\<number>, vertOffset: number, colors: Array\<number>, colorOffset: number): void
1909
1910在网格上绘制像素图,网格均匀分布在像素图上。
1911
1912**系统能力**:SystemCapability.Graphics.Drawing
1913
1914**参数:**
1915
1916| 参数名      | 类型            | 必填 | 说明                            |
1917| ----------- | -------------  | ---- | ------------------------------- |
1918| pixelmap    | [image.PixelMap](../apis-image-kit/js-apis-image.md#pixelmap7) | 是   | 用于绘制网格的像素图。 |
1919| meshWidth   | number         | 是   | 网格中的列数,大于0的整数。 |
1920| meshHeight  | number         | 是   | 网格中的行数,大于0的整数。 |
1921| vertices    | Array\<number> | 是   | 顶点数组,指定网格的绘制位置,浮点数组,大小必须为((meshWidth+1) * (meshHeight+1) + vertOffset) * 2。 |
1922| vertOffset  | number         | 是   | 绘图前要跳过的vert元素数,大于等于0的整数。 |
1923| colors      | Array\<number> | 是   | 颜色数组,在每个顶点指定一种颜色,整数数组,可为null,大小必须为(meshWidth+1) * (meshHeight+1) + colorOffset。 |
1924| colorOffset | number         | 是   | 绘制前要跳过的颜色元素数,大于等于0的整数。 |
1925
1926**错误码:**
1927
1928以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
1929
1930| 错误码ID | 错误信息 |
1931| ------- | --------------------------------------------|
1932| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. |
1933
1934**示例:**
1935
1936```ts
1937import { RenderNode } from '@kit.ArkUI';
1938import { image } from '@kit.ImageKit';
1939import { drawing } from '@kit.ArkGraphics2D';
1940class DrawingRenderNode extends RenderNode {
1941  pixelMap: image.PixelMap | null = null;
1942
1943  async draw(context : DrawContext) {
1944    const canvas = context.canvas;
1945    if (this.pixelMap != null) {
1946      const brush = new drawing.Brush(); // 只支持brush,使用pen没有绘制效果。
1947      canvas.attachBrush(brush);
1948      let verts : Array<number> = [0, 0, 50, 0, 410, 0, 0, 180, 50, 180, 410, 180, 0, 360, 50, 360, 410, 360]; // 18
1949      canvas.drawPixelMapMesh(this.pixelMap, 2, 2, verts, 0, null, 0);
1950      canvas.detachBrush();
1951    }
1952  }
1953}
1954```
1955
1956### clear<sup>12+</sup>
1957
1958clear(color: common2D.Color): void
1959
1960使用指定颜色填充画布上的裁剪区域。
1961
1962**系统能力**:SystemCapability.Graphics.Drawing
1963
1964**参数:**
1965
1966| 参数名    | 类型                                                 | 必填 | 说明                             |
1967| --------- | ---------------------------------------------------- | ---- | -------------------------------- |
1968| color     | [common2D.Color](js-apis-graphics-common2D.md#color) | 是   | ARGB格式的颜色,每个颜色通道是0到255之间的整数。      |
1969
1970**错误码:**
1971
1972以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
1973
1974| 错误码ID | 错误信息 |
1975| ------- | --------------------------------------------|
1976| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. |
1977
1978**示例:**
1979
1980```ts
1981import { RenderNode } from '@kit.ArkUI';
1982import { common2D, drawing } from '@kit.ArkGraphics2D';
1983class DrawingRenderNode extends RenderNode {
1984  draw(context : DrawContext) {
1985    const canvas = context.canvas;
1986    let color: common2D.Color = {alpha: 255, red: 255, green: 0, blue: 0};
1987    canvas.clear(color);
1988  }
1989}
1990```
1991
1992### clear<sup>13+</sup>
1993
1994clear(number): void
1995
1996使用指定颜色填充画布上的裁剪区域。
1997
1998**系统能力**:SystemCapability.Graphics.Drawing
1999
2000**参数:**
2001
2002| 参数名    | 类型                                                 | 必填 | 说明                             |
2003| --------- | ---------------------------------------------------- | ---- | -------------------------------- |
2004| color     | number| 是   | 颜色用16进制ARGB格式的32位无符号整数表示。  |
2005
2006**错误码:**
2007
2008以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
2009
2010| 错误码ID | 错误信息 |
2011| ------- | --------------------------------------------|
2012| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. |
2013
2014**示例:**
2015
2016```ts
2017import { RenderNode } from '@kit.ArkUI';
2018import { drawing } from '@kit.ArkGraphics2D';
2019class DrawingRenderNode extends RenderNode {
2020  draw(context : DrawContext) {
2021    const canvas = context.canvas;
2022    let color: number = 0xffff0000;
2023    canvas.clear(color);
2024  }
2025}
2026```
2027
2028### getWidth<sup>12+</sup>
2029
2030getWidth(): number
2031
2032获取画布的宽度。
2033
2034**系统能力**:SystemCapability.Graphics.Drawing
2035
2036**返回值:**
2037
2038| 类型   | 必填 | 说明           |
2039| ------ | ---- | -------------- |
2040| number | 是   | 返回画布的宽度,该参数为浮点数。 |
2041
2042**示例:**
2043
2044```ts
2045import { RenderNode } from '@kit.ArkUI';
2046import { drawing } from '@kit.ArkGraphics2D';
2047class DrawingRenderNode extends RenderNode {
2048  draw(context : DrawContext) {
2049    const canvas = context.canvas;
2050    let width = canvas.getWidth();
2051    console.info('get canvas width:' + width);
2052  }
2053}
2054```
2055
2056### getHeight<sup>12+</sup>
2057
2058getHeight(): number
2059
2060获取画布的高度。
2061
2062**系统能力**:SystemCapability.Graphics.Drawing
2063
2064**返回值:**
2065
2066| 类型   | 必填 | 说明           |
2067| ------ | ---- | -------------- |
2068| number | 是   | 返回画布的高度,该参数为浮点数。 |
2069
2070**示例:**
2071
2072```ts
2073import { RenderNode } from '@kit.ArkUI';
2074import { drawing } from '@kit.ArkGraphics2D';
2075class DrawingRenderNode extends RenderNode {
2076  draw(context : DrawContext) {
2077    const canvas = context.canvas;
2078    let height = canvas.getHeight();
2079    console.log('get canvas height:' + height);
2080  }
2081}
2082```
2083
2084### drawOval<sup>12+</sup>
2085
2086drawOval(oval: common2D.Rect): void
2087
2088在画布上绘制一个椭圆,椭圆的形状和位置由定义椭圆边界的矩形参数定义。
2089
2090**系统能力**:SystemCapability.Graphics.Drawing
2091
2092**参数**
2093
2094| 参数名 | 类型                                               | 必填 | 说明           |
2095| ------ | -------------------------------------------------- | ---- | -------------- |
2096| oval   | [common2D.Rect](js-apis-graphics-common2D.md#rect) | 是   | 矩形区域,该矩形的内切椭圆即为待绘制椭圆。 |
2097
2098**错误码:**
2099
2100以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
2101
2102| 错误码ID | 错误信息 |
2103| ------- | --------------------------------------------|
2104| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. |
2105
2106**示例**
2107
2108```ts
2109import { RenderNode } from '@kit.ArkUI';
2110import { common2D, drawing } from '@kit.ArkGraphics2D';
2111class DrawingRenderNode extends RenderNode {
2112  draw(context : DrawContext) {
2113    const canvas = context.canvas;
2114    const pen = new drawing.Pen();
2115    pen.setStrokeWidth(5);
2116    const color : common2D.Color = { alpha: 255, red: 255, green: 0, blue: 0 };
2117    pen.setColor(color);
2118    canvas.attachPen(pen);
2119    const rect: common2D.Rect = {left:100, top:50, right:400, bottom:500};
2120    canvas.drawOval(rect);
2121    canvas.detachPen();
2122  }
2123}
2124```
2125
2126### drawArc<sup>12+</sup>
2127
2128drawArc(arc: common2D.Rect, startAngle: number, sweepAngle: number): void
2129
2130在画布上绘制一段圆弧。该方法允许指定圆弧的起始角度、扫描角度。
2131
2132**系统能力**:SystemCapability.Graphics.Drawing
2133
2134**参数**
2135
2136| 参数名 | 类型                                               | 必填 | 说明           |
2137| ------ | -------------------------------------------------- | ---- | -------------- |
2138| arc   | [common2D.Rect](js-apis-graphics-common2D.md#rect) | 是   | 包含要绘制的圆弧的椭圆的矩形边界。 |
2139| startAngle      | number | 是   | 弧的起始角度,单位为度,该参数为浮点数。0度时起始点位于椭圆的右端点,正数时以顺时针方向放置起始点,负数时以逆时针方向放置起始点。 |
2140| sweepAngle      | number | 是   | 弧的扫描角度,单位为度,该参数为浮点数。为正数时顺时针扫描,为负数时逆时针扫描。 |
2141
2142**错误码:**
2143
2144以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
2145
2146| 错误码ID | 错误信息 |
2147| ------- | --------------------------------------------|
2148| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. |
2149
2150**示例**
2151
2152```ts
2153import { RenderNode } from '@kit.ArkUI';
2154import { common2D, drawing } from '@kit.ArkGraphics2D';
2155class DrawingRenderNode extends RenderNode {
2156  draw(context : DrawContext) {
2157    const canvas = context.canvas;
2158    const pen = new drawing.Pen();
2159    pen.setStrokeWidth(5);
2160    const color : common2D.Color = { alpha: 255, red: 255, green: 0, blue: 0 };
2161    pen.setColor(color);
2162    canvas.attachPen(pen);
2163    const rect: common2D.Rect = {left:100, top:50, right:400, bottom:200};
2164    canvas.drawArc(rect, 90, 180);
2165    canvas.detachPen();
2166  }
2167}
2168```
2169
2170### drawPoint
2171
2172drawPoint(x: number, y: number): void
2173
2174用于绘制一个点。
2175
2176**系统能力**:SystemCapability.Graphics.Drawing
2177
2178**参数:**
2179
2180| 参数名 | 类型   | 必填 | 说明                |
2181| ------ | ------ | ---- | ------------------- |
2182| x      | number | 是   | 点的x轴坐标,该参数为浮点数。 |
2183| y      | number | 是   | 点的y轴坐标,该参数为浮点数。 |
2184
2185**错误码:**
2186
2187以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
2188
2189| 错误码ID | 错误信息 |
2190| ------- | --------------------------------------------|
2191| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. |
2192
2193**示例:**
2194
2195```ts
2196import { RenderNode } from '@kit.ArkUI';
2197import { drawing } from '@kit.ArkGraphics2D';
2198class DrawingRenderNode extends RenderNode {
2199  draw(context : DrawContext) {
2200    const canvas = context.canvas;
2201    const pen = new drawing.Pen();
2202    pen.setStrokeWidth(5);
2203    pen.setColor({alpha: 255, red: 255, green: 0, blue: 0});
2204    canvas.attachPen(pen);
2205    canvas.drawPoint(10, 10);
2206    canvas.detachPen();
2207  }
2208}
2209```
2210
2211### drawPoints<sup>12+</sup>
2212
2213drawPoints(points: Array\<common2D.Point>, mode?: PointMode): void
2214
2215在画布上绘制一组点、线段或多边形。通过指定点的数组和绘制模式来决定如何绘制这些点。
2216
2217**系统能力**:SystemCapability.Graphics.Drawing
2218
2219**参数:**
2220
2221| 参数名  | 类型                                       | 必填   | 说明        |
2222| ---- | ---------------------------------------- | ---- | --------- |
2223| points  | Array\<[common2D.Point](js-apis-graphics-common2D.md#point)> | 是    | 要绘制的点的数组。长度不能为0。   |
2224| mode | [PointMode](#pointmode12)                  | 否    | 绘制数组中的点的方式,默认为drawing.PointMode.POINTS。 |
2225
2226**错误码:**
2227
2228以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
2229
2230| 错误码ID | 错误信息 |
2231| ------- | --------------------------------------------|
2232| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified;2. Incorrect parameter types; 3. Parameter verification failed.|
2233
2234**示例:**
2235
2236```ts
2237import { RenderNode } from '@kit.ArkUI';
2238import { common2D, drawing } from '@kit.ArkGraphics2D';
2239class DrawingRenderNode extends RenderNode {
2240  draw(context : DrawContext) {
2241    const canvas = context.canvas;
2242    const pen = new drawing.Pen();
2243    pen.setStrokeWidth(30);
2244    const color : common2D.Color = { alpha: 255, red: 255, green: 0, blue: 0 };
2245    pen.setColor(color);
2246    canvas.attachPen(pen);
2247    canvas.drawPoints([{x: 100, y: 200}, {x: 150, y: 230}, {x: 200, y: 300}], drawing.PointMode.POINTS);
2248    canvas.detachPen();
2249  }
2250}
2251```
2252
2253### drawPath
2254
2255drawPath(path: Path): void
2256
2257用于绘制一个自定义路径,该路径包含了一组路径轮廓,每个路径轮廓可以是开放的或封闭的。
2258
2259**系统能力**:SystemCapability.Graphics.Drawing
2260
2261**参数:**
2262
2263| 参数名 | 类型          | 必填 | 说明               |
2264| ------ | ------------- | ---- | ------------------ |
2265| path   | [Path](#path) | 是   | 要绘制的路径对象。 |
2266
2267**错误码:**
2268
2269以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
2270
2271| 错误码ID | 错误信息 |
2272| ------- | --------------------------------------------|
2273| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. |
2274
2275**示例:**
2276
2277```ts
2278import { RenderNode } from '@kit.ArkUI';
2279import { drawing } from '@kit.ArkGraphics2D';
2280class DrawingRenderNode extends RenderNode {
2281  draw(context : DrawContext) {
2282    const canvas = context.canvas;
2283    const pen = new drawing.Pen();
2284    pen.setStrokeWidth(5);
2285    pen.setColor({alpha: 255, red: 255, green: 0, blue: 0});
2286    let path = new drawing.Path();
2287    path.moveTo(10,10);
2288    path.cubicTo(10, 10, 10, 10, 15, 15);
2289    path.close();
2290    canvas.attachPen(pen);
2291    canvas.drawPath(path);
2292    canvas.detachPen();
2293  }
2294}
2295```
2296
2297### drawLine
2298
2299drawLine(x0: number, y0: number, x1: number, y1: number): void
2300
2301用于画一条直线段,从指定的起点到指点的终点。如果直线段的起点和终点是同一个点,无法绘制。
2302
2303**系统能力**:SystemCapability.Graphics.Drawing
2304
2305**参数:**
2306
2307| 参数名 | 类型   | 必填 | 说明                    |
2308| ------ | ------ | ---- | ----------------------- |
2309| x0     | number | 是   | 线段起点的X坐标,该参数为浮点数。 |
2310| y0     | number | 是   | 线段起点的Y坐标,该参数为浮点数。 |
2311| x1     | number | 是   | 线段终点的X坐标,该参数为浮点数。 |
2312| y1     | number | 是   | 线段终点的Y坐标,该参数为浮点数。 |
2313
2314**错误码:**
2315
2316以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
2317
2318| 错误码ID | 错误信息 |
2319| ------- | --------------------------------------------|
2320| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. |
2321
2322**示例:**
2323
2324```ts
2325import { RenderNode } from '@kit.ArkUI';
2326import { drawing } from '@kit.ArkGraphics2D';
2327class DrawingRenderNode extends RenderNode {
2328  draw(context : DrawContext) {
2329    const canvas = context.canvas;
2330    const pen = new drawing.Pen();
2331    pen.setStrokeWidth(5);
2332    pen.setColor({alpha: 255, red: 255, green: 0, blue: 0});
2333    canvas.attachPen(pen);
2334    canvas.drawLine(0, 0, 20, 20);
2335    canvas.detachPen();
2336  }
2337}
2338```
2339
2340### drawTextBlob
2341
2342drawTextBlob(blob: TextBlob, x: number, y: number): void
2343
2344用于绘制一段文字。若构造blob的字体不支持待绘制字符,则该部分字符无法绘制。
2345
2346**系统能力**:SystemCapability.Graphics.Drawing
2347
2348**参数:**
2349
2350| 参数名 | 类型                  | 必填 | 说明                                       |
2351| ------ | --------------------- | ---- | ------------------------------------------ |
2352| blob   | [TextBlob](#textblob) | 是   | TextBlob对象。                             |
2353| x      | number                | 是   | 所绘制出的文字基线(下图蓝线)的左端点(下图红点)的横坐标,该参数为浮点数。 |
2354| y      | number                | 是   | 所绘制出的文字基线(下图蓝线)的左端点(下图红点)的纵坐标,该参数为浮点数。 |
2355
2356![zh-ch_image_Text_Blob.png](figures/zh-ch_image_Text_Blob.png)
2357
2358**错误码:**
2359
2360以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
2361
2362| 错误码ID | 错误信息 |
2363| ------- | --------------------------------------------|
2364| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. |
2365
2366**示例:**
2367
2368```ts
2369import { RenderNode } from '@kit.ArkUI';
2370import { drawing } from '@kit.ArkGraphics2D';
2371class DrawingRenderNode extends RenderNode {
2372  draw(context : DrawContext) {
2373    const canvas = context.canvas;
2374    const brush = new drawing.Brush();
2375    brush.setColor({alpha: 255, red: 255, green: 0, blue: 0});
2376    const font = new drawing.Font();
2377    font.setSize(20);
2378    const textBlob = drawing.TextBlob.makeFromString("Hello, drawing", font, drawing.TextEncoding.TEXT_ENCODING_UTF8);
2379    canvas.attachBrush(brush);
2380    canvas.drawTextBlob(textBlob, 20, 20);
2381    canvas.detachBrush();
2382  }
2383}
2384```
2385
2386### drawSingleCharacter<sup>12+</sup>
2387
2388drawSingleCharacter(text: string, font: Font, x: number, y: number): void
2389
2390用于绘制单个字符。当前字型中的字体不支持待绘制字符时,退化到使用系统字体绘制字符。
2391
2392**系统能力**:SystemCapability.Graphics.Drawing
2393
2394**参数**
2395
2396| 参数名 | 类型                | 必填 | 说明        |
2397| ------ | ------------------- | ---- | ----------- |
2398| text   | string | 是   | 待绘制的单个字符,字符串的长度必须为1。  |
2399| font   | [Font](#font) | 是   | 字型对象。  |
2400| x      | number | 是   | 所绘制出的字符基线(下图蓝线)的左端点(下图红点)的横坐标,该参数为浮点数。 |
2401| y      | number | 是   | 所绘制出的字符基线(下图蓝线)的左端点(下图红点)的纵坐标,该参数为浮点数。 |
2402
2403![zh-ch_image_Text_Blob.png](figures/zh-ch_image_Text_Blob.png)
2404
2405**错误码:**
2406
2407以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
2408
2409| 错误码ID | 错误信息 |
2410| ------- | --------------------------------------------|
2411| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types;3.Parameter verification failed. |
2412
2413**示例**
2414
2415```ts
2416import { RenderNode } from '@kit.ArkUI';
2417import { drawing } from '@kit.ArkGraphics2D';
2418
2419class DrawingRenderNode extends RenderNode {
2420  draw(context : DrawContext) {
2421    const canvas = context.canvas;
2422    const brush = new drawing.Brush();
2423    brush.setColor({alpha: 255, red: 255, green: 0, blue: 0});
2424    const font = new drawing.Font();
2425    font.setSize(20);
2426    canvas.attachBrush(brush);
2427    canvas.drawSingleCharacter("你", font, 100, 100);
2428    canvas.drawSingleCharacter("好", font, 120, 100);
2429    canvas.detachBrush();
2430  }
2431}
2432```
2433
2434### drawRegion<sup>12+</sup>
2435
2436drawRegion(region: Region): void
2437
2438用于绘制一个区域。
2439
2440**系统能力**:SystemCapability.Graphics.Drawing
2441
2442**参数**
2443
2444| 参数名 | 类型                | 必填 | 说明        |
2445| ------ | ------------------- | ---- | ----------- |
2446| region   | [Region](#region12) | 是   | 绘制的区域  |
2447
2448**错误码:**
2449
2450以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
2451
2452| 错误码ID | 错误信息 |
2453| ------- | --------------------------------------------|
2454| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. |
2455
2456**示例**
2457
2458```ts
2459import { RenderNode } from '@kit.ArkUI';
2460class DrawingRenderNode extends RenderNode {
2461  draw(context : DrawContext) {
2462    const canvas = context.canvas;
2463    const pen = new drawing.Pen();
2464    let region = new drawing.Region();
2465    pen.setStrokeWidth(10);
2466    pen.setColor({ alpha: 255, red: 255, green: 0, blue: 0 });
2467    canvas.attachPen(pen);
2468    region.setRect(100, 100, 400, 400);
2469    canvas.drawRegion(region);
2470    canvas.detachPen();
2471  }
2472}
2473```
2474
2475### attachPen
2476
2477attachPen(pen: Pen): void
2478
2479绑定画笔给画布,画布将使用画笔的样式和颜色去绘制图形形状的轮廓。
2480
2481> **说明:**
2482>
2483> 执行该方法后,若pen的效果发生改变并且开发者希望该变化生效于接下来的绘制动作,需要再次执行该方法以确保变化生效。
2484
2485**系统能力**:SystemCapability.Graphics.Drawing
2486
2487**参数:**
2488
2489| 参数名 | 类型        | 必填 | 说明       |
2490| ------ | ----------- | ---- | ---------- |
2491| pen    | [Pen](#pen) | 是   | 画笔对象。 |
2492
2493**错误码:**
2494
2495以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
2496
2497| 错误码ID | 错误信息 |
2498| ------- | --------------------------------------------|
2499| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. |
2500
2501**示例:**
2502
2503```ts
2504import { RenderNode } from '@kit.ArkUI';
2505import { drawing } from '@kit.ArkGraphics2D';
2506class DrawingRenderNode extends RenderNode {
2507  draw(context : DrawContext) {
2508    const canvas = context.canvas;
2509    const pen = new drawing.Pen();
2510    pen.setStrokeWidth(5);
2511    pen.setColor({alpha: 255, red: 255, green: 0, blue: 0});
2512    canvas.attachPen(pen);
2513    canvas.drawRect({ left : 0, right : 10, top : 0, bottom : 10 });
2514    canvas.detachPen();
2515  }
2516}
2517```
2518
2519### attachBrush
2520
2521attachBrush(brush: Brush): void
2522
2523绑定画刷给画布,画布将使用画刷的样式和颜色去绘制图形形状,并在其内部进行填充。
2524
2525> **说明:**
2526>
2527> 执行该方法后,若brush的效果发生改变并且开发者希望该变化生效于接下来的绘制动作,需要再次执行该方法以确保变化生效。
2528
2529**系统能力**:SystemCapability.Graphics.Drawing
2530
2531**参数:**
2532
2533| 参数名 | 类型            | 必填 | 说明       |
2534| ------ | --------------- | ---- | ---------- |
2535| brush  | [Brush](#brush) | 是   | 画刷对象。 |
2536
2537**错误码:**
2538
2539以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
2540
2541| 错误码ID | 错误信息 |
2542| ------- | --------------------------------------------|
2543| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. |
2544
2545**示例:**
2546
2547```ts
2548import { RenderNode } from '@kit.ArkUI';
2549import { drawing } from '@kit.ArkGraphics2D';
2550class DrawingRenderNode extends RenderNode {
2551  draw(context : DrawContext) {
2552    const canvas = context.canvas;
2553    const brush = new drawing.Brush();
2554    brush.setColor({alpha: 255, red: 255, green: 0, blue: 0});
2555    canvas.attachBrush(brush);
2556    canvas.drawRect({ left : 0, right : 10, top : 0, bottom : 10 });
2557    canvas.detachBrush();
2558  }
2559}
2560```
2561
2562### detachPen
2563
2564detachPen(): void
2565
2566用于去除掉画布中的画笔,画布将不再使用画笔去绘制图形形状的轮廓。
2567
2568**系统能力**:SystemCapability.Graphics.Drawing
2569
2570**示例:**
2571
2572```ts
2573import { RenderNode } from '@kit.ArkUI';
2574import { drawing } from '@kit.ArkGraphics2D';
2575class DrawingRenderNode extends RenderNode {
2576  draw(context : DrawContext) {
2577    const canvas = context.canvas;
2578    const pen = new drawing.Pen();
2579    pen.setStrokeWidth(5);
2580    pen.setColor({alpha: 255, red: 255, green: 0, blue: 0});
2581    canvas.attachPen(pen);
2582    canvas.drawRect({ left : 0, right : 10, top : 0, bottom : 10 });
2583    canvas.detachPen();
2584  }
2585}
2586```
2587
2588### detachBrush
2589
2590detachBrush(): void
2591
2592用于去除掉画布中的画刷,画布将不再使用画刷去绘制图形形状,也不会进行填充。
2593
2594**系统能力**:SystemCapability.Graphics.Drawing
2595
2596**示例:**
2597
2598```ts
2599import { RenderNode } from '@kit.ArkUI';
2600import { drawing } from '@kit.ArkGraphics2D';
2601class DrawingRenderNode extends RenderNode {
2602  draw(context : DrawContext) {
2603    const canvas = context.canvas;
2604    const brush = new drawing.Brush();
2605    brush.setColor({alpha: 255, red: 255, green: 0, blue: 0});
2606    canvas.attachBrush(brush);
2607    canvas.drawRect({ left : 0, right : 10, top : 0, bottom : 10 });
2608    canvas.detachBrush();
2609  }
2610}
2611```
2612
2613### clipPath<sup>12+</sup>
2614
2615clipPath(path: Path, clipOp?: ClipOp, doAntiAlias?: boolean): void
2616
2617用于裁剪一个自定义路径。
2618
2619**系统能力**:SystemCapability.Graphics.Drawing
2620
2621**参数:**
2622
2623| 参数名       | 类型               | 必填 | 说明                                |
2624| ------------ | ----------------- | ---- | ------------------------------------|
2625| path         | [Path](#path)     | 是   | 路径对象。                                                 |
2626| clipOp       | [ClipOp](#clipop12) | 否   | 裁剪方式。默认为INTERSECT。                                     |
2627| doAntiAlias  | boolean           | 否   | 表示是否使能抗锯齿绘制。true表示使能,false表示不使能。默认为false。 |
2628
2629**错误码:**
2630
2631以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
2632
2633| 错误码ID | 错误信息 |
2634| ------- | --------------------------------------------|
2635| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. |
2636
2637**示例:**
2638
2639```ts
2640import { RenderNode } from '@kit.ArkUI';
2641import { common2D, drawing } from '@kit.ArkGraphics2D';
2642class DrawingRenderNode extends RenderNode {
2643  draw(context : DrawContext) {
2644    const canvas = context.canvas;
2645    const pen = new drawing.Pen();
2646    pen.setStrokeWidth(5);
2647    pen.setColor({alpha: 255, red: 255, green: 0, blue: 0});
2648    let path = new drawing.Path();
2649    path.moveTo(10, 10);
2650    path.cubicTo(10, 10, 10, 10, 15, 15);
2651    path.close();
2652    canvas.attachPen(pen);
2653    canvas.clipPath(path, drawing.ClipOp.DIFFERENCE, true);
2654    canvas.detachPen();
2655  }
2656}
2657```
2658
2659### clipRect<sup>12+</sup>
2660
2661clipRect(rect: common2D.Rect, clipOp?: ClipOp, doAntiAlias?: boolean): void
2662
2663用于裁剪一个矩形。
2664
2665**系统能力**:SystemCapability.Graphics.Drawing
2666
2667**参数:**
2668
2669| 参数名         | 类型                                       | 必填   | 说明                  |
2670| ----------- | ---------------------------------------- | ---- | ------------------- |
2671| rect        | [common2D.Rect](js-apis-graphics-common2D.md#rect) | 是    | 需要裁剪的矩形区域。      |
2672| clipOp      | [ClipOp](#clipop12)                  | 否    | 裁剪方式。默认为INTERSECT。     |
2673| doAntiAlias | boolean           | 否   | 表示是否使能抗锯齿绘制。true表示使能,false表示不使能。默认为false。 |
2674
2675**错误码:**
2676
2677以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
2678
2679| 错误码ID | 错误信息 |
2680| ------- | --------------------------------------------|
2681| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. |
2682
2683**示例:**
2684
2685```ts
2686import { RenderNode } from '@kit.ArkUI';
2687import { common2D, drawing } from '@kit.ArkGraphics2D';
2688class DrawingRenderNode extends RenderNode {
2689  draw(context : DrawContext) {
2690    const canvas = context.canvas;
2691    const pen = new drawing.Pen();
2692    pen.setStrokeWidth(5);
2693    pen.setColor({alpha: 255, red: 255, green: 0, blue: 0});
2694    canvas.attachPen(pen);
2695    canvas.clipRect({left : 10, right : 500, top : 300, bottom : 900}, drawing.ClipOp.DIFFERENCE, true);
2696    canvas.detachPen();
2697  }
2698}
2699```
2700
2701### save<sup>12+</sup>
2702
2703save(): number
2704
2705用于保存当前画布的状态(画布矩阵)到栈顶。
2706
2707**系统能力**:SystemCapability.Graphics.Drawing
2708
2709**返回值:**
2710
2711| 类型   | 说明                |
2712| ------ | ------------------ |
2713| number | 画布状态个数,该参数为正整数。 |
2714
2715**示例:**
2716
2717```ts
2718import { RenderNode } from '@kit.ArkUI';
2719import { common2D, drawing } from '@kit.ArkGraphics2D';
2720class DrawingRenderNode extends RenderNode {
2721  draw(context : DrawContext) {
2722    const canvas = context.canvas;
2723    let rect: common2D.Rect = {left: 10, right: 200, top: 100, bottom: 300};
2724    canvas.drawRect(rect);
2725    let saveCount = canvas.save();
2726  }
2727}
2728```
2729
2730### saveLayer<sup>12+</sup>
2731
2732saveLayer(rect?: common2D.Rect | null, brush?: Brush | null): number
2733
2734保存当前画布的矩阵和裁剪区域,并为后续绘制分配位图。调用恢复接口[restore](#restore12)将会舍弃对矩阵和裁剪区域做的更改,并绘制位图。
2735
2736**系统能力**:SystemCapability.Graphics.Drawing
2737
2738**参数:**
2739
2740| 参数名  | 类型     | 必填   | 说明         |
2741| ---- | ------ | ---- | ----------------- |
2742| rect   | [common2D.Rect](js-apis-graphics-common2D.md#rect)\|null | 否   | 矩形对象,用于限制图层大小,默认为当前画布大小。 |
2743| brush  | [Brush](#brush)\|null | 否   | 画刷对象,绘制位图时会应用画刷对象的透明度,颜色滤波器效果和混合模式,默认不设置额外效果。 |
2744
2745**返回值:**
2746
2747| 类型   | 说明                |
2748| ------ | ------------------ |
2749| number | 返回调用前保存的画布状态数,该参数为正整数。 |
2750
2751**错误码:**
2752
2753以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
2754
2755| 错误码ID | 错误信息 |
2756| ------- | --------------------------------------------|
2757| 401 | Parameter error. Possible causes: Mandatory parameters are left unspecified. |
2758
2759**示例:**
2760
2761```ts
2762import { RenderNode } from '@kit.ArkUI';
2763import { common2D, drawing } from '@kit.ArkGraphics2D';
2764class DrawingRenderNode extends RenderNode {
2765  draw(context : DrawContext) {
2766    const canvas = context.canvas;
2767    canvas.saveLayer(null, null);
2768    const brushRect = new drawing.Brush();
2769    const colorRect: common2D.Color = {alpha: 255, red: 255, green: 255, blue: 0};
2770    brushRect.setColor(colorRect);
2771    canvas.attachBrush(brushRect);
2772    const rect: common2D.Rect = {left:100, top:100, right:500, bottom:500};
2773    canvas.drawRect(rect);
2774
2775    const brush = new drawing.Brush();
2776    brush.setBlendMode(drawing.BlendMode.DST_OUT);
2777    canvas.saveLayer(rect, brush);
2778
2779    const brushCircle = new drawing.Brush();
2780    const colorCircle: common2D.Color = {alpha: 255, red: 0, green: 0, blue: 255};
2781    brushCircle.setColor(colorCircle);
2782    canvas.attachBrush(brushCircle);
2783    canvas.drawCircle(500, 500, 200);
2784    canvas.restore();
2785    canvas.restore();
2786    canvas.detachBrush();
2787  }
2788}
2789```
2790
2791### scale<sup>12+</sup>
2792
2793scale(sx: number, sy: number): void
2794
2795用于画布缩放。
2796
2797**系统能力**:SystemCapability.Graphics.Drawing
2798
2799**参数:**
2800
2801| 参数名  | 类型     | 必填   | 说明         |
2802| ---- | ------ | ---- | ----------------- |
2803| sx   | number | 是   | x轴方向的缩放比例,该参数为浮点数。 |
2804| sy   | number | 是   | y轴方向的缩放比例,该参数为浮点数。 |
2805
2806**错误码:**
2807
2808以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
2809
2810| 错误码ID | 错误信息 |
2811| ------- | --------------------------------------------|
2812| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. |
2813
2814**示例:**
2815
2816```ts
2817import { RenderNode } from '@kit.ArkUI';
2818import { common2D, drawing } from '@kit.ArkGraphics2D';
2819class DrawingRenderNode extends RenderNode {
2820  draw(context : DrawContext) {
2821    const canvas = context.canvas;
2822    const pen = new drawing.Pen();
2823    pen.setStrokeWidth(5);
2824    pen.setColor({alpha: 255, red: 255, green: 0, blue: 0});
2825    canvas.attachPen(pen);
2826    canvas.scale(2, 0.5);
2827    canvas.drawRect({left : 10, right : 500, top : 300, bottom : 900});
2828    canvas.detachPen();
2829  }
2830}
2831```
2832
2833### skew<sup>12+</sup>
2834
2835skew(sx: number, sy: number) : void
2836
2837用于画布倾斜变换,包括水平轴和垂直轴上的偏移。
2838
2839**系统能力**:SystemCapability.Graphics.Drawing
2840
2841**参数:**
2842
2843| 参数名  | 类型     | 必填   | 说明         |
2844| ---- | ------ | ---- | ----------------- |
2845| sx   | number | 是   | x轴上的倾斜量,该参数为浮点数。    |
2846| sy   | number | 是   | y轴上的倾斜量,该参数为浮点数。    |
2847
2848**错误码:**
2849
2850以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
2851
2852| 错误码ID | 错误信息 |
2853| ------- | --------------------------------------------|
2854| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. |
2855
2856**示例:**
2857
2858```ts
2859import { RenderNode } from '@kit.ArkUI';
2860import { common2D, drawing } from '@kit.ArkGraphics2D';
2861class DrawingRenderNode extends RenderNode {
2862  draw(context : DrawContext) {
2863    const canvas = context.canvas;
2864    const pen = new drawing.Pen();
2865    pen.setStrokeWidth(5);
2866    pen.setColor({alpha: 255, red: 255, green: 0, blue: 0});
2867    canvas.attachPen(pen);
2868    canvas.skew(0.1, 0.1);
2869    canvas.drawRect({left : 10, right : 500, top : 300, bottom : 900});
2870    canvas.detachPen();
2871  }
2872}
2873```
2874
2875### rotate<sup>12+</sup>
2876
2877rotate(degrees: number, sx: number, sy: number) : void
2878
2879用于画布旋转一定的角度。
2880
2881**系统能力**:SystemCapability.Graphics.Drawing
2882
2883**参数:**
2884
2885| 参数名  | 类型     | 必填   | 说明         |
2886| ---- | ------ | ------ | ------------------------ |
2887| degrees       | number | 是    | 旋转角度,单位为度,该参数为浮点数,正数为顺时针旋转,负数为逆时针旋转。  |
2888| sx            | number | 是    | 旋转中心的横坐标,该参数为浮点数。 |
2889| sy            | number | 是    | 旋转中心的纵坐标,该参数为浮点数。 |
2890
2891**错误码:**
2892
2893以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
2894
2895| 错误码ID | 错误信息 |
2896| ------- | --------------------------------------------|
2897| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. |
2898
2899**示例:**
2900
2901```ts
2902import { RenderNode } from '@kit.ArkUI';
2903import { common2D, drawing } from '@kit.ArkGraphics2D';
2904class DrawingRenderNode extends RenderNode {
2905  draw(context : DrawContext) {
2906    const canvas = context.canvas;
2907    const pen = new drawing.Pen();
2908    pen.setStrokeWidth(5);
2909    pen.setColor({alpha: 255, red: 255, green: 0, blue: 0});
2910    canvas.attachPen(pen);
2911    canvas.rotate(30, 100, 100);
2912    canvas.drawRect({left : 10, right : 500, top : 300, bottom : 900});
2913    canvas.detachPen();
2914  }
2915}
2916```
2917
2918### translate<sup>12+</sup>
2919
2920translate(dx: number, dy: number): void
2921
2922用于平移画布一段距离。
2923
2924**系统能力**:SystemCapability.Graphics.Drawing
2925
2926**参数:**
2927
2928| 参数名 | 类型   | 必填 | 说明                |
2929| ----- | ------ | ---- | ------------------- |
2930| dx    | number | 是   | x轴方向的移动距离,该参数为浮点数。   |
2931| dy    | number | 是   | y轴方向的移动距离,该参数为浮点数。   |
2932
2933**错误码:**
2934
2935以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
2936
2937| 错误码ID | 错误信息 |
2938| ------- | --------------------------------------------|
2939| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. |
2940
2941**示例:**
2942
2943```ts
2944import { RenderNode } from '@kit.ArkUI';
2945import { common2D, drawing } from '@kit.ArkGraphics2D';
2946class DrawingRenderNode extends RenderNode {
2947  draw(context : DrawContext) {
2948    const canvas = context.canvas;
2949    const pen = new drawing.Pen();
2950    pen.setStrokeWidth(5);
2951    pen.setColor({alpha: 255, red: 255, green: 0, blue: 0});
2952    canvas.attachPen(pen);
2953    canvas.translate(10, 10);
2954    canvas.drawRect({left : 10, right : 500, top : 300, bottom : 900});
2955    canvas.detachPen();
2956  }
2957}
2958```
2959
2960### getSaveCount<sup>12+</sup>
2961
2962getSaveCount(): number
2963
2964用于获取栈中保存的画布状态(画布矩阵)的数量。
2965
2966**系统能力**:SystemCapability.Graphics.Drawing
2967
2968**返回值:**
2969
2970| 类型    | 说明                                 |
2971| ------ | ------------------------------------ |
2972| number | 已保存的画布状态的数量,该参数为正整数。 |
2973
2974**示例:**
2975
2976```ts
2977import { RenderNode } from '@kit.ArkUI';
2978import { common2D, drawing } from '@kit.ArkGraphics2D';
2979class DrawingRenderNode extends RenderNode {
2980  draw(context : DrawContext) {
2981    const canvas = context.canvas;
2982    const pen = new drawing.Pen();
2983    pen.setStrokeWidth(5);
2984    pen.setColor({alpha: 255, red: 255, green: 0, blue: 0});
2985    canvas.attachPen(pen);
2986    canvas.drawRect({left: 10, right: 200, top: 100, bottom: 300});
2987    canvas.save();
2988    canvas.drawRect({left : 10, right : 500, top : 300, bottom : 900});
2989    canvas.getSaveCount();
2990    canvas.detachPen();
2991  }
2992}
2993```
2994
2995### restoreToCount<sup>12+</sup>
2996
2997restoreToCount(count: number): void
2998
2999用于恢复到指定数量的画布状态(画布矩阵)。
3000
3001**系统能力**:SystemCapability.Graphics.Drawing
3002
3003**参数:**
3004
3005| 参数名   | 类型     | 必填   | 说明                    |
3006| ----- | ------ | ---- | ----------------------------- |
3007| count | number | 是   | 要恢复的画布状态深度,该参数为整数。小于等于1时,恢复为初始状态;大于已保存的画布状态数量时,不执行任何操作。 |
3008
3009**错误码:**
3010
3011以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
3012
3013| 错误码ID | 错误信息 |
3014| ------- | --------------------------------------------|
3015| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. |
3016
3017**示例:**
3018
3019```ts
3020import { RenderNode } from '@kit.ArkUI';
3021import { common2D, drawing } from '@kit.ArkGraphics2D';
3022class DrawingRenderNode extends RenderNode {
3023  draw(context : DrawContext) {
3024    const canvas = context.canvas;
3025    const pen = new drawing.Pen();
3026    pen.setStrokeWidth(5);
3027    pen.setColor({alpha: 255, red: 255, green: 0, blue: 0});
3028    canvas.attachPen(pen);
3029    canvas.drawRect({left: 10, right: 200, top: 100, bottom: 300});
3030    canvas.save();
3031    canvas.drawRect({left: 10, right: 200, top: 100, bottom: 500});
3032    canvas.save();
3033    canvas.drawRect({left: 100, right: 300, top: 100, bottom: 500});
3034    canvas.save();
3035    canvas.restoreToCount(2);
3036    canvas.drawRect({left : 10, right : 500, top : 300, bottom : 900});
3037    canvas.detachPen();
3038  }
3039}
3040```
3041
3042### restore<sup>12+</sup>
3043
3044restore(): void
3045
3046用于恢复保存在栈顶的画布状态(画布矩阵)。
3047
3048**系统能力**:SystemCapability.Graphics.Drawing
3049
3050**示例:**
3051
3052```ts
3053import { RenderNode } from '@kit.ArkUI';
3054import { common2D, drawing } from '@kit.ArkGraphics2D';
3055class DrawingRenderNode extends RenderNode {
3056  draw(context : DrawContext) {
3057    const canvas = context.canvas;
3058    const pen = new drawing.Pen();
3059    pen.setStrokeWidth(5);
3060    pen.setColor({alpha: 255, red: 255, green: 0, blue: 0});
3061    canvas.attachPen(pen);
3062    canvas.restore();
3063    canvas.detachPen();
3064  }
3065}
3066```
3067
3068### concatMatrix<sup>12+</sup>
3069
3070concatMatrix(matrix: Matrix): void
3071
3072画布现有矩阵左乘以传入矩阵,不影响该接口之前的绘制操作。
3073
3074**系统能力**:SystemCapability.Graphics.Drawing
3075
3076**参数:**
3077
3078| 参数名    | 类型                | 必填   | 说明    |
3079| ------ | ----------------- | ---- | ----- |
3080| matrix | [Matrix](#matrix12) | 是    | 矩阵对象。 |
3081
3082**错误码:**
3083
3084以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
3085
3086| 错误码ID | 错误信息 |
3087| ------- | --------------------------------------------|
3088| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. |
3089
3090**示例:**
3091
3092```ts
3093import { RenderNode } from '@kit.ArkUI';
3094import { drawing } from '@kit.ArkGraphics2D';
3095class DrawingRenderNode extends RenderNode {
3096  draw(context : DrawContext) {
3097    const canvas = context.canvas;
3098    let matrix = new drawing.Matrix();
3099    matrix.setMatrix([5, 0, 0, 0, 1, 2, 0, 0, 1]);
3100    canvas.concatMatrix(matrix);
3101  }
3102}
3103```
3104
3105### setMatrix<sup>12+</sup>
3106
3107setMatrix(matrix: Matrix): void
3108
3109设置画布的矩阵。
3110
3111**系统能力**:SystemCapability.Graphics.Drawing
3112
3113**参数:**
3114
3115| 参数名    | 类型                | 必填   | 说明    |
3116| ------ | ----------------- | ---- | ----- |
3117| matrix | [Matrix](#matrix12) | 是    | 矩阵对象。 |
3118
3119**错误码:**
3120
3121以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
3122
3123| 错误码ID | 错误信息 |
3124| ------- | --------------------------------------------|
3125| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. |
3126
3127**示例:**
3128
3129```ts
3130import { RenderNode } from '@kit.ArkUI';
3131import { drawing } from '@kit.ArkGraphics2D';
3132class DrawingRenderNode extends RenderNode {
3133  draw(context : DrawContext) {
3134    const canvas = context.canvas;
3135    let matrix = new drawing.Matrix()
3136    matrix.setMatrix([5, 0, 0, 0, 1, 1, 0, 0, 1]);
3137    canvas.setMatrix(matrix);
3138  }
3139}
3140```
3141
3142### isClipEmpty<sup>12+</sup>
3143
3144isClipEmpty(): boolean
3145
3146用于判断裁剪后可绘制区域是否为空。
3147
3148**系统能力**:SystemCapability.Graphics.Drawing
3149
3150**返回值:**
3151
3152| 类型                  | 说明           |
3153| --------------------- | -------------- |
3154| boolean | 返回画布的可绘制区域是否为空的结果,true表示为空,false表示不为空。 |
3155
3156**示例:**
3157
3158```ts
3159import { RenderNode } from '@kit.ArkUI';
3160import { drawing } from '@kit.ArkGraphics2D';
3161class DrawingRenderNode extends RenderNode {
3162  draw(context : DrawContext) {
3163    const canvas = context.canvas;
3164    if (canvas.isClipEmpty()) {
3165      console.info("canvas.isClipEmpty() returned true");
3166    } else {
3167      console.info("canvas.isClipEmpty() returned false");
3168    }
3169  }
3170}
3171```
3172
3173### clipRegion<sup>12+</sup>
3174
3175clipRegion(region: Region, clipOp?: ClipOp): void
3176
3177在画布上裁剪一个区域。
3178
3179**系统能力**:SystemCapability.Graphics.Drawing
3180
3181**参数:**
3182
3183| 参数名          | 类型    | 必填 | 说明                                                        |
3184| --------------- | ------- | ---- | ----------------------------------------------------------- |
3185| region | [Region](#region12) | 是   | 区域对象,表示裁剪范围。 |
3186| clipOp | [ClipOp](#clipop12)   | 否   | 裁剪方式,默认为INTERSECT。 |
3187
3188**错误码:**
3189
3190以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
3191
3192| 错误码ID | 错误信息 |
3193| ------- | --------------------------------------------|
3194| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. |
3195
3196**示例:**
3197
3198```ts
3199import { RenderNode } from '@kit.ArkUI';
3200import { drawing } from '@kit.ArkGraphics2D';
3201class DrawingRenderNode extends RenderNode {
3202  draw(context : DrawContext) {
3203    const canvas = context.canvas;
3204    let region : drawing.Region = new drawing.Region();
3205    region.setRect(0, 0, 500, 500);
3206    canvas.clipRegion(region);
3207  }
3208}
3209```
3210
3211### clipRoundRect<sup>12+</sup>
3212
3213clipRoundRect(roundRect: RoundRect, clipOp?: ClipOp, doAntiAlias?: boolean): void
3214
3215在画布上裁剪一个圆角矩形。
3216
3217**系统能力**:SystemCapability.Graphics.Drawing
3218
3219**参数:**
3220
3221| 参数名          | 类型    | 必填 | 说明                                                        |
3222| --------------- | ------- | ---- | ----------------------------------------------------------- |
3223| roundRect | [RoundRect](#roundrect12) | 是   | 圆角矩形对象,表示裁剪范围。 |
3224| clipOp | [ClipOp](#clipop12)   | 否   | 裁剪方式,默认为INTERSECT。 |
3225| doAntiAlias | boolean | 否   | 表示是否使能抗锯齿。true表示使能,false表示不使能。默认为false。 |
3226
3227**错误码:**
3228
3229以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
3230
3231| 错误码ID | 错误信息 |
3232| ------- | --------------------------------------------|
3233| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. |
3234
3235**示例:**
3236
3237```ts
3238import { RenderNode } from '@kit.ArkUI';
3239import { common2D, drawing } from '@kit.ArkGraphics2D';
3240class DrawingRenderNode extends RenderNode {
3241  draw(context : DrawContext) {
3242    const canvas = context.canvas;
3243    let rect: common2D.Rect = { left: 10, top: 100, right: 200, bottom: 300 };
3244    let roundRect = new drawing.RoundRect(rect, 10, 10);
3245    canvas.clipRoundRect(roundRect);
3246  }
3247}
3248```
3249
3250### resetMatrix<sup>12+</sup>
3251
3252resetMatrix(): void
3253
3254重置当前画布的矩阵为单位矩阵。
3255
3256**系统能力**:SystemCapability.Graphics.Drawing
3257
3258**示例:**
3259
3260```ts
3261import { RenderNode } from '@kit.ArkUI';
3262import { drawing } from '@kit.ArkGraphics2D';
3263class DrawingRenderNode extends RenderNode {
3264  draw(context : DrawContext) {
3265    const canvas = context.canvas;
3266    canvas.scale(4, 6);
3267    canvas.resetMatrix();
3268  }
3269}
3270```
3271
3272## ImageFilter<sup>12+</sup>
3273
3274图像滤波器。
3275
3276### createBlurImageFilter<sup>12+</sup>
3277
3278static createBlurImageFilter(sigmaX: number, sigmaY: number, tileMode: TileMode, imageFilter?: ImageFilter | null ): ImageFilter
3279
3280创建具有模糊效果的图像滤波器。
3281
3282**系统能力**:SystemCapability.Graphics.Drawing
3283
3284**参数:**
3285
3286| 参数名          | 类型    | 必填 | 说明                                                        |
3287| --------------- | ------- | ---- | ----------------------------------------------------------- |
3288| sigmaX | number | 是   | 表示沿x轴方向上高斯模糊的标准差,必须大于0,该参数为浮点数。 |
3289| sigmaY | number | 是   | 表示沿y轴方向上高斯模糊的标准差,必须大于0,该参数为浮点数。 |
3290| tileMode | [TileMode](#tilemode12)| 是   | 表示在边缘处应用的平铺模式。 |
3291| imageFilter | [ImageFilter](#imagefilter12) \| null | 否   | 表示要和当前图像滤波器叠加的输入滤波器,默认为null,表示直接将当前图像滤波器作用于原始图像。 |
3292
3293**返回值:**
3294
3295| 类型                  | 说明           |
3296| --------------------- | -------------- |
3297| [ImageFilter](#imagefilter12) | 返回创建的图像滤波器。 |
3298
3299**错误码:**
3300
3301以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
3302
3303| 错误码ID | 错误信息 |
3304| ------- | --------------------------------------------|
3305| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types;3.Parameter verification failed. |
3306
3307**示例:**
3308
3309```ts
3310import { drawing } from '@kit.ArkGraphics2D';
3311let imgFilter = drawing.ImageFilter.createBlurImageFilter(5, 10, drawing.TileMode.CLAMP);
3312```
3313
3314### createFromColorFilter<sup>12+</sup>
3315
3316static createFromColorFilter(colorFilter: ColorFilter, imageFilter?: ImageFilter | null): ImageFilter
3317
3318创建一个将颜色滤波器应用于传入的图像滤波器的图像滤波器。
3319
3320**系统能力**:SystemCapability.Graphics.Drawing
3321
3322**参数:**
3323
3324| 参数名          | 类型    | 必填 | 说明                                                        |
3325| --------------- | ------- | ---- | ----------------------------------------------------------- |
3326| colorFilter | [ColorFilter](#colorfilter) | 是   | 表示颜色滤波器。 |
3327| imageFilter | [ImageFilter](#imagefilter12) \| null | 否   | 表示要和当前图像滤波器叠加的输入滤波器,默认为null,表示直接将当前图像滤波器作用于原始图像。 |
3328
3329**返回值:**
3330
3331| 类型                  | 说明           |
3332| --------------------- | -------------- |
3333| [ImageFilter](#imagefilter12) | 返回创建的图像滤波器。 |
3334
3335**错误码:**
3336
3337以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
3338
3339| 错误码ID | 错误信息 |
3340| ------- | --------------------------------------------|
3341| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. |
3342
3343**示例:**
3344
3345```ts
3346import { drawing } from '@kit.ArkGraphics2D';
3347let imgFilter = drawing.ImageFilter.createBlurImageFilter(5, 10, drawing.TileMode.CLAMP);
3348let clolorfilter = drawing.ColorFilter.createSRGBGammaToLinear();
3349let imgFilter1 = drawing.ImageFilter.createFromColorFilter(clolorfilter, imgFilter);
3350```
3351
3352## TextBlobRunBuffer
3353
3354描述一行文字中具有相同属性的连续字形。
3355
3356**系统能力**:SystemCapability.Graphics.Drawing
3357
3358| 名称      | 类型   | 可读 | 可写 | 说明                      |
3359| --------- | ------ | ---- | ---- | ------------------------- |
3360| glyph     | number | 是   | 是   | 存储文字的索引,该参数为整数,传入浮点类型时向下取整。 |
3361| positionX | number | 是   | 是   | 文本的起点x轴坐标,该参数为浮点数。 |
3362| positionY | number | 是   | 是   | 文本的起点y轴坐标,该参数为浮点数。 |
3363
3364## TextEncoding
3365
3366文本的编码类型枚举。
3367
3368**系统能力**:SystemCapability.Graphics.Drawing
3369
3370| 名称                   | 值   | 说明                           |
3371| ---------------------- | ---- | ------------------------------ |
3372| TEXT_ENCODING_UTF8     | 0    | 使用1个字节表示UTF-8或ASCII。  |
3373| TEXT_ENCODING_UTF16    | 1    | 使用2个字节表示大部分unicode。 |
3374| TEXT_ENCODING_UTF32    | 2    | 使用4个字节表示全部unicode。   |
3375| TEXT_ENCODING_GLYPH_ID | 3    | 使用2个字节表示glyph index。   |
3376
3377## ClipOp<sup>12+</sup>
3378画布裁剪方式的枚举。
3379
3380
3381**系统能力**:SystemCapability.Graphics.Drawing
3382
3383| 名称                 | 值    | 说明           | 示意图   |
3384| ------------------ | ---- | ---------------- | -------- |
3385| DIFFERENCE | 0    | 将指定区域裁剪(取差集)。 | ![DIFFERENCE](./figures/zh-ch_image_ClipOp_Difference.png) |
3386| INTERSECT  | 1    | 将指定区域保留(取交集)。 | ![INTERSECT](./figures/zh-ch_image_ClipOp_Intersect.png) |
3387
3388> **说明:**
3389>
3390> 示意图展示的是以INTERSECT方式裁剪一个矩形后,使用不同枚举值在此基础上裁剪一个圆形的结果,其中绿色区域为最终得到的裁剪区域。
3391
3392## FilterMode<sup>12+</sup>
3393
3394过滤模式枚举。
3395
3396**系统能力**:SystemCapability.Graphics.Drawing
3397
3398| 名称                  | 值    | 说明      |
3399| ------------------- | ---- | ------- |
3400| FILTER_MODE_NEAREST | 0    | 邻近过滤模式。 |
3401| FILTER_MODE_LINEAR  | 1    | 线性过滤模式。 |
3402
3403## PathDirection<sup>12+</sup>
3404
3405添加闭合轮廓方向的枚举。
3406
3407**系统能力**:SystemCapability.Graphics.Drawing
3408
3409| 名称                  | 值    | 说明      |
3410| ------------------- | ---- | ------- |
3411| CLOCKWISE   | 0    | 顺时针方向添加闭合轮廓。 |
3412| COUNTER_CLOCKWISE  | 1    | 逆时针方向添加闭合轮廓。 |
3413
3414## PathFillType<sup>12+</sup>
3415
3416定义路径的填充类型枚举。
3417
3418**系统能力**:SystemCapability.Graphics.Drawing
3419
3420| 名称                  | 值    | 说明      |
3421| ------------------- | ---- | ------- |
3422| WINDING   | 0    | 绘制区域中的任意一点,向任意方向射出一条射线,对于射线和路径的所有交点,初始计数为0,遇到每个顺时针的交点(路径从射线的左边向右穿过),计数加1,遇到每个逆时针的交点(路径从射线的右边向左穿过),计数减1,若最终的计数结果不为0,则认为这个点在路径内部,需要被涂色;若计数为0则不被涂色。 |
3423| EVEN_ODD  | 1    | 绘制区域中的任意一点,向任意方向射出一条射线,若这条射线和路径相交的次数是奇数,则这个点被认为在路径内部,需要被涂色;若是偶数则不被涂色。 |
3424| INVERSE_WINDING  | 2    | WINDING涂色规则取反。 |
3425| INVERSE_EVEN_ODD  | 3    | EVEN_ODD涂色规则取反。 |
3426
3427> **说明:**
3428> ![WINDING&EVEN_ODD](./figures/zh-ch_image_PathFillType_Winding_Even_Odd.png)
3429> 如图所示圆环为路径,箭头指示路径的方向,p为区域内任意一点,蓝色线条为点p出发的射线,黑色箭头所指为对应填充规则下使用蓝色填充路径的结果。WINDING填充规则下,射线与路径的交点计数为2,不为0,点p被涂色;EVEN_ODD填充规则下,射线与路径的相交次数为2,是偶数,点p不被涂色。
3430
3431## PointMode<sup>12+</sup>
3432
3433绘制数组点的方式的枚举。
3434
3435**系统能力**:SystemCapability.Graphics.Drawing
3436
3437| 名称                 | 值    | 说明            |
3438| ------------------ | ---- | ------------- |
3439| POINTS  | 0    | 分别绘制每个点。      |
3440| LINES   | 1    | 将每对点绘制为线段。    |
3441| POLYGON | 2    | 将点阵列绘制为开放多边形。 |
3442
3443## FontEdging<sup>12+</sup>
3444
3445字形边缘效果类型枚举。
3446
3447**系统能力**:SystemCapability.Graphics.Drawing
3448
3449| 名称                  | 值    | 说明      |
3450| ------------------- | ---- | ------- |
3451| ALIAS | 0    | 无抗锯齿处理。 |
3452| ANTI_ALIAS  | 1    | 使用抗锯齿来平滑字形边缘。 |
3453| SUBPIXEL_ANTI_ALIAS  | 2    | 使用次像素级别的抗锯齿来平滑字形边缘,可以获得更加平滑的字形渲染效果。 |
3454
3455## FontHinting<sup>12+</sup>
3456
3457字形轮廓效果类型枚举。
3458
3459**系统能力**:SystemCapability.Graphics.Drawing
3460
3461| 名称                  | 值    | 说明      |
3462| ------------------- | ---- | ------- |
3463| NONE    | 0    | 不修改字形轮廓。 |
3464| SLIGHT  | 1    | 最小限度修改字形轮廓以改善对比度。 |
3465| NORMAL  | 2    | 修改字形轮廓以提高对比度。 |
3466| FULL    | 3    | 修改字形轮廓以获得最大对比度。 |
3467
3468## TextBlob
3469
3470由一个或多个具有相同字体的字符组成的字块。
3471
3472### makeFromPosText<sup>12+</sup>
3473
3474static makeFromPosText(text: string, len: number, points: common2D.Point[], font: Font): TextBlob
3475
3476使用文本创建TextBlob对象,TextBlob对象中每个字形的坐标由points中对应的坐标信息决定。
3477
3478**系统能力**:SystemCapability.Graphics.Drawing
3479
3480**参数:**
3481
3482| 参数名   | 类型                          | 必填 | 说明                                   |
3483| -------- | ----------------------------- | ---- | -------------------------------------- |
3484| text     | string             | 是   | 绘制字形的文本内容。                   |
3485| len      | number             | 是   | 字形个数,由[countText](#counttext12)获取,该参数为整数。 |
3486| points   |[common2D.Point](js-apis-graphics-common2D.md#point)[]     | 是   |点数组,用于指定每个字形的坐标,长度必须为len。|
3487| font     | [Font](#font)      | 是   | 字型对象。 |
3488
3489**返回值:**
3490
3491| 类型                  | 说明           |
3492| --------------------- | -------------- |
3493| [TextBlob](#textblob) | TextBlob对象。 |
3494
3495
3496**错误码:**
3497
3498以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
3499
3500| 错误码ID | 错误信息 |
3501| ------- | --------------------------------------------|
3502| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified;2. Incorrect parameter types. |
3503
3504**示例:**
3505
3506```ts
3507import { RenderNode } from '@kit.ArkUI';
3508import { drawing,common2D} from '@kit.ArkGraphics2D';
3509
3510class DrawingRenderNode extends RenderNode {
3511  draw(context : DrawContext) {
3512    const canvas = context.canvas;
3513    let text : string = 'makeFromPosText';
3514    let font : drawing.Font = new drawing.Font();
3515    font.setSize(100);
3516    let length = font.countText(text);
3517    let points : common2D.Point[] = [];
3518    for (let i = 0; i !== length; ++i) {
3519      points.push({ x: i * 35, y: i * 35 });
3520    }
3521    let textblob : drawing.TextBlob =drawing.TextBlob.makeFromPosText(text, points.length, points, font);
3522    canvas.drawTextBlob(textblob, 100, 100);
3523  }
3524}
3525```
3526
3527### uniqueID<sup>12+</sup>
3528
3529uniqueID(): number
3530
3531获取文本的标识符,该标识符是唯一的非零值。
3532
3533**系统能力**:SystemCapability.Graphics.Drawing
3534
3535**返回值:**
3536
3537| 类型                  | 说明           |
3538| --------------------- | -------------- |
3539| number | 返回TextBlob对象的唯一标识符。 |
3540
3541**示例:**
3542
3543```ts
3544import {drawing} from "@kit.ArkGraphics2D"
3545let text : string = 'TextBlobUniqueId';
3546let font : drawing.Font = new drawing.Font();
3547font.setSize(100);
3548let textBlob = drawing.TextBlob.makeFromString(text, font, 0);
3549let id = textBlob.uniqueID();
3550console.info("uniqueID---------------" +id);
3551```
3552
3553### makeFromString
3554
3555static makeFromString(text: string, font: Font, encoding?: TextEncoding): TextBlob
3556
3557将string类型的值转化成TextBlob对象。
3558
3559**系统能力**:SystemCapability.Graphics.Drawing
3560
3561**参数:**
3562
3563| 参数名   | 类型                          | 必填 | 说明                                   |
3564| -------- | ----------------------------- | ---- | -------------------------------------- |
3565| text     | string                        | 是   | 绘制字形的文本内容。                   |
3566| font     | [Font](#font)                 | 是   | 字型对象。           |
3567| encoding | [TextEncoding](#textencoding) | 否   | 编码类型,默认值为TEXT_ENCODING_UTF8。 |
3568
3569**返回值:**
3570
3571| 类型                  | 说明           |
3572| --------------------- | -------------- |
3573| [TextBlob](#textblob) | TextBlob对象。 |
3574
3575**错误码:**
3576
3577以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
3578
3579| 错误码ID | 错误信息 |
3580| ------- | --------------------------------------------|
3581| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. |
3582
3583**示例:**
3584
3585```ts
3586import { RenderNode } from '@kit.ArkUI';
3587import { drawing } from '@kit.ArkGraphics2D';
3588class DrawingRenderNode extends RenderNode {
3589  draw(context : DrawContext) {
3590    const canvas = context.canvas;
3591    const brush = new drawing.Brush();
3592    brush.setColor({alpha: 255, red: 255, green: 0, blue: 0});
3593    const font = new drawing.Font();
3594    font.setSize(20);
3595    const textBlob = drawing.TextBlob.makeFromString("drawing", font, drawing.TextEncoding.TEXT_ENCODING_UTF8);
3596    canvas.attachBrush(brush);
3597    canvas.drawTextBlob(textBlob, 20, 20);
3598    canvas.detachBrush();
3599  }
3600}
3601```
3602
3603### makeFromRunBuffer
3604
3605static makeFromRunBuffer(pos: Array\<TextBlobRunBuffer>, font: Font, bounds?: common2D.Rect): TextBlob
3606
3607基于RunBuffer信息创建一个Textblob对象。
3608
3609**系统能力**:SystemCapability.Graphics.Drawing
3610
3611**参数:**
3612
3613| 参数名 | 类型                                               | 必填 | 说明                           |
3614| ------ | -------------------------------------------------- | ---- | ------------------------------ |
3615| pos    | Array\<[TextBlobRunBuffer](#textblobrunbuffer)>    | 是   | TextBlobRunBuffer数组。        |
3616| font   | [Font](#font)                                      | 是   | 字型对象。   |
3617| bounds | [common2D.Rect](js-apis-graphics-common2D.md#rect) | 否   | 可选,如果不设置,则无边界框。 |
3618
3619**返回值:**
3620
3621| 类型                  | 说明           |
3622| --------------------- | -------------- |
3623| [TextBlob](#textblob) | TextBlob对象。 |
3624
3625**错误码:**
3626
3627以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
3628
3629| 错误码ID | 错误信息 |
3630| ------- | --------------------------------------------|
3631| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. |
3632
3633**示例:**
3634
3635```ts
3636import { RenderNode } from '@kit.ArkUI';
3637import { common2D, drawing } from '@kit.ArkGraphics2D';
3638class DrawingRenderNode extends RenderNode {
3639  draw(context : DrawContext) {
3640    const canvas = context.canvas;
3641    const font = new drawing.Font();
3642    font.setSize(20);
3643    let runBuffer : Array<drawing.TextBlobRunBuffer> = [
3644      { glyph: 65, positionX: 0, positionY: 0 },
3645      { glyph: 227, positionX: 14.9, positionY: 0 },
3646      { glyph: 283, positionX: 25.84, positionY: 0 },
3647      { glyph: 283, positionX: 30.62, positionY: 0 },
3648      { glyph: 299, positionX: 35.4, positionY: 0}
3649    ];
3650    const textBlob = drawing.TextBlob.makeFromRunBuffer(runBuffer, font, null);
3651    const brush = new drawing.Brush();
3652    brush.setColor({alpha: 255, red: 255, green: 0, blue: 0});
3653    canvas.attachBrush(brush);
3654    canvas.drawTextBlob(textBlob, 20, 20);
3655    canvas.detachBrush();
3656  }
3657}
3658```
3659
3660### bounds
3661
3662bounds(): common2D.Rect
3663
3664获取文字边界框的矩形区域。
3665
3666**系统能力**:SystemCapability.Graphics.Drawing
3667
3668**返回值:**
3669
3670| 类型                                               | 说明                   |
3671| -------------------------------------------------- | ---------------------- |
3672| [common2D.Rect](js-apis-graphics-common2D.md#rect) | 文字边界框的矩形区域。 |
3673
3674**示例:**
3675
3676```ts
3677import { common2D, drawing } from '@kit.ArkGraphics2D';
3678const font = new drawing.Font();
3679font.setSize(20);
3680const textBlob = drawing.TextBlob.makeFromString("drawing", font, drawing.TextEncoding.TEXT_ENCODING_UTF8);
3681let bounds = textBlob.bounds();
3682```
3683
3684## Typeface
3685
3686字体,如宋体、楷体等。
3687
3688### getFamilyName
3689
3690getFamilyName(): string
3691
3692获取字体的系列名称。
3693
3694**系统能力**:SystemCapability.Graphics.Drawing
3695
3696**返回值:**
3697
3698| 类型   | 说明                 |
3699| ------ | -------------------- |
3700| string | 返回字体的系列名称。 |
3701
3702**示例:**
3703
3704```ts
3705import { drawing } from '@kit.ArkGraphics2D';
3706const font = new drawing.Font();
3707let typeface = font.getTypeface();
3708let familyName = typeface.getFamilyName();
3709```
3710
3711### makeFromFile<sup>12+</sup>
3712
3713static makeFromFile(filePath: string): Typeface
3714
3715从指定字体文件,构造字体。
3716
3717**系统能力**:SystemCapability.Graphics.Drawing
3718
3719**参数:**
3720
3721| 参数名         | 类型                                       | 必填   | 说明                  |
3722| ----------- | ---------------------------------------- | ---- | ------------------- |
3723| filePath | string           | 是   | 表示字体资源存放的路径。 |
3724
3725**返回值:**
3726
3727| 类型   | 说明                 |
3728| ------ | -------------------- |
3729| [Typeface](#typeface) | 返回Typeface对象。 |
3730
3731**错误码:**
3732
3733以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
3734
3735| 错误码ID | 错误信息 |
3736| ------- | --------------------------------------------|
3737| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. |
3738
3739**示例:**
3740
3741```ts
3742import { RenderNode } from '@kit.ArkUI';
3743import { drawing } from '@kit.ArkGraphics2D';
3744class TextRenderNode extends RenderNode {
3745  async draw(context: DrawContext) {
3746    const canvas = context.canvas;
3747    let font = new drawing.Font();
3748    let str = "/system/fonts/HarmonyOS_Sans_Italic.ttf";
3749    const mytypeface = drawing.Typeface.makeFromFile(str);
3750    font.setTypeface(mytypeface);
3751    const textBlob = drawing.TextBlob.makeFromString("Hello World", font, drawing.TextEncoding.TEXT_ENCODING_UTF8);
3752    canvas.drawTextBlob(textBlob, 60, 100);
3753  }
3754}
3755```
3756
3757## Font
3758
3759描述字形绘制时所使用的属性,如大小、字体等。
3760
3761### isSubpixel<sup>12+</sup>
3762
3763isSubpixel(): boolean
3764
3765获取字型是否使用次像素渲染。
3766
3767**系统能力:** SystemCapability.Graphics.Drawing
3768
3769**返回值:**
3770
3771| 类型   | 说明                 |
3772| ------ | -------------------- |
3773| boolean | 返回字型是否使用次像素渲染的结果,true表示使用,false表示不使用。 |
3774
3775**示例:**
3776
3777```ts
3778import {drawing} from '@kit.ArkGraphics2D';
3779let font: drawing.Font = new drawing.Font();
3780font.enableSubpixel(true)
3781console.info("values=" + font.isSubpixel());
3782```
3783
3784### isLinearMetrics<sup>12+</sup>
3785
3786isLinearMetrics(): boolean
3787
3788获取字型是否可以线性缩放。
3789
3790**系统能力:** SystemCapability.Graphics.Drawing
3791
3792**返回值:**
3793
3794| 类型   | 说明                 |
3795| ------ | -------------------- |
3796| boolean | 返回字型是否可线性缩放的结果,true表示可线性缩放,false表示不可线性缩放。 |
3797
3798**示例:**
3799
3800```ts
3801import {drawing} from '@kit.ArkGraphics2D';
3802let font: drawing.Font = new drawing.Font();
3803font.enableLinearMetrics(true)
3804console.info("values=" + font.isLinearMetrics());
3805```
3806
3807### getSkewX<sup>12+</sup>
3808
3809getSkewX(): number
3810
3811获取字型在x轴方向上的倾斜度。
3812
3813**系统能力:** SystemCapability.Graphics.Drawing
3814
3815**返回值:**
3816
3817| 类型   | 说明                 |
3818| ------ | -------------------- |
3819| number | 返回字型在x轴方向上的倾斜度。 |
3820
3821**示例:**
3822
3823```ts
3824import {drawing} from '@kit.ArkGraphics2D';
3825let font: drawing.Font = new drawing.Font();
3826font.setSkewX(-1)
3827console.info("values=" + font.getSkewX());
3828```
3829
3830### isEmbolden<sup>12+</sup>
3831
3832isEmbolden(): boolean
3833
3834获取字型是否设置了粗体效果。
3835
3836**系统能力:** SystemCapability.Graphics.Drawing
3837
3838**返回值:**
3839
3840| 类型   | 说明                 |
3841| ------ | -------------------- |
3842| boolean  | 返回字型是否设置粗体效果的结果,true表示设置了粗体效果,false表示未设置粗体效果。 |
3843
3844**示例:**
3845
3846```ts
3847import {drawing} from '@kit.ArkGraphics2D';
3848let font: drawing.Font = new drawing.Font();
3849font.enableEmbolden(true);
3850console.info("values=" + font.isEmbolden());
3851```
3852
3853### getScaleX<sup>12+</sup>
3854
3855getScaleX(): number
3856
3857获取字型在x轴方向上的缩放比例。
3858
3859**系统能力:** SystemCapability.Graphics.Drawing
3860
3861**返回值:**
3862
3863| 类型   | 说明                 |
3864| ------ | -------------------- |
3865| number  | 返回字型在x轴方向上的缩放比例。 |
3866
3867**示例:**
3868
3869```ts
3870import {drawing} from '@kit.ArkGraphics2D';
3871let font: drawing.Font = new drawing.Font();
3872font.setScaleX(2);
3873console.info("values=" + font.getScaleX());
3874```
3875
3876### getHinting<sup>12+</sup>
3877
3878getHinting(): FontHinting
3879
3880获取字型轮廓效果。
3881
3882**系统能力:** SystemCapability.Graphics.Drawing
3883
3884**返回值:**
3885
3886| 类型   | 说明                 |
3887| ------ | -------------------- |
3888| [FontHinting](#fonthinting12)  | 返回字型轮廓效果。 |
3889
3890**示例:**
3891
3892```ts
3893import {drawing} from '@kit.ArkGraphics2D';
3894let font: drawing.Font = new drawing.Font();
3895console.info("values=" + font.getHinting());
3896```
3897
3898### getEdging<sup>12+</sup>
3899
3900getEdging(): FontEdging
3901
3902获取字型边缘效果。
3903
3904**系统能力:** SystemCapability.Graphics.Drawing
3905
3906**返回值:**
3907
3908| 类型   | 说明                 |
3909| ------ | -------------------- |
3910| [FontEdging](#fontedging12)  | 返回字型边缘效果。 |
3911
3912**示例:**
3913
3914```ts
3915import {drawing} from '@kit.ArkGraphics2D';
3916let font: drawing.Font = new drawing.Font();
3917console.info("values=" + font.getEdging());
3918```
3919
3920### enableSubpixel
3921
3922enableSubpixel(isSubpixel: boolean): void
3923
3924使能字体亚像素级别的文字绘制,显示效果平滑。
3925
3926**系统能力**:SystemCapability.Graphics.Drawing
3927
3928**参数:**
3929
3930| 参数名     | 类型    | 必填 | 说明                                                         |
3931| ---------- | ------- | ---- | ------------------------------------------------------------ |
3932| isSubpixel | boolean | 是   | 表示是否使能字体亚像素级别的文字绘制。true表示使能,false表示不使能。 |
3933
3934**错误码:**
3935
3936以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
3937
3938| 错误码ID | 错误信息 |
3939| ------- | --------------------------------------------|
3940| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. |
3941
3942**示例:**
3943
3944```ts
3945import { drawing } from '@kit.ArkGraphics2D';
3946let font = new drawing.Font();
3947font.enableSubpixel(true);
3948```
3949
3950### enableEmbolden
3951
3952enableEmbolden(isEmbolden: boolean): void
3953
3954使能字体粗体。
3955
3956**系统能力**:SystemCapability.Graphics.Drawing
3957
3958**参数:**
3959
3960| 参数名     | 类型    | 必填 | 说明                                                  |
3961| ---------- | ------- | ---- | ----------------------------------------------------- |
3962| isEmbolden | boolean | 是   | 表示是否使能字体粗体。true表示使能,false表示不使能。 |
3963
3964**错误码:**
3965
3966以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
3967
3968| 错误码ID | 错误信息 |
3969| ------- | --------------------------------------------|
3970| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. |
3971
3972**示例:**
3973
3974```ts
3975import { drawing } from '@kit.ArkGraphics2D';
3976let font = new drawing.Font();
3977font.enableEmbolden(true);
3978```
3979
3980### enableLinearMetrics
3981
3982enableLinearMetrics(isLinearMetrics: boolean): void
3983
3984使能字形的线性缩放。
3985
3986**系统能力**:SystemCapability.Graphics.Drawing
3987
3988**参数:**
3989
3990| 参数名          | 类型    | 必填 | 说明                                                        |
3991| --------------- | ------- | ---- | ----------------------------------------------------------- |
3992| isLinearMetrics | boolean | 是   | 表示是否使能字形的线性缩放。true表示使能,false表示不使能。 |
3993
3994**错误码:**
3995
3996以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
3997
3998| 错误码ID | 错误信息 |
3999| ------- | --------------------------------------------|
4000| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. |
4001
4002**示例:**
4003
4004```ts
4005import { drawing } from '@kit.ArkGraphics2D';
4006let font = new drawing.Font();
4007font.enableLinearMetrics(true);
4008```
4009
4010### setSize
4011
4012setSize(textSize: number): void
4013
4014设置字体大小。
4015
4016**系统能力**:SystemCapability.Graphics.Drawing
4017
4018**参数:**
4019
4020| 参数名   | 类型   | 必填 | 说明             |
4021| -------- | ------ | ---- | ---------------- |
4022| textSize | number | 是   | 字体大小,该参数为浮点数,为负数时字体大小会被置为0。字体大小为0时,绘制的文字不会显示。|
4023
4024**错误码:**
4025
4026以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
4027
4028| 错误码ID | 错误信息 |
4029| ------- | --------------------------------------------|
4030| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types;3.Parameter verification failed. |
4031
4032**示例:**
4033
4034```ts
4035import { drawing } from '@kit.ArkGraphics2D';
4036let font = new drawing.Font();
4037font.setSize(5);
4038```
4039
4040### getSize
4041
4042getSize(): number
4043
4044获取字体大小。
4045
4046**系统能力**:SystemCapability.Graphics.Drawing
4047
4048**返回值:**
4049
4050| 类型   | 说明             |
4051| ------ | ---------------- |
4052| number | 字体大小,浮点数。 |
4053
4054**示例:**
4055
4056```ts
4057import { drawing } from '@kit.ArkGraphics2D';
4058let font = new drawing.Font();
4059font.setSize(5);
4060let fontSize = font.getSize();
4061```
4062
4063### setTypeface
4064
4065setTypeface(typeface: Typeface): void
4066
4067设置字体。
4068
4069**系统能力**:SystemCapability.Graphics.Drawing
4070
4071**参数:**
4072
4073| 参数名   | 类型                  | 必填 | 说明   |
4074| -------- | --------------------- | ---- | ------ |
4075| typeface | [Typeface](#typeface) | 是   | 字体。 |
4076
4077**错误码:**
4078
4079以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
4080
4081| 错误码ID | 错误信息 |
4082| ------- | --------------------------------------------|
4083| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. |
4084
4085**示例:**
4086
4087```ts
4088import { drawing } from '@kit.ArkGraphics2D';
4089let font = new drawing.Font();
4090font.setTypeface(new drawing.Typeface());
4091```
4092
4093### getTypeface
4094
4095getTypeface(): Typeface
4096
4097获取字体。
4098
4099**系统能力**:SystemCapability.Graphics.Drawing
4100
4101**返回值:**
4102
4103| 类型                  | 说明   |
4104| --------------------- | ------ |
4105| [Typeface](#typeface) | 字体。 |
4106
4107**示例:**
4108
4109```ts
4110import { drawing } from '@kit.ArkGraphics2D';
4111let font = new drawing.Font();
4112let typeface = font.getTypeface();
4113```
4114
4115### getMetrics
4116
4117getMetrics(): FontMetrics
4118
4119获取与字体关联的FontMetrics属性。
4120
4121**系统能力**:SystemCapability.Graphics.Drawing
4122
4123**返回值:**
4124
4125| 类型                        | 说明              |
4126| --------------------------- | ----------------- |
4127| [FontMetrics](#fontmetrics) | FontMetrics属性。 |
4128
4129**示例:**
4130
4131```ts
4132import { drawing } from '@kit.ArkGraphics2D';
4133let font = new drawing.Font();
4134let metrics = font.getMetrics();
4135```
4136
4137### measureText
4138
4139measureText(text: string, encoding: TextEncoding): number
4140
4141测量文本的宽度。
4142
4143> **说明:**
4144>
4145> 此接口用于测量原始字符串的文本宽度,若想测量排版后的文本宽度,建议使用[measure.measureText](../apis-arkui/js-apis-measure.md#measuretextmeasuretext)替代。
4146
4147**系统能力**:SystemCapability.Graphics.Drawing
4148
4149**参数:**
4150
4151| 参数名   | 类型                          | 必填 | 说明       |
4152| -------- | ----------------------------- | ---- | ---------- |
4153| text     | string                        | 是   | 文本内容。 |
4154| encoding | [TextEncoding](#textencoding) | 是   | 编码格式。 |
4155
4156**返回值:**
4157
4158| 类型   | 说明             |
4159| ------ | ---------------- |
4160| number | 文本的宽度,浮点数。 |
4161
4162**错误码:**
4163
4164以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
4165
4166| 错误码ID | 错误信息 |
4167| ------- | --------------------------------------------|
4168| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. |
4169
4170**示例:**
4171
4172```ts
4173import { drawing } from '@kit.ArkGraphics2D';
4174let font = new drawing.Font();
4175font.measureText("drawing", drawing.TextEncoding.TEXT_ENCODING_UTF8);
4176```
4177
4178### measureSingleCharacter<sup>12+</sup>
4179
4180measureSingleCharacter(text: string): number
4181
4182用于测量单个字符的宽度。当前字型中的字体不支持待测量字符时,退化到使用系统字体测量字符宽度。
4183
4184**系统能力**:SystemCapability.Graphics.Drawing
4185
4186**参数**
4187
4188| 参数名 | 类型                | 必填 | 说明        |
4189| ------ | ------------------- | ---- | ----------- |
4190| text   | string | 是   | 待测量的单个字符,字符串的长度必须为1。  |
4191
4192**返回值:**
4193
4194| 类型   | 说明             |
4195| ------ | ---------------- |
4196| number | 字符的宽度,浮点数。 |
4197
4198**错误码:**
4199
4200以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
4201
4202| 错误码ID | 错误信息 |
4203| ------- | --------------------------------------------|
4204| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types;3.Parameter verification failed. |
4205
4206**示例**
4207
4208```ts
4209import { RenderNode } from '@kit.ArkUI';
4210import { drawing } from '@kit.ArkGraphics2D';
4211
4212class DrawingRenderNode extends RenderNode {
4213  draw(context : DrawContext) {
4214    const canvas = context.canvas;
4215    const font = new drawing.Font();
4216    font.setSize(20);
4217    let width = font.measureSingleCharacter("你");
4218  }
4219}
4220```
4221
4222### setScaleX<sup>12+</sup>
4223
4224setScaleX(scaleX: number): void
4225
4226用于设置字形对象在x轴上的缩放比例。
4227
4228**系统能力**:SystemCapability.Graphics.Drawing
4229
4230**参数:**
4231
4232| 参数名   | 类型                          | 必填 | 说明       |
4233| -------- | ----------------------------- | ---- | ---------- |
4234| scaleX     | number                      | 是   | 文本在x轴上的缩放比例,该参数为浮点数。 |
4235
4236**错误码:**
4237
4238以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
4239
4240| 错误码ID | 错误信息 |
4241| ------- | --------------------------------------------|
4242| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. |
4243
4244**示例:**
4245
4246```ts
4247import { RenderNode } from '@kit.ArkUI';
4248import { common2D, drawing } from '@kit.ArkGraphics2D';
4249class DrawingRenderNode extends RenderNode {
4250  draw(context : DrawContext) {
4251    const canvas = context.canvas;
4252    const pen = new drawing.Pen();
4253    pen.setStrokeWidth(5);
4254    pen.setColor({alpha: 255, red: 255, green: 0, blue: 0});
4255    canvas.attachPen(pen);
4256    let font = new drawing.Font();
4257    font.setSize(100);
4258    font.setScaleX(2);
4259    const textBlob = drawing.TextBlob.makeFromString("hello", font, drawing.TextEncoding.TEXT_ENCODING_UTF8);
4260    canvas.drawTextBlob(textBlob, 200, 200);
4261  }
4262}
4263```
4264
4265### setSkewX<sup>12+</sup>
4266
4267setSkewX(skewX: number): void
4268
4269用于设置字形对象在x轴上的倾斜比例。
4270
4271**系统能力**:SystemCapability.Graphics.Drawing
4272
4273**参数:**
4274
4275| 参数名   | 类型                          | 必填 | 说明       |
4276| -------- | ----------------------------- | ---- | ---------- |
4277| skewX     | number                      | 是   | 文本在x轴上的倾斜比例,正数表示往左边倾斜,负数表示往右边倾斜,该参数为浮点数。 |
4278
4279**错误码:**
4280
4281以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
4282
4283| 错误码ID | 错误信息 |
4284| ------- | --------------------------------------------|
4285| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. |
4286
4287**示例:**
4288
4289```ts
4290import { RenderNode } from '@kit.ArkUI';
4291import { common2D, drawing } from '@kit.ArkGraphics2D';
4292class DrawingRenderNode extends RenderNode {
4293  draw(context : DrawContext) {
4294    const canvas = context.canvas;
4295    const pen = new drawing.Pen();
4296    pen.setStrokeWidth(5);
4297    pen.setColor({alpha: 255, red: 255, green: 0, blue: 0});
4298    canvas.attachPen(pen);
4299    let font = new drawing.Font();
4300    font.setSize(100);
4301    font.setSkewX(1);
4302    const textBlob = drawing.TextBlob.makeFromString("hello", font, drawing.TextEncoding.TEXT_ENCODING_UTF8);
4303    canvas.drawTextBlob(textBlob, 200, 200);
4304  }
4305}
4306```
4307
4308### setEdging<sup>12+</sup>
4309
4310setEdging(edging: FontEdging): void
4311
4312设置字形边缘效果。
4313
4314**系统能力**:SystemCapability.Graphics.Drawing
4315
4316**参数:**
4317
4318| 参数名   | 类型                          | 必填 | 说明       |
4319| -------- | ----------------------------- | ---- | ---------- |
4320| edging | [FontEdging](#fontedging12) | 是   | 字形边缘效果。 |
4321
4322**错误码:**
4323
4324以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
4325
4326| 错误码ID | 错误信息 |
4327| ------- | --------------------------------------------|
4328| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified;2. Incorrect parameter types; 3. Parameter verification failed. |
4329
4330**示例:**
4331
4332```ts
4333import { drawing } from '@kit.ArkGraphics2D';
4334
4335let font = new drawing.Font();
4336font.setEdging(drawing.FontEdging.SUBPIXEL_ANTI_ALIAS);
4337```
4338
4339### setHinting<sup>12+</sup>
4340
4341setHinting(hinting: FontHinting): void
4342
4343设置字形轮廓效果。
4344
4345**系统能力**:SystemCapability.Graphics.Drawing
4346
4347**参数:**
4348
4349| 参数名   | 类型                          | 必填 | 说明       |
4350| -------- | ----------------------------- | ---- | ---------- |
4351| hinting | [FontHinting](#fonthinting12) | 是   | 字形轮廓效果。 |
4352
4353**错误码:**
4354
4355以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
4356
4357| 错误码ID | 错误信息 |
4358| ------- | --------------------------------------------|
4359| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified;2. Incorrect parameter types; 3. Parameter verification failed. |
4360
4361**示例:**
4362
4363```ts
4364import { drawing } from '@kit.ArkGraphics2D';
4365
4366let font = new drawing.Font();
4367font.setHinting(drawing.FontHinting.FULL);
4368```
4369
4370### countText<sup>12+</sup>
4371
4372countText(text: string): number
4373
4374获取文本所表示的字符数量。
4375
4376**系统能力**:SystemCapability.Graphics.Drawing
4377
4378**参数:**
4379
4380| 参数名   | 类型                          | 必填 | 说明       |
4381| -------- | ----------------------------- | ---- | ---------- |
4382| text     | string                        | 是   | 文本内容。 |
4383
4384**返回值:**
4385
4386| 类型   | 说明             |
4387| ------ | ---------------- |
4388| number | 返回文本所表示的字符数量,整数。 |
4389
4390**错误码:**
4391
4392以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
4393
4394| 错误码ID | 错误信息 |
4395| ------- | --------------------------------------------|
4396| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. |
4397
4398**示例:**
4399
4400```ts
4401import { drawing } from '@kit.ArkGraphics2D';
4402
4403let font = new drawing.Font();
4404let resultNumber: number = font.countText('ABCDE');
4405console.info("count text number: " + resultNumber);
4406```
4407
4408### setBaselineSnap<sup>12+</sup>
4409
4410setBaselineSnap(isBaselineSnap: boolean): void
4411
4412当前画布矩阵轴对齐时,设置字形基线是否与像素对齐。
4413
4414**系统能力**:SystemCapability.Graphics.Drawing
4415
4416**参数:**
4417
4418| 参数名          | 类型    | 必填 | 说明                                       |
4419| --------------- | ------- | ---- | ---------------------------------------- |
4420| isBaselineSnap | boolean | 是   | 指示字形基线是否和像素对齐,true表示对齐,false表示不对齐。 |
4421
4422**错误码:**
4423
4424以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
4425
4426| 错误码ID | 错误信息 |
4427| ------- | --------------------------------------------|
4428| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. |
4429
4430**示例:**
4431
4432```ts
4433import { drawing } from '@kit.ArkGraphics2D';
4434
4435let font : drawing.Font = new drawing.Font();
4436font.setBaselineSnap(true);
4437console.info("drawing font isBaselineSnap: " + font.isBaselineSnap());
4438```
4439
4440### isBaselineSnap()<sup>12+</sup>
4441
4442isBaselineSnap(): boolean
4443
4444当前画布矩阵轴对齐时,获取字形基线是否与像素对齐的结果。
4445
4446**系统能力**:SystemCapability.Graphics.Drawing
4447
4448**返回值:**
4449
4450| 类型   | 说明             |
4451| ------ | ---------------- |
4452| boolean | 返回字形基线是否与像素对齐,true为对齐,false为没有对齐。 |
4453
4454**示例:**
4455
4456```ts
4457import { drawing } from '@kit.ArkGraphics2D';
4458
4459let font : drawing.Font = new drawing.Font();
4460font.setTypeface(new drawing.Typeface());
4461font.setBaselineSnap(true);
4462console.info("drawing font isBaselineSnap: " + font.isBaselineSnap());
4463```
4464
4465### setEmbeddedBitmaps<sup>12+</sup>
4466
4467setEmbeddedBitmaps(isEmbeddedBitmaps: boolean): void
4468
4469设置字形是否转换成位图处理。
4470
4471**系统能力**:SystemCapability.Graphics.Drawing
4472
4473**参数:**
4474
4475| 参数名   | 类型   | 必填 | 说明             |
4476| -------- | ------ | ---- | ---------------- |
4477| isEmbeddedBitmaps | boolean | 是   | 设置字形是否转换成位图处理,true表示转换成位图处理,false表示不转换成位图处理。 |
4478
4479**错误码:**
4480
4481以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
4482
4483| 错误码ID | 错误信息 |
4484| ------- | --------------------------------------------|
4485| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. |
4486
4487**示例:**
4488
4489```ts
4490import { drawing } from '@kit.ArkGraphics2D';
4491
4492let font : drawing.Font = new drawing.Font();
4493font.setTypeface(new drawing.Typeface());
4494font.setEmbeddedBitmaps(false);
4495console.info("draw isEmbeddedBitmaps: " + font.isEmbeddedBitmaps());
4496```
4497
4498### isEmbeddedBitmaps()<sup>12+</sup>
4499
4500isEmbeddedBitmaps(): boolean
4501
4502获取字形是否转换成位图处理的结果。
4503
4504**系统能力**:SystemCapability.Graphics.Drawing
4505
4506**返回值:**
4507
4508| 类型   | 说明             |
4509| ------ | ---------------- |
4510| boolean | 返回字形是否转换成位图处理结果,true表示转换成位图处理,false表示不转换成位图处理。 |
4511
4512**示例:**
4513
4514```ts
4515import { drawing } from '@kit.ArkGraphics2D';
4516
4517let font : drawing.Font = new drawing.Font();
4518font.setTypeface(new drawing.Typeface());
4519font.setEmbeddedBitmaps(true);
4520console.info("draw isEmbeddedBitmaps: " + font.isEmbeddedBitmaps());
4521```
4522
4523### setForceAutoHinting<sup>12+</sup>
4524
4525setForceAutoHinting(isForceAutoHinting: boolean): void
4526
4527设置是否自动调整字形轮廓。
4528
4529**系统能力**:SystemCapability.Graphics.Drawing
4530
4531**参数:**
4532
4533| 参数名   | 类型   | 必填 | 说明             |
4534| -------- | ------ | ---- | ---------------- |
4535| isForceAutoHinting | boolean | 是   | 是否自动调整字形轮廓,true为自动调整,false为不自动调整。 |
4536
4537**错误码:**
4538
4539以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
4540
4541| 错误码ID | 错误信息 |
4542| ------- | --------------------------------------------|
4543| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. |
4544
4545**示例:**
4546
4547```ts
4548import { drawing } from '@kit.ArkGraphics2D';
4549
4550let font : drawing.Font = new drawing.Font();
4551font.setTypeface(new drawing.Typeface());
4552font.setForceAutoHinting(false);
4553console.info("drawing isForceAutoHinting:  " + font.isForceAutoHinting());
4554```
4555
4556### isForceAutoHinting<sup>12+</sup>
4557
4558isForceAutoHinting(): boolean
4559
4560获取字形轮廓是否自动调整的结果。
4561
4562**系统能力**:SystemCapability.Graphics.Drawing
4563
4564**返回值:**
4565
4566| 类型   | 说明             |
4567| ------ | ---------------- |
4568| boolean | 返回字形轮廓是否自动调整,true为自动调整,false为不自动调整。 |
4569
4570**示例:**
4571
4572```ts
4573import { drawing } from '@kit.ArkGraphics2D';
4574
4575let font : drawing.Font = new drawing.Font();
4576font.setTypeface(new drawing.Typeface());
4577font.setForceAutoHinting(false);
4578console.info("drawing isForceAutoHinting:  " + font.isForceAutoHinting());
4579```
4580
4581### getWidths<sup>12+</sup>
4582
4583getWidths(glyphs: Array\<number>): Array\<number>
4584
4585获取字形数组中每个字形对应的宽度。
4586
4587**系统能力**:SystemCapability.Graphics.Drawing
4588
4589**参数:**
4590
4591| 参数名   | 类型                  | 必填 | 说明   |
4592| -------- | --------------------- | ---- | ------ |
4593| glyphs | Array\<number> | 是   | 字形索引数组,可由[textToGlyphs](#texttoglyphs12)生成。 |
4594
4595**返回值:**
4596
4597| 类型   | 说明             |
4598| ------ | ---------------- |
4599| Array\<number> | 返回得到的字形宽度数组。 |
4600
4601**错误码:**
4602
4603以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
4604
4605| 错误码ID | 错误信息 |
4606| ------- | --------------------------------------------|
4607| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. |
4608
4609**示例:**
4610
4611```ts
4612import { drawing } from '@kit.ArkGraphics2D';
4613
4614let font: drawing.Font = new drawing.Font();
4615let text: string = 'hello world';
4616let glyphs: number[] = font.textToGlyphs(text);
4617let fontWidths: Array<number> = font.getWidths(glyphs);
4618for (let index = 0; index < fontWidths.length; index++) {
4619  console.info("get fontWidths[", index, "]:", fontWidths[index]);
4620}
4621```
4622
4623### textToGlyphs<sup>12+</sup>
4624
4625textToGlyphs(text: string, glyphCount?: number): Array\<number>
4626
4627将文本转换为字形索引。
4628
4629**系统能力**:SystemCapability.Graphics.Drawing
4630
4631**参数:**
4632
4633| 参数名   | 类型                          | 必填 | 说明       |
4634| -------- | ----------------------------- | ---- | ---------- |
4635| text     | string                        | 是   | 文本字符串。 |
4636| glyphCount | number | 否   | 文本表示的字符数量,必须与[countText](#counttext12)获取的值相等,默认为text的字符数量,该参数为整数。 |
4637
4638**返回值:**
4639
4640| 类型   | 说明             |
4641| ------ | ---------------- |
4642| Array\<number> | 返回转换得到的字形索引数组。 |
4643
4644**错误码:**
4645
4646以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
4647
4648| 错误码ID | 错误信息 |
4649| ------- | --------------------------------------------|
4650| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. |
4651
4652**示例:**
4653
4654```ts
4655import { drawing } from '@kit.ArkGraphics2D';
4656
4657let font : drawing.Font = new drawing.Font();
4658let text : string = 'hello world';
4659let glyphs : number[] = font.textToGlyphs(text);
4660console.info("drawing text toglyphs OnTestFunction num =  " + glyphs.length );
4661```
4662
4663## FontMetricsFlags<sup>12+</sup>
4664
4665字体度量标志枚举,指示字体度量中的各字段数据是否有效。
4666
4667**系统能力**:SystemCapability.Graphics.Drawing
4668
4669| 名称                          | 值        | 说明                           |
4670| ----------------------------- | --------- | ------------------------------ |
4671| UNDERLINE_THICKNESS_VALID     | 1 << 0    | 表示[FontMetrics](#fontmetrics)结构中的underlineThickness(下划线厚度)字有效。    |
4672| UNDERLINE_POSITION_VALID      | 1 << 1    | 表示[FontMetrics](#fontmetrics)结构中的underlinePosition(下划线位置)字段有效。  |
4673| STRIKETHROUGH_THICKNESS_VALID | 1 << 2    | 表示[FontMetrics](#fontmetrics)结构中strikethroughThickness(删除线厚度)是有效的。|
4674| STRIKETHROUGH_POSITION_VALID  | 1 << 3    | 表示[FontMetrics](#fontmetrics)结构中strikethroughPosition(删除线位置)字段有效。  |
4675| BOUNDS_INVALID                | 1 << 4    | 表示[FontMetrics](#fontmetrics)结构中的边界度量值(如top, bottom, xMin, xMax)无效。  |
4676
4677## FontMetrics
4678
4679描述字形大小和布局的属性信息,同一种字体中的字符属性大致相同。
4680
4681**系统能力:** SystemCapability.Graphics.Drawing
4682
4683| 名称    | 类型   | 只读 | 可选 | 说明                                                         |
4684| ------- | ------ | ---- | ---- | ------------------------------------------------------------ |
4685| flags<sup>12+</sup>   | [FontMetricsFlags](#fontmetricsflags12) | 是   | 是   | 表明哪些字体度量标志有效。        |
4686| top     | number | 是   | 否   | 文字最高处到基线之间的最大距离,浮点数。                         |
4687| ascent  | number | 是   | 否   | 文字最高处到基线之间的距离,浮点数。                             |
4688| descent | number | 是   | 否   | 基线到文字最低处之间的距离,浮点数。                             |
4689| bottom  | number | 是   | 否   | 基线到文字最低处之间的最大距离,浮点数。                         |
4690| leading | number | 是   | 否   | 行间距,从上一行文字descent到下一行文字ascent之间的距离,浮点数。 |
4691| avgCharWidth<sup>12+</sup> | number | 是   | 是   | 平均字符宽度。                             |
4692| maxCharWidth<sup>12+</sup> | number | 是   | 是   | 最大字符宽度。                             |
4693| xMin<sup>12+</sup> | number | 是    | 是   | 字体中任意字形边界框最左边沿到原点的水平距离,这个值往往小于零,意味着字形在水平方向上的最小边界。                |
4694| xMax<sup>12+</sup> | number | 是   | 是   | 字体中任意字形边界框最右边沿到原点的水平距离,此值多为正数,指示了字形在水平方向上的最大延伸范围。        |
4695| xHeight<sup>12+</sup> | number | 是   | 是   | 小写字母x的高度,通常为负值。                     |
4696| capHeight<sup>12+</sup> | number | 是   | 是   | 大写字母的高度,通常为负值。                      |
4697| underlineThickness<sup>12+</sup> | number | 是   | 是   | 下划线的厚度。                                          |
4698| underlinePosition<sup>12+</sup>  | number | 是   | 是   | 文本基线到下划线顶部的垂直距离,通常是正数。             |
4699| strikethroughThickness<sup>12+</sup>  | number | 是   | 是   | 文本删除线的厚度,即贯穿文本字符的水平线的宽度。    |
4700| strikethroughPosition<sup>12+</sup>  | number | 是   | 是   | 文本基线到底部删除线的垂直距离,通常为负值。         |
4701
4702## ColorFilter
4703
4704颜色滤波器。
4705
4706### createBlendModeColorFilter
4707
4708createBlendModeColorFilter(color: common2D.Color, mode: BlendMode) : ColorFilter
4709
4710使用指定的颜色和混合模式创建颜色滤波器。
4711
4712**系统能力:** SystemCapability.Graphics.Drawing
4713
4714**参数:**
4715
4716| 参数名 | 类型                                                 | 必填 | 说明             |
4717| ------ | ---------------------------------------------------- | ---- | ---------------- |
4718| color  | [common2D.Color](js-apis-graphics-common2D.md#color) | 是   | ARGB格式的颜色,每个颜色通道是0到255之间的整数。 |
4719| mode   | [BlendMode](#blendmode)                              | 是   | 颜色的混合模式。 |
4720
4721**返回值:**
4722
4723| 类型                        | 说明               |
4724| --------------------------- | ------------------ |
4725| [ColorFilter](#colorfilter) | 返回一个颜色滤波器 |
4726
4727**错误码:**
4728
4729以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
4730
4731| 错误码ID | 错误信息 |
4732| ------- | --------------------------------------------|
4733| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types;3.Parameter verification failed. |
4734
4735**示例:**
4736
4737```ts
4738import { common2D, drawing } from '@kit.ArkGraphics2D';
4739const color : common2D.Color = { alpha: 255, red: 255, green: 0, blue: 0 };
4740let colorFilter = drawing.ColorFilter.createBlendModeColorFilter(color, drawing.BlendMode.SRC);
4741```
4742
4743### createComposeColorFilter
4744
4745createComposeColorFilter(outer: ColorFilter, inner: ColorFilter) : ColorFilter
4746
4747创建一个先应用inner进行滤波,再应用outer进行滤波的组合颜色滤波器。
4748
4749**系统能力:** SystemCapability.Graphics.Drawing
4750
4751**参数:**
4752
4753| 参数名 | 类型                        | 必填 | 说明                             |
4754| ------ | --------------------------- | ---- | -------------------------------- |
4755| outer  | [ColorFilter](#colorfilter) | 是   | 组合滤波器中后生效的颜色滤波器。 |
4756| inner  | [ColorFilter](#colorfilter) | 是   | 组合滤波器中先生效的颜色滤波器。 |
4757
4758**返回值:**
4759
4760| 类型                        | 说明               |
4761| --------------------------- | ------------------ |
4762| [ColorFilter](#colorfilter) | 返回一个颜色滤波器 |
4763
4764**错误码:**
4765
4766以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
4767
4768| 错误码ID | 错误信息 |
4769| ------- | --------------------------------------------|
4770| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. |
4771
4772**示例:**
4773
4774```ts
4775import { common2D, drawing } from '@kit.ArkGraphics2D';
4776const color : common2D.Color = { alpha: 255, red: 255, green: 0, blue: 0 };
4777let colorFilter1 = drawing.ColorFilter.createBlendModeColorFilter(color, drawing.BlendMode.SRC);
4778let colorFilter2 = drawing.ColorFilter.createBlendModeColorFilter(color, drawing.BlendMode.DST);
4779let colorFilter = drawing.ColorFilter.createComposeColorFilter(colorFilter1, colorFilter2);
4780```
4781
4782### createLinearToSRGBGamma
4783
4784createLinearToSRGBGamma() : ColorFilter
4785
4786创建一个从线性颜色空间转换到SRGB颜色空间的颜色滤波器。
4787
4788**系统能力:** SystemCapability.Graphics.Drawing
4789
4790**返回值:**
4791
4792| 类型                        | 说明               |
4793| --------------------------- | ------------------ |
4794| [ColorFilter](#colorfilter) | 返回一个颜色滤波器 |
4795
4796**示例:**
4797
4798```ts
4799import { drawing } from '@kit.ArkGraphics2D';
4800let colorFilter = drawing.ColorFilter.createLinearToSRGBGamma();
4801```
4802
4803### createSRGBGammaToLinear
4804
4805createSRGBGammaToLinear() : ColorFilter
4806
4807创建一个从SRGB颜色空间转换到线性颜色空间的颜色滤波器。
4808
4809**系统能力:** SystemCapability.Graphics.Drawing
4810
4811**返回值:**
4812
4813| 类型                        | 说明               |
4814| --------------------------- | ------------------ |
4815| [ColorFilter](#colorfilter) | 返回一个颜色滤波器 |
4816
4817**示例:**
4818
4819```ts
4820import { drawing } from '@kit.ArkGraphics2D';
4821let colorFilter = drawing.ColorFilter.createSRGBGammaToLinear();
4822```
4823
4824### createLumaColorFilter
4825
4826createLumaColorFilter() : ColorFilter
4827
4828创建一个将亮度与透明度相乘的颜色滤波器。
4829
4830**系统能力:** SystemCapability.Graphics.Drawing
4831
4832**返回值:**
4833
4834| 类型                        | 说明               |
4835| --------------------------- | ------------------ |
4836| [ColorFilter](#colorfilter) | 返回一个颜色滤波器 |
4837
4838**示例:**
4839
4840```ts
4841import { drawing } from '@kit.ArkGraphics2D';
4842let colorFilter = drawing.ColorFilter.createLumaColorFilter();
4843```
4844
4845### createMatrixColorFilter<sup>12+</sup>
4846
4847static createMatrixColorFilter(matrix: Array\<number>): ColorFilter
4848
4849创建颜色滤波器,通过4x5颜色矩阵变换颜色。
4850
4851**系统能力:** SystemCapability.Graphics.Drawing
4852
4853**参数:**
4854
4855| 参数名   | 类型                                         | 必填 | 说明                            |
4856| -------- | -------------------------------------------- | ---- | ------------------------------- |
4857| matrix | Array\<number> | 是   | 长度为20的数组,表示用于颜色变换的4*5矩阵。                 |
4858
4859**返回值:**
4860
4861| 类型                        | 说明               |
4862| --------------------------- | ------------------ |
4863| [ColorFilter](#colorfilter) | 返回一个颜色滤波器。 |
4864
4865**错误码:**
4866
4867以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
4868
4869| 错误码ID | 错误信息 |
4870| ------- | --------------------------------------------|
4871| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types;3.Parameter verification failed. |
4872
4873**示例:**
4874
4875```ts
4876import { drawing } from '@kit.ArkGraphics2D';
4877let matrix: Array<number> = [
4878  1, 0, 0, 0, 0,
4879  0, 1, 0, 0, 0,
4880  0, 0, 100, 0, 0,
4881  0, 0, 0, 1, 0
4882];
4883let colorFilter = drawing.ColorFilter.createMatrixColorFilter(matrix);
4884```
4885
4886## JoinStyle<sup>12+</sup>
4887
4888定义线条转角样式的枚举,即画笔在绘制折线段时,在折线转角处的样式。
4889
4890**系统能力:** SystemCapability.Graphics.Drawing
4891
4892| 名称        | 值   | 说明                                                         | 示意图   |
4893| ----------- | ---- | ----------------------------------------------------------- | -------- |
4894| MITER_JOIN | 0    | 转角类型为尖角,如果折线角度比较小,则尖角会很长,需要使用限制值(miter limit)进行限制。 | ![MITER_JOIN](./figures/zh-ch_image_JoinStyle_Miter_Join.png) |
4895| ROUND_JOIN | 1    | 转角类型为圆头。 | ![ROUND_JOIN](./figures/zh-ch_image_JoinStyle_Round_Join.png) |
4896| BEVEL_JOIN | 2    | 转角类型为平头。 | ![BEVEL_JOIN](./figures/zh-ch_image_JoinStyle_Bevel_Join.png) |
4897
4898## CapStyle<sup>12+</sup>
4899
4900定义线帽样式的枚举,即画笔在绘制线段时,在线段头尾端点的样式。
4901
4902**系统能力:** SystemCapability.Graphics.Drawing
4903
4904| 名称        | 值   | 说明                                                         | 示意图   |
4905| ---------- | ---- | ----------------------------------------------------------- | -------- |
4906| FLAT_CAP   | 0    | 没有线帽样式,线条头尾端点处横切。 | ![FLAT_CAP](./figures/zh-ch_image_CapStyle_Flat_Cap.png) |
4907| SQUARE_CAP | 1    | 线帽的样式为方框,线条的头尾端点处多出一个方框,方框宽度和线段一样宽,高度是线段宽度的一半。 | ![SQUARE_CAP](./figures/zh-ch_image_CapStyle_Square_Cap.png) |
4908| ROUND_CAP  | 2    | 线帽的样式为圆弧,线条的头尾端点处多出一个半圆弧,半圆的直径与线段宽度一致。 | ![ROUND_CAP](./figures/zh-ch_image_CapStyle_Round_Cap.png) |
4909
4910## BlurType<sup>12+</sup>
4911
4912定义蒙版滤镜模糊中操作类型的枚举。
4913
4914**系统能力:** SystemCapability.Graphics.Drawing
4915
4916| 名称   | 值 | 说明               | 示意图   |
4917| ------ | - | ------------------ | -------- |
4918| NORMAL | 0 | 内外模糊。          | ![NORMAL](./figures/zh-ch_image_BlueType_Normal.png) |
4919| SOLID  | 1 | 内部实体,外部模糊。 | ![SOLID](./figures/zh-ch_image_BlueType_Solid.png) |
4920| OUTER  | 2 | 内部空白,外部模糊。 | ![OUTER](./figures/zh-ch_image_BlueType_Outer.png) |
4921| INNER  | 3 | 内部模糊,外部空白。 | ![INNER](./figures/zh-ch_image_BlueType_Inner.png) |
4922
4923## SamplingOptions<sup>12+</sup>
4924
4925采样选项对象。
4926
4927### constructor<sup>12+</sup>
4928
4929constructor()
4930
4931用于构造一个新的采样选项对象。
4932
4933**系统能力:** SystemCapability.Graphics.Drawing
4934
4935**示例:**
4936
4937```ts
4938import { RenderNode } from '@kit.ArkUI';
4939import { common2D, drawing } from '@kit.ArkGraphics2D';
4940class DrawingRenderNode extends RenderNode {
4941  draw(context : DrawContext) {
4942    const canvas = context.canvas;
4943    const pen = new drawing.Pen();
4944    let samplingOptions = new drawing.SamplingOptions();
4945  }
4946}
4947```
4948
4949### constructor<sup>12+</sup>
4950
4951constructor(filterMode: FilterMode)
4952
4953用于构造一个新的采样选项对象。
4954
4955**系统能力:** SystemCapability.Graphics.Drawing
4956
4957**参数:**
4958
4959| 参数名     | 类型                   | 必填 | 说明                                 |
4960| ---------- | --------------------- | ---- | ----------------------------------- |
4961| filterMode | [FilterMode](#filtermode12)    | 是   | 过滤模式。                    |
4962
4963**错误码:**
4964
4965以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
4966
4967| 错误码ID | 错误信息 |
4968| ------- | --------------------------------------------|
4969| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. |
4970
4971**示例:**
4972
4973```ts
4974import { RenderNode } from '@kit.ArkUI';
4975import { common2D, drawing } from '@kit.ArkGraphics2D';
4976class DrawingRenderNode extends RenderNode {
4977  draw(context : DrawContext) {
4978    const canvas = context.canvas;
4979    let samplingOptions = new drawing.SamplingOptions(drawing.FilterMode.FILTER_MODE_NEAREST);
4980  }
4981}
4982```
4983
4984## Lattice<sup>12+</sup>
4985
4986矩形网格对象。该对象用于将图片按照矩形网格进行划分。
4987
4988### createImageLattice<sup>12+</sup>
4989
4990static createImageLattice(xDivs: Array\<number>, yDivs: Array\<number>, fXCount: number, fYCount: number, fBounds?: common2D.Rect | null, fRectTypes?: Array\<RectType> | null, fColors?: Array\<common2D.Color> | null): Lattice
4991
4992创建矩形网格对象。将图像划分为矩形网格,同时处于偶数列和偶数行上的网格是固定的,如果目标网格足够大,则这些固定网格以其原始大小进行绘制。如果目标网格太小,无法容纳这些固定网格,则所有固定网格都会按比例缩小以适应目标网格。其余网格将进行缩放,来适应剩余的空间。
4993
4994**系统能力:** SystemCapability.Graphics.Drawing
4995
4996**参数:**
4997
4998| 参数名       | 类型                                                                | 必填 | 说明                                                                               |
4999| ------------ | ------------------------------------------------------------------ | ---- | --------------------------------------------------------------------------------- |
5000| xDivs        | Array\<number>                                                     | 是   | 用于划分图像的X坐标值数组。该参数为整数。                                             |
5001| yDivs        | Array\<number>                                                     | 是   | 用于划分图像的Y坐标值数组。该参数为整数。                                             |
5002| fXCount      | number                                                             | 是   | X坐标值数组的大小。基于功能和性能的考虑,取值范围为[0, 5]。                            |
5003| fYCount      | number                                                             | 是   | Y坐标值数组的大小。基于功能和性能的考虑,取值范围为[0, 5]。                            |
5004| fBounds      | [common2D.Rect](js-apis-graphics-common2D.md#rect)\|null           | 否   | 可选,要绘制的原始边界矩形,矩形参数须为整数,默认为原始图像矩形大小(若矩形参数为小数,会直接舍弃小数部分,转为整数)。 |
5005| fRectTypes   | Array\<[RectType](#recttype12)>\|null                              | 否   | 可选,填充网格类型的数组,默认为空。如果设置,大小必须为(fXCount + 1) * (fYCount + 1)。 |
5006| fColors      | Array\<[common2D.Color](js-apis-graphics-common2D.md#color)>\|null | 否   | 可选,填充网格的颜色数组,默认为空。如果设置,大小必须为(fXCount + 1) * (fYCount + 1)。 |
5007
5008**返回值:**
5009
5010| 类型                       | 说明                                |
5011| ------------------------- | ----------------------------------- |
5012| [Lattice](#lattice12)     | 返回创建的矩形网格对象。              |
5013
5014**错误码:**
5015
5016以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
5017
5018| 错误码ID | 错误信息 |
5019| ------- | --------------------------------------------|
5020| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types;3.Parameter verification failed. |
5021
5022**示例:**
5023
5024```ts
5025import { RenderNode } from '@kit.ArkUI';
5026import { drawing } from '@kit.ArkGraphics2D';
5027class DrawingRenderNode extends RenderNode {
5028  draw(context : DrawContext) {
5029    let xDivs : Array<number> = [1, 2, 4];
5030    let yDivs : Array<number> = [1, 2, 4];
5031    let lattice = drawing.Lattice.createImageLattice(xDivs, yDivs, 3, 3); // 划分(3+1)*(3+1)的网格,下图蓝色填充矩形为固定网格
5032  }
5033}
5034```
5035![zh-ch_Lattice.png](figures/zh-ch_Lattice.png)
5036
5037### createImageLattice<sup>13+</sup>
5038
5039static createImageLattice(xDivs: Array\<number>, yDivs: Array\<number>, fXCount: number, fYCount: number, fBounds?: common2D.Rect | null, fRectTypes?: Array\<RectType> | null, fColors?: Array\<number> | null): Lattice
5040
5041创建矩形网格对象。将图像划分为矩形网格,同时处于偶数列和偶数行上的网格是固定的,如果目标网格足够大,则这些固定网格以其原始大小进行绘制。如果目标网格太小,无法容纳这些固定网格,则所有固定网格都会按比例缩小以适应目标网格。其余网格将进行缩放,来适应剩余的空间。
5042
5043**系统能力:** SystemCapability.Graphics.Drawing
5044
5045**参数:**
5046
5047| 参数名       | 类型                                                                | 必填 | 说明                                                                               |
5048| ------------ | ------------------------------------------------------------------ | ---- | --------------------------------------------------------------------------------- |
5049| xDivs        | Array\<number>                                                     | 是   | 用于划分图像的X坐标值数组。该参数为整数。                                             |
5050| yDivs        | Array\<number>                                                     | 是   | 用于划分图像的Y坐标值数组。该参数为整数。                                             |
5051| fXCount      | number                                                             | 是   | X坐标值数组的大小。基于功能和性能的考虑,取值范围为[0, 5]。                            |
5052| fYCount      | number                                                             | 是   | Y坐标值数组的大小。基于功能和性能的考虑,取值范围为[0, 5]。                            |
5053| fBounds      | [common2D.Rect](js-apis-graphics-common2D.md#rect)\|null           | 否   | 可选,要绘制的原始边界矩形,矩形参数须为整数,默认为原始图像矩形大小(若矩形参数为小数,会直接舍弃小数部分,转为整数)。 |
5054| fRectTypes   | Array\<[RectType](#recttype12)>\|null                              | 否   | 可选,填充网格类型的数组,默认为空。如果设置,大小必须为(fXCount + 1) * (fYCount + 1)。 |
5055| fColors      | Array\<number>\|null | 否   | 可选,填充网格的颜色数组,颜色用16进制ARGB格式的32位无符号整数表示,参数默认为空。如果设置,大小必须为(fXCount + 1) * (fYCount + 1)。 |
5056
5057**返回值:**
5058
5059| 类型                       | 说明                                |
5060| ------------------------- | ----------------------------------- |
5061| [Lattice](#lattice12)     | 返回创建的矩形网格对象。              |
5062
5063**错误码:**
5064
5065以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
5066
5067| 错误码ID | 错误信息 |
5068| ------- | --------------------------------------------|
5069| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types;3.Parameter verification failed. |
5070
5071**示例:**
5072
5073```ts
5074import { RenderNode } from '@kit.ArkUI';
5075import { drawing } from '@kit.ArkGraphics2D';
5076class DrawingRenderNode extends RenderNode {
5077  draw(context : DrawContext) {
5078    let xDivs : Array<number> = [1, 2, 4];
5079    let yDivs : Array<number> = [1, 2, 4];
5080    let colorArray :Array<number>=[0xffffff,0x444444,0x999999,0xffffff,0x444444,0x999999,0xffffff,0x444444,0x999999,0x444444,0x999999,0xffffff,0x444444,0x999999,0xffffff,0x444444];
5081    let lattice = drawing.Lattice.createImageLattice(xDivs, yDivs, 3, 3,null,null,colorArray);
5082  }
5083}
5084```
5085
5086## RectType<sup>12+</sup>
5087
5088定义填充网格的矩形类型的枚举。仅在[Lattice](#lattice12)中使用。
5089
5090**系统能力:** SystemCapability.Graphics.Drawing
5091
5092| 名称         | 值   | 说明                                                             |
5093| ------------ | ---- | --------------------------------------------------------------- |
5094| DEFAULT      | 0    | 将图像绘制到矩形网格中。                                          |
5095| TRANSPARENT  | 1    | 将矩形网格设置为透明的。                                          |
5096| FIXEDCOLOR   | 2    | 将[Lattice](#lattice12)中fColors数组的颜色绘制到矩形网格中。       |
5097
5098## MaskFilter<sup>12+</sup>
5099
5100蒙版滤镜对象。
5101
5102### createBlurMaskFilter<sup>12+</sup>
5103
5104static createBlurMaskFilter(blurType: BlurType, sigma: number): MaskFilter
5105
5106用于创建具有模糊效果的蒙版滤镜。
5107
5108**系统能力:** SystemCapability.Graphics.Drawing
5109
5110**参数:**
5111
5112| 参数名     | 类型                   | 必填 | 说明                                 |
5113| ---------- | --------------------- | ---- | ----------------------------------- |
5114| blurType   | [BlurType](#blurtype12) | 是   | 模糊类型。                           |
5115| sigma      | number                | 是   | 要应用的高斯模糊的标准偏差,必须为大于0的浮点数。 |
5116
5117**返回值:**
5118
5119| 类型                      | 说明                |
5120| ------------------------- | ------------------ |
5121| [MaskFilter](#maskfilter12) | 返回创建的蒙版滤镜对象。 |
5122
5123**错误码:**
5124
5125以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
5126
5127| 错误码ID | 错误信息 |
5128| ------- | --------------------------------------------|
5129| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types;3.Parameter verification failed. |
5130
5131**示例:**
5132
5133```ts
5134import { RenderNode } from '@kit.ArkUI';
5135import { common2D, drawing } from '@kit.ArkGraphics2D';
5136class DrawingRenderNode extends RenderNode {
5137  draw(context : DrawContext) {
5138    const canvas = context.canvas;
5139    let maskFilter = drawing.MaskFilter.createBlurMaskFilter(drawing.BlurType.OUTER, 10);
5140  }
5141}
5142```
5143
5144## PathEffect<sup>12+</sup>
5145
5146路径效果对象。
5147
5148### createDashPathEffect<sup>12+</sup>
5149
5150static createDashPathEffect(intervals:  Array\<number>, phase: number): PathEffect
5151
5152用于创建将路径变为虚线的路径效果对象。
5153
5154**系统能力:** SystemCapability.Graphics.Drawing
5155
5156**参数:**
5157
5158| 参数名     | 类型           | 必填    | 说明                                               |
5159| ---------- | ------------- | ------- | -------------------------------------------------- |
5160| intervals  | Array\<number> | 是      | 表示虚线的ON和OFF长度的数组,数组个数必须是偶数,且>=2,该参数为正整数。|
5161| phase      | number         | 是      | 绘制时的偏移量,该参数为浮点数。                                     |
5162
5163**返回值:**
5164
5165| 类型                      | 说明                   |
5166| ------------------------- | --------------------- |
5167| [PathEffect](#patheffect12) | 返回创建的路径效果对象。 |
5168
5169**错误码:**
5170
5171以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
5172
5173| 错误码ID | 错误信息 |
5174| ------- | --------------------------------------------|
5175| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types;3.Parameter verification failed. |
5176
5177**示例:**
5178
5179```ts
5180import { RenderNode } from '@kit.ArkUI';
5181import { common2D, drawing } from '@kit.ArkGraphics2D';
5182class DrawingRenderNode extends RenderNode {
5183  draw(context : DrawContext) {
5184    const canvas = context.canvas;
5185    let intervals = [10, 5];
5186    let effect = drawing.PathEffect.createDashPathEffect(intervals, 5);
5187  }
5188}
5189```
5190
5191### createCornerPathEffect<sup>12+</sup>
5192
5193static createCornerPathEffect(radius: number): PathEffect
5194
5195用于创建将路径的夹角变成指定半径的圆角的路径效果对象。
5196
5197**系统能力:** SystemCapability.Graphics.Drawing
5198
5199**参数:**
5200
5201| 参数名     | 类型           | 必填    | 说明                                               |
5202| ---------- | ------------- | ------- | -------------------------------------------------- |
5203| radius     | number        | 是      | 圆角的半径,必须大于0,该参数为浮点数。                |
5204
5205**返回值:**
5206
5207| 类型                      | 说明                   |
5208| ------------------------- | --------------------- |
5209| [PathEffect](#patheffect12) | 返回创建的路径效果对象。 |
5210
5211**错误码:**
5212
5213以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
5214
5215| 错误码ID | 错误信息 |
5216| ------- | --------------------------------------------|
5217| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types;3.Parameter verification failed. |
5218
5219**示例:**
5220
5221```ts
5222import { RenderNode } from '@kit.ArkUI';
5223import { drawing } from '@kit.ArkGraphics2D';
5224class DrawingRenderNode extends RenderNode {
5225  draw(context : DrawContext) {
5226    const canvas = context.canvas;
5227    let effect = drawing.PathEffect.createCornerPathEffect(30);
5228  }
5229}
5230```
5231
5232## ShadowLayer<sup>12+</sup>
5233
5234阴影层对象。
5235
5236### create<sup>12+</sup>
5237
5238static create(blurRadius: number, x: number, y: number, color: common2D.Color): ShadowLayer
5239
5240用于创建一个阴影层对象。
5241
5242**系统能力:** SystemCapability.Graphics.Drawing
5243
5244**参数:**
5245
5246| 参数名     | 类型      | 必填 | 说明                                 |
5247| ---------- | -------- | ---- | ----------------------------------- |
5248| blurRadius  | number   | 是   | 阴影的半径,必须为大于零的浮点数。     |
5249| x           | number   | 是   | x轴上的偏移点,该参数为浮点数。        |
5250| y           | number   | 是   | Y轴上的偏移点,该参数为浮点数。        |
5251| color       | [common2D.Color](js-apis-graphics-common2D.md#color) | 是   | ARGB格式的颜色,每个颜色通道是0到255之间的整数。 |
5252
5253**返回值:**
5254
5255| 类型                        | 说明                  |
5256| --------------------------- | -------------------- |
5257| [ShadowLayer](#shadowlayer12) | 返回创建的阴影层对象。 |
5258
5259**错误码:**
5260
5261以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
5262
5263| 错误码ID | 错误信息 |
5264| ------- | --------------------------------------------|
5265| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types;3.Parameter verification failed. |
5266
5267**示例:**
5268
5269```ts
5270import { RenderNode } from '@kit.ArkUI';
5271import { common2D, drawing } from '@kit.ArkGraphics2D';
5272class DrawingRenderNode extends RenderNode {
5273  draw(context : DrawContext) {
5274    const canvas = context.canvas;
5275    let color : common2D.Color = {alpha: 0xFF, red: 0x00, green: 0xFF, blue: 0x00};
5276    let shadowLayer = drawing.ShadowLayer.create(3, -3, 3, color);
5277  }
5278}
5279```
5280
5281## Pen
5282
5283画笔对象,描述所绘制图形形状的轮廓信息。
5284
5285### constructor<sup>12+</sup>
5286
5287constructor()
5288
5289构造一个新的画笔对象。
5290
5291**系统能力:** SystemCapability.Graphics.Drawing
5292
5293**示例:**
5294
5295```ts
5296import { drawing } from '@kit.ArkGraphics2D';
5297
5298const pen = new drawing.Pen();
5299```
5300
5301### constructor<sup>12+</sup>
5302
5303constructor(pen: Pen)
5304
5305复制构造一个新的画笔对象。
5306
5307**系统能力:** SystemCapability.Graphics.Drawing
5308
5309**参数:**
5310
5311| 参数名 | 类型        | 必填 | 说明              |
5312| ------| ----------- | ---- | ---------------- |
5313| pen     | [Pen](#pen) | 是   | 待复制的画笔对象。 |
5314
5315**错误码:**
5316
5317以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
5318
5319| 错误码ID | 错误信息 |
5320| ------- | --------------------------------------------|
5321| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. |
5322
5323**示例:**
5324
5325```ts
5326import { common2D, drawing } from '@kit.ArkGraphics2D';
5327
5328const pen = new drawing.Pen();
5329const penColor: common2D.Color = { alpha: 255, red: 0, green: 255, blue: 0 };
5330pen.setColor(penColor);
5331pen.setStrokeWidth(10);
5332const newPen = new drawing.Pen(pen);
5333```
5334
5335### setMiterLimit<sup>12+</sup>
5336
5337setMiterLimit(miter: number): void
5338
5339设置折线尖角长度与线宽的最大比值,当画笔绘制一条折线,并且[JoinStyle](#joinstyle12)为MITER_JOIN时,若尖角长度与线宽的比值大于限制值,则该折角使用BEVEL_JOIN绘制。
5340
5341**系统能力:** SystemCapability.Graphics.Drawing
5342
5343**参数:**
5344
5345| 参数名 | 类型    | 必填 | 说明              |
5346| ------ | ------ | ---- | ---------------- |
5347| miter  | number | 是   | 折线尖角长度与线宽的最大比值,负数在绘制时会被视作4.0处理,非负数正常生效,该参数为浮点数。 |
5348
5349**错误码:**
5350
5351以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
5352
5353| 错误码ID | 错误信息 |
5354| ------- | --------------------------------------------|
5355| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. |
5356
5357**示例:**
5358
5359```ts
5360import { drawing } from '@kit.ArkGraphics2D';
5361
5362const pen = new drawing.Pen();
5363pen.setMiterLimit(5);
5364```
5365
5366### getMiterLimit<sup>12+</sup>
5367
5368getMiterLimit(): number
5369
5370获取折线尖角的限制值。
5371
5372**系统能力:** SystemCapability.Graphics.Drawing
5373
5374**返回值:**
5375
5376| 类型   | 说明                 |
5377| -------| -------------------- |
5378| number | 返回折线尖角长度与线宽的最大比值。 |
5379
5380**示例:**
5381
5382```ts
5383import { drawing } from '@kit.ArkGraphics2D';
5384
5385const pen = new drawing.Pen();
5386let miter = pen.getMiterLimit();
5387```
5388
5389### setImageFilter<sup>12+</sup>
5390
5391setImageFilter(filter: ImageFilter | null): void
5392
5393为画笔设置图像滤波器。
5394
5395**系统能力:** SystemCapability.Graphics.Drawing
5396
5397**参数:**
5398
5399| 参数名 | 类型   | 必填 | 说明                    |
5400| ------ | ------ | ---- | ----------------------- |
5401| filter    | [ImageFilter](#imagefilter12) \| null | 是   |  图像滤波器,为null表示清空画笔的图像滤波器效果。 |
5402
5403**错误码:**
5404
5405以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
5406
5407| 错误码ID | 错误信息 |
5408| ------- | --------------------------------------------|
5409| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified;2. Incorrect parameter types. |
5410
5411**示例:**
5412
5413```ts
5414import {drawing} from '@kit.ArkGraphics2D';
5415let colorfilter = drawing.ColorFilter.createSRGBGammaToLinear();
5416let imgFilter = drawing.ImageFilter.createFromColorFilter(colorfilter);
5417let pen = new drawing.Pen();
5418pen.setImageFilter(imgFilter);
5419pen.setImageFilter(null);
5420```
5421
5422### getColorFilter<sup>12+</sup>
5423
5424getColorFilter(): ColorFilter
5425
5426获取画笔的颜色滤波器。
5427
5428**系统能力:** SystemCapability.Graphics.Drawing
5429
5430**返回值:**
5431
5432| 类型                        | 说明               |
5433| --------------------------- | ------------------ |
5434| [ColorFilter](#colorfilter) | 返回一个颜色滤波器。 |
5435
5436**示例:**
5437
5438```ts 
5439import {drawing} from '@kit.ArkGraphics2D';
5440let pen = new drawing.Pen();
5441let colorfilter = drawing.ColorFilter.createLumaColorFilter();
5442pen.setColorFilter(colorfilter);
5443let filter = pen.getColorFilter();
5444```
5445
5446### setColor
5447
5448setColor(color: common2D.Color) : void
5449
5450用于设置画笔的颜色。
5451
5452**系统能力:** SystemCapability.Graphics.Drawing
5453
5454**参数:**
5455
5456| 参数名 | 类型                                                 | 必填 | 说明             |
5457| ------ | ---------------------------------------------------- | ---- | ---------------- |
5458| color  | [common2D.Color](js-apis-graphics-common2D.md#color) | 是   | ARGB格式的颜色,每个颜色通道是0到255之间的整数。 |
5459
5460**错误码:**
5461
5462以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
5463
5464| 错误码ID | 错误信息 |
5465| ------- | --------------------------------------------|
5466| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types;3.Parameter verification failed. |
5467
5468**示例:**
5469
5470```ts
5471import { common2D, drawing } from '@kit.ArkGraphics2D';
5472const color : common2D.Color = { alpha: 255, red: 255, green: 0, blue: 0 };
5473const pen = new drawing.Pen();
5474pen.setColor(color);
5475```
5476
5477### setColor<sup>12+</sup>
5478
5479setColor(alpha: number, red: number, green: number, blue: number): void
5480
5481用于设置画笔的颜色。性能优于[setColor](#setcolor)接口,推荐使用本接口。
5482
5483**系统能力:** SystemCapability.Graphics.Drawing
5484
5485**参数:**
5486
5487| 参数名 | 类型    | 必填 | 说明                                                |
5488| ------ | ------ | ---- | -------------------------------------------------- |
5489| alpha  | number | 是   | ARGB格式颜色的透明度通道值,该参数是0到255之间的整数,传入范围内的浮点数会向下取整。 |
5490| red    | number | 是   | ARGB格式颜色的红色通道值,该参数是0到255之间的整数,传入范围内的浮点数会向下取整。   |
5491| green  | number | 是   | ARGB格式颜色的绿色通道值,该参数是0到255之间的整数,传入范围内的浮点数会向下取整。   |
5492| blue   | number | 是   | ARGB格式颜色的蓝色通道值,该参数是0到255之间的整数,传入范围内的浮点数会向下取整。   |
5493
5494**错误码:**
5495
5496以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
5497
5498| 错误码ID | 错误信息 |
5499| ------- | --------------------------------------------|
5500| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. |
5501
5502**示例:**
5503
5504```ts
5505import { drawing } from '@kit.ArkGraphics2D';
5506const pen = new drawing.Pen();
5507pen.setColor(255, 255, 0, 0);
5508```
5509
5510### getColor<sup>12+</sup>
5511
5512getColor(): common2D.Color
5513
5514获取画笔的颜色。
5515
5516**系统能力:** SystemCapability.Graphics.Drawing
5517
5518**返回值:**
5519
5520| 类型           | 说明            |
5521| -------------- | -------------- |
5522| common2D.Color | 返回画笔的颜色。 |
5523
5524**示例:**
5525
5526```ts
5527import { common2D, drawing } from '@kit.ArkGraphics2D';
5528
5529const color : common2D.Color = { alpha: 255, red: 255, green: 0, blue: 0 };
5530const pen = new drawing.Pen();
5531pen.setColor(color);
5532let colorGet = pen.getColor();
5533```
5534
5535### getHexColor<sup>13+</sup>
5536
5537getHexColor(): number
5538
5539获取画笔的颜色。
5540
5541**系统能力:** SystemCapability.Graphics.Drawing
5542
5543**返回值:**
5544
5545| 类型           | 说明            |
5546| -------------- | -------------- |
5547| number | 返回画笔的颜色,以16进制ARGB格式的32位无符号整数表示。 |
5548
5549**示例:**
5550
5551```ts
5552import { common2D, drawing } from '@kit.ArkGraphics2D';
5553
5554let color : common2D.Color = { alpha: 255, red: 255, green: 0, blue: 0 };
5555let pen = new drawing.Pen();
5556pen.setColor(color);
5557let hex_color: number = pen.getHexColor();
5558console.info('getHexColor: ', hex_color.toString(16));
5559```
5560
5561### setStrokeWidth
5562
5563setStrokeWidth(width: number) : void
5564
5565用于设置画笔的线宽。0线宽被视作特殊的极细线宽,在绘制时始终会被绘制为1像素,不随画布的缩放而改变;负数线宽在实际绘制时会被视作0线宽。
5566
5567**系统能力:** SystemCapability.Graphics.Drawing
5568
5569**参数:**
5570
5571| 参数名 | 类型   | 必填 | 说明             |
5572| ------ | ------ | ---- | ---------------- |
5573| width  | number | 是   | 表示线宽,该参数为浮点数。 |
5574
5575**错误码:**
5576
5577以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
5578
5579| 错误码ID | 错误信息 |
5580| ------- | --------------------------------------------|
5581| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. |
5582
5583**示例:**
5584
5585```ts
5586import { drawing } from '@kit.ArkGraphics2D';
5587const pen = new drawing.Pen();
5588pen.setStrokeWidth(5);
5589```
5590
5591### getWidth<sup>12+</sup>
5592
5593getWidth(): number
5594
5595获取画笔的线宽属性,线宽描述了画笔绘制图形轮廓的宽度。
5596
5597**系统能力:** SystemCapability.Graphics.Drawing
5598
5599**返回值:**
5600
5601| 类型   | 说明            |
5602| ------ | -------------- |
5603| number | 返回画笔的线宽。 |
5604
5605**示例:**
5606
5607```ts
5608import { drawing } from '@kit.ArkGraphics2D';
5609
5610const pen = new drawing.Pen();
5611let width = pen.getWidth();
5612```
5613
5614### setAntiAlias
5615
5616setAntiAlias(aa: boolean) : void
5617
5618用于设置画笔是否开启抗锯齿。开启后,可以使得图形的边缘在显示时更平滑。
5619
5620**系统能力:** SystemCapability.Graphics.Drawing
5621
5622**参数:**
5623
5624| 参数名 | 类型    | 必填 | 说明                                              |
5625| ------ | ------- | ---- | ------------------------------------------------- |
5626| aa     | boolean | 是   | 表示是否开启抗锯齿。true表示开启,false表示关闭。 |
5627
5628**错误码:**
5629
5630以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
5631
5632| 错误码ID | 错误信息 |
5633| ------- | --------------------------------------------|
5634| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. |
5635
5636**示例:**
5637
5638```ts
5639import { drawing } from '@kit.ArkGraphics2D';
5640const pen = new drawing.Pen();
5641pen.setAntiAlias(true);
5642```
5643
5644### isAntiAlias<sup>12+</sup>
5645
5646isAntiAlias(): boolean
5647
5648获取画笔是否开启抗锯齿属性。
5649
5650**系统能力:** SystemCapability.Graphics.Drawing
5651
5652**返回值:**
5653
5654| 类型    | 说明                       |
5655| ------- | ------------------------- |
5656| boolean | 返回画笔是否开启抗锯齿属性,true表示开启抗锯齿属性,false表示关闭抗锯齿属性。 |
5657
5658**示例:**
5659
5660```ts
5661import { drawing } from '@kit.ArkGraphics2D';
5662
5663const pen = new drawing.Pen();
5664let isAntiAlias = pen.isAntiAlias();
5665```
5666
5667### setAlpha
5668
5669setAlpha(alpha: number) : void
5670
5671用于设置画笔的透明度。
5672
5673**系统能力:** SystemCapability.Graphics.Drawing
5674
5675**参数:**
5676
5677| 参数名 | 类型   | 必填 | 说明                                     |
5678| ------ | ------ | ---- | ---------------------------------------- |
5679| alpha  | number | 是   | 用于表示透明度的[0, 255]区间内的整数值,传入浮点类型时向下取整。 |
5680
5681**错误码:**
5682
5683以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
5684
5685| 错误码ID | 错误信息 |
5686| ------- | --------------------------------------------|
5687| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types;3.Parameter verification failed. |
5688
5689**示例:**
5690
5691```ts
5692import { drawing } from '@kit.ArkGraphics2D';
5693const pen = new drawing.Pen();
5694pen.setAlpha(128);
5695```
5696
5697### getAlpha<sup>12+</sup>
5698
5699getAlpha(): number
5700
5701获取画笔的透明度。
5702
5703**系统能力:** SystemCapability.Graphics.Drawing
5704
5705**返回值:**
5706
5707| 类型   | 说明              |
5708| ------ | ---------------- |
5709| number | 返回画笔的透明度,该返回值为0到255之间的整数。 |
5710
5711**示例:**
5712
5713```ts
5714import { drawing } from '@kit.ArkGraphics2D';
5715
5716const pen = new drawing.Pen();
5717let alpha = pen.getAlpha();
5718```
5719
5720### setColorFilter
5721
5722setColorFilter(filter: ColorFilter) : void
5723
5724用于给画笔添加额外的颜色滤波器。
5725
5726**系统能力:** SystemCapability.Graphics.Drawing
5727
5728**参数:**
5729
5730| 参数名 | 类型                        | 必填 | 说明         |
5731| ------ | --------------------------- | ---- | ------------ |
5732| filter | [ColorFilter](#colorfilter) | 是   | 颜色滤波器。为null时表示清空颜色滤波器。 |
5733
5734**错误码:**
5735
5736以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
5737
5738| 错误码ID | 错误信息 |
5739| ------- | --------------------------------------------|
5740| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. |
5741
5742**示例:**
5743
5744```ts
5745import { drawing } from '@kit.ArkGraphics2D';
5746const pen = new drawing.Pen();
5747let colorFilter = drawing.ColorFilter.createLinearToSRGBGamma();
5748pen.setColorFilter(colorFilter);
5749```
5750
5751### setMaskFilter<sup>12+</sup>
5752
5753setMaskFilter(filter: MaskFilter): void
5754
5755用于给画笔添加额外的蒙版滤镜。
5756
5757**系统能力:** SystemCapability.Graphics.Drawing
5758
5759**参数:**
5760
5761| 参数名 | 类型                       | 必填 | 说明      |
5762| ------ | ------------------------- | ---- | --------- |
5763| filter | [MaskFilter](#maskfilter12) | 是   | 蒙版滤镜。为null时表示清空蒙版滤镜。 |
5764
5765**错误码:**
5766
5767以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
5768
5769| 错误码ID | 错误信息 |
5770| ------- | --------------------------------------------|
5771| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. |
5772
5773**示例:**
5774
5775```ts
5776import { RenderNode } from '@kit.ArkUI';
5777import { common2D, drawing } from '@kit.ArkGraphics2D';
5778class DrawingRenderNode extends RenderNode {
5779  draw(context : DrawContext) {
5780    const canvas = context.canvas;
5781    const pen = new drawing.Pen();
5782    pen.setStrokeWidth(5);
5783    pen.setColor({alpha: 255, red: 255, green: 0, blue: 0});
5784    let maskFilter = drawing.MaskFilter.createBlurMaskFilter(drawing.BlurType.OUTER, 10);
5785    pen.setMaskFilter(maskFilter);
5786  }
5787}
5788```
5789
5790### setPathEffect<sup>12+</sup>
5791
5792setPathEffect(effect: PathEffect): void
5793
5794设置画笔路径效果。
5795
5796**系统能力:** SystemCapability.Graphics.Drawing
5797
5798**参数:**
5799
5800| 参数名  | 类型                       | 必填 | 说明         |
5801| ------- | ------------------------- | ---- | ------------ |
5802| effect  | [PathEffect](#patheffect12) | 是   | 路径效果对象。为null时表示清空路径效果。 |
5803
5804**错误码:**
5805
5806以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
5807
5808| 错误码ID | 错误信息 |
5809| ------- | --------------------------------------------|
5810| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. |
5811
5812**示例:**
5813
5814```ts
5815import { RenderNode } from '@kit.ArkUI';
5816import { common2D, drawing } from '@kit.ArkGraphics2D';
5817class DrawingRenderNode extends RenderNode {
5818  draw(context : DrawContext) {
5819    const canvas = context.canvas;
5820    const pen = new drawing.Pen();
5821    pen.setStrokeWidth(5);
5822    pen.setColor({alpha: 255, red: 255, green: 0, blue: 0});
5823    let pathEffect = drawing.PathEffect.createDashPathEffect([30, 10], 0);
5824    pen.setPathEffect(pathEffect);
5825  }
5826}
5827```
5828
5829### setShaderEffect<sup>12+</sup>
5830
5831setShaderEffect(shaderEffect: ShaderEffect): void
5832
5833设置画笔着色器效果。
5834
5835**系统能力:** SystemCapability.Graphics.Drawing
5836
5837**参数:**
5838
5839| 参数名  | 类型                       | 必填 | 说明         |
5840| ------- | ------------------------- | ---- | ------------ |
5841| shaderEffect  | [ShaderEffect](#shadereffect12) | 是   | 着色器对象。为null时表示清空着色器效果。 |
5842
5843**错误码:**
5844
5845以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
5846
5847| 错误码ID | 错误信息 |
5848| ------- | --------------------------------------------|
5849| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. |
5850
5851**示例:**
5852
5853```ts
5854import { drawing } from '@kit.ArkGraphics2D';
5855
5856const pen = new drawing.Pen();
5857let shaderEffect = drawing.ShaderEffect.createLinearGradient({x: 100, y: 100}, {x: 300, y: 300}, [0xFF00FF00, 0xFFFF0000], drawing.TileMode.REPEAT);
5858pen.setShaderEffect(shaderEffect);
5859```
5860
5861### setShadowLayer<sup>12+</sup>
5862
5863setShadowLayer(shadowLayer: ShadowLayer): void
5864
5865设置画笔阴影层效果。当前仅在绘制文字时生效。
5866
5867**系统能力:** SystemCapability.Graphics.Drawing
5868
5869**参数:**
5870
5871| 参数名  | 类型                       | 必填 | 说明      |
5872| ------- | ------------------------- | ---- | --------- |
5873| shadowLayer  | [ShadowLayer](#shadowlayer12) | 是   | 阴影层对象。为null时表示清空阴影层效果。 |
5874
5875**错误码:**
5876
5877以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
5878
5879| 错误码ID | 错误信息 |
5880| ------- | --------------------------------------------|
5881| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. |
5882
5883**示例:**
5884
5885```ts
5886import { RenderNode } from '@kit.ArkUI';
5887import { common2D, drawing } from '@kit.ArkGraphics2D';
5888class DrawingRenderNode extends RenderNode {
5889  draw(context : DrawContext) {
5890    const canvas = context.canvas;
5891    let font = new drawing.Font();
5892    font.setSize(60);
5893    let textBlob = drawing.TextBlob.makeFromString("hello", font, drawing.TextEncoding.TEXT_ENCODING_UTF8);
5894    let pen = new drawing.Pen();
5895    pen.setStrokeWidth(2.0);
5896    let pen_color : common2D.Color = {alpha: 0xFF, red: 0xFF, green: 0x00, blue: 0x00};
5897    pen.setColor(pen_color);
5898    canvas.attachPen(pen);
5899    canvas.drawTextBlob(textBlob, 100, 100);
5900    canvas.detachPen();
5901    let color : common2D.Color = {alpha: 0xFF, red: 0x00, green: 0xFF, blue: 0x00};
5902    let shadowLayer = drawing.ShadowLayer.create(3, -3, 3, color);
5903    pen.setShadowLayer(shadowLayer);
5904    canvas.attachPen(pen);
5905    canvas.drawTextBlob(textBlob, 100, 200);
5906    canvas.detachPen();
5907  }
5908}
5909```
5910
5911### setBlendMode
5912
5913setBlendMode(mode: BlendMode) : void
5914
5915用于设置画笔的混合模式。
5916
5917**系统能力:** SystemCapability.Graphics.Drawing
5918
5919**参数:**
5920
5921| 参数名 | 类型                    | 必填 | 说明             |
5922| ------ | ----------------------- | ---- | ---------------- |
5923| mode   | [BlendMode](#blendmode) | 是   | 颜色的混合模式。 |
5924
5925**错误码:**
5926
5927以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
5928
5929| 错误码ID | 错误信息 |
5930| ------- | --------------------------------------------|
5931| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types;3.Parameter verification failed. |
5932
5933**示例:**
5934
5935```ts
5936import { drawing } from '@kit.ArkGraphics2D';
5937const pen = new drawing.Pen();
5938pen.setBlendMode(drawing.BlendMode.SRC);
5939```
5940
5941### setJoinStyle<sup>12+</sup>
5942
5943setJoinStyle(style: JoinStyle): void
5944
5945用于设置画笔绘制转角的样式。
5946
5947**系统能力:** SystemCapability.Graphics.Drawing
5948
5949**参数:**
5950
5951| 参数名 | 类型                     | 必填 | 说明             |
5952| ------ | ----------------------- | ---- | --------------- |
5953| style  | [JoinStyle](#joinstyle12) | 是   | 折线转角样式     |
5954
5955**错误码:**
5956
5957以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
5958
5959| 错误码ID | 错误信息 |
5960| ------- | --------------------------------------------|
5961| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types;3.Parameter verification failed. |
5962
5963**示例:**
5964
5965```ts
5966import { RenderNode } from '@kit.ArkUI';
5967import { common2D, drawing } from '@kit.ArkGraphics2D';
5968class DrawingRenderNode extends RenderNode {
5969  draw(context : DrawContext) {
5970    const canvas = context.canvas;
5971    const pen = new drawing.Pen();
5972    pen.setStrokeWidth(5);
5973    pen.setColor({alpha: 255, red: 255, green: 0, blue: 0});
5974    pen.setJoinStyle(drawing.JoinStyle.ROUND_JOIN);
5975  }
5976}
5977```
5978
5979### getJoinStyle<sup>12+</sup>
5980
5981getJoinStyle(): JoinStyle
5982
5983用于获取画笔绘制转角的样式。
5984
5985**系统能力:** SystemCapability.Graphics.Drawing
5986
5987**返回值:**
5988
5989| 类型          | 说明                    |
5990| ------------- | ---------------------- |
5991| JoinStyle | 返回折线转角的样式。         |
5992
5993**示例:**
5994
5995```ts
5996import { RenderNode } from '@kit.ArkUI';
5997import { common2D, drawing } from '@kit.ArkGraphics2D';
5998class DrawingRenderNode extends RenderNode {
5999  draw(context : DrawContext) {
6000    const canvas = context.canvas;
6001    const pen = new drawing.Pen();
6002    pen.setStrokeWidth(5);
6003    pen.setColor({alpha: 255, red: 255, green: 0, blue: 0});
6004    pen.setJoinStyle(drawing.JoinStyle.ROUND_JOIN);
6005    let joinStyle = pen.getJoinStyle();
6006  }
6007}
6008```
6009
6010### setCapStyle<sup>12+</sup>
6011
6012setCapStyle(style: CapStyle): void
6013
6014用于设置线帽样式。
6015
6016**系统能力:** SystemCapability.Graphics.Drawing
6017
6018**参数:**
6019
6020| 参数名 | 类型                     | 必填 | 说明                   |
6021| ------ | ----------------------- | ---- | --------------------- |
6022| style  | [CapStyle](#capstyle12)   | 是   | 描述线帽样式的变量。    |
6023
6024**错误码:**
6025
6026以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
6027
6028| 错误码ID | 错误信息 |
6029| ------- | --------------------------------------------|
6030| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types;3.Parameter verification failed. |
6031
6032**示例:**
6033
6034```ts
6035import { RenderNode } from '@kit.ArkUI';
6036import { common2D, drawing } from '@kit.ArkGraphics2D';
6037class DrawingRenderNode extends RenderNode {
6038  draw(context : DrawContext) {
6039    const canvas = context.canvas;
6040    const pen = new drawing.Pen();
6041    pen.setStrokeWidth(5);
6042    pen.setColor({alpha: 255, red: 255, green: 0, blue: 0});
6043    pen.setCapStyle(drawing.CapStyle.SQUARE_CAP);
6044  }
6045}
6046```
6047
6048### getCapStyle<sup>12+</sup>
6049
6050getCapStyle(): CapStyle
6051
6052用于获取画笔的线帽样式。
6053
6054**系统能力:** SystemCapability.Graphics.Drawing
6055
6056**返回值:**
6057
6058| 类型         | 说明                |
6059| ------------ | ------------------ |
6060| CapStyle     | 返回画笔的线帽样式。 |
6061
6062**示例:**
6063
6064```ts
6065import { RenderNode } from '@kit.ArkUI';
6066import { common2D, drawing } from '@kit.ArkGraphics2D';
6067class DrawingRenderNode extends RenderNode {
6068  draw(context : DrawContext) {
6069    const canvas = context.canvas;
6070    const pen = new drawing.Pen();
6071    pen.setStrokeWidth(5);
6072    pen.setColor({alpha: 255, red: 255, green: 0, blue: 0});
6073    pen.setCapStyle(drawing.CapStyle.SQUARE_CAP);
6074    let capStyle = pen.getCapStyle();
6075  }
6076}
6077```
6078
6079### setDither
6080
6081setDither(dither: boolean) : void
6082
6083开启画笔的抖动绘制效果。抖动绘制可以使得绘制出的颜色更加真实。
6084
6085**系统能力:** SystemCapability.Graphics.Drawing
6086
6087**参数:**
6088
6089| 参数名 | 类型    | 必填 | 说明                                                      |
6090| ------ | ------- | ---- | --------------------------------------------------------- |
6091| dither | boolean | 是   | 是否开启画笔的抖动绘制效果。true表示开启,false表示关闭。 |
6092
6093**错误码:**
6094
6095以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
6096
6097| 错误码ID | 错误信息 |
6098| ------- | --------------------------------------------|
6099| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. |
6100
6101**示例:**
6102
6103```ts
6104import { drawing } from '@kit.ArkGraphics2D';
6105const pen = new drawing.Pen();
6106pen.setDither(true);
6107```
6108
6109### getFillPath<sup>12+</sup>
6110
6111getFillPath(src: Path, dst: Path): boolean
6112
6113获取使用画笔绘制的源路径轮廓,并用目标路径表示。
6114
6115**系统能力:** SystemCapability.Graphics.Drawing
6116
6117**参数:**
6118
6119| 参数名   | 类型                                         | 必填 | 说明                            |
6120| -------- | -------------------------------------------- | ---- | ------------------------------- |
6121| src | [Path](#path) | 是   | 源路径对象。                 |
6122| dst     | [Path](#path)                | 是   | 目标路径对象。 |
6123
6124**返回值:**
6125
6126| 类型                  | 说明           |
6127| --------------------- | -------------- |
6128| boolean | 返回获取源路径轮廓是否成功的结果,true表示获取成功,false表示获取失败。 |
6129
6130**错误码:**
6131
6132以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
6133
6134| 错误码ID | 错误信息 |
6135| ------- | --------------------------------------------|
6136| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. |
6137
6138**示例:**
6139
6140```ts
6141import { drawing } from '@kit.ArkGraphics2D';
6142let pen = new drawing.Pen();
6143let pathSrc: drawing.Path = new drawing.Path();
6144let pathDst: drawing.Path = new drawing.Path();
6145pathSrc.moveTo(0, 0);
6146pathSrc.lineTo(700, 700);
6147let value = pen.getFillPath(pathSrc, pathDst);
6148```
6149
6150### reset<sup>12+</sup>
6151
6152reset(): void
6153
6154重置当前画笔为初始状态。
6155
6156**系统能力:** SystemCapability.Graphics.Drawing
6157
6158**示例:**
6159
6160```ts
6161import { drawing } from '@kit.ArkGraphics2D';
6162
6163const pen = new drawing.Pen();
6164pen.reset();
6165```
6166
6167## Brush
6168
6169画刷对象,描述所绘制图形的填充信息。
6170
6171### constructor<sup>12+</sup>
6172
6173constructor()
6174
6175构造一个新的画刷对象。
6176
6177**系统能力:** SystemCapability.Graphics.Drawing
6178
6179**示例:**
6180
6181```ts
6182import { drawing } from '@kit.ArkGraphics2D';
6183
6184const brush = new drawing.Brush();
6185```
6186
6187### constructor<sup>12+</sup>
6188
6189constructor(brush: Brush)
6190
6191复制构造一个新的画刷对象。
6192
6193**系统能力:** SystemCapability.Graphics.Drawing
6194
6195**参数:**
6196
6197| 参数名 | 类型        | 必填 | 说明              |
6198| ------| ----------- | ---- | ---------------- |
6199| brush     | [Brush](#brush) | 是   | 待复制的画刷对象。 |
6200
6201**错误码:**
6202
6203以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
6204
6205| 错误码ID | 错误信息 |
6206| ------- | --------------------------------------------|
6207| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. |
6208
6209**示例:**
6210
6211```ts
6212import { common2D, drawing } from '@kit.ArkGraphics2D';
6213
6214const brush = new drawing.Brush();
6215const brushColor: common2D.Color = { alpha: 255, red: 0, green: 255, blue: 0 };
6216brush.setColor(brushColor);
6217const newBrush = new drawing.Brush(brush);
6218```
6219
6220### setColor
6221
6222setColor(color: common2D.Color) : void
6223
6224用于设置画刷的颜色。
6225
6226**系统能力:** SystemCapability.Graphics.Drawing
6227
6228**参数:**
6229
6230| 参数名 | 类型                                                 | 必填 | 说明             |
6231| ------ | ---------------------------------------------------- | ---- | ---------------- |
6232| color  | [common2D.Color](js-apis-graphics-common2D.md#color) | 是   | ARGB格式的颜色,每个颜色通道是0到255之间的整数。 |
6233
6234**错误码:**
6235
6236以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
6237
6238| 错误码ID | 错误信息 |
6239| ------- | --------------------------------------------|
6240| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types;3.Parameter verification failed. |
6241
6242**示例:**
6243
6244```ts
6245import { common2D, drawing } from '@kit.ArkGraphics2D';
6246const color : common2D.Color = { alpha: 255, red: 255, green: 0, blue: 0 };
6247const brush = new drawing.Brush();
6248brush.setColor(color);
6249```
6250
6251### setColor<sup>12+</sup>
6252
6253setColor(alpha: number, red: number, green: number, blue: number): void
6254
6255用于设置画刷的颜色。性能优于[setColor](#setcolor-1)接口,推荐使用本接口。
6256
6257**系统能力:** SystemCapability.Graphics.Drawing
6258 
6259**参数:**
6260
6261| 参数名 | 类型    | 必填 | 说明                                               |
6262| ------ | ------ | ---- | -------------------------------------------------- |
6263| alpha  | number | 是   | ARGB格式颜色的透明度通道值,该参数是0到255之间的整数,传入范围内的浮点数会向下取整。 |
6264| red    | number | 是   | ARGB格式颜色的红色通道值,该参数是0到255之间的整数,传入范围内的浮点数会向下取整。   |
6265| green  | number | 是   | ARGB格式颜色的绿色通道值,该参数是0到255之间的整数,传入范围内的浮点数会向下取整。   |
6266| blue   | number | 是   | ARGB格式颜色的蓝色通道值,该参数是0到255之间的整数,传入范围内的浮点数会向下取整。   |
6267
6268**错误码:**
6269
6270以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
6271
6272| 错误码ID | 错误信息 |
6273| ------- | --------------------------------------------|
6274| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types;3.Parameter verification failed. |
6275
6276**示例:**
6277
6278```ts
6279import { drawing } from '@kit.ArkGraphics2D';
6280const brush = new drawing.Brush();
6281brush.setColor(255, 255, 0, 0);
6282```
6283
6284### getColor<sup>12+</sup>
6285
6286getColor(): common2D.Color
6287
6288获取画刷的颜色。
6289
6290**系统能力:** SystemCapability.Graphics.Drawing
6291
6292**返回值:**
6293
6294| 类型           | 说明            |
6295| -------------- | -------------- |
6296| common2D.Color | 返回画刷的颜色。 |
6297
6298**示例:**
6299
6300```ts
6301import { common2D, drawing } from '@kit.ArkGraphics2D';
6302
6303const color : common2D.Color = { alpha: 255, red: 255, green: 0, blue: 0 };
6304const brush = new drawing.Brush();
6305brush.setColor(color);
6306let colorGet = brush.getColor();
6307```
6308
6309### getHexColor<sup>13+</sup>
6310
6311获取画刷的颜色。
6312
6313**系统能力:** SystemCapability.Graphics.Drawing
6314
6315**返回值:**
6316
6317| 类型           | 说明            |
6318| -------------- | -------------- |
6319| number | 返回画刷的颜色,以16进制ARGB格式的32位无符号整数表示。 |
6320
6321**示例:**
6322
6323```ts
6324import { common2D, drawing } from '@kit.ArkGraphics2D';
6325
6326let color : common2D.Color = { alpha: 255, red: 255, green: 0, blue: 0 };
6327let brush = new drawing.Brush();
6328brush.setColor(color);
6329let hex_color: number = brush.getHexColor();
6330console.info('getHexColor: ', hex_color.toString(16));
6331```
6332
6333### setAntiAlias
6334
6335setAntiAlias(aa: boolean) : void
6336
6337用于设置画刷是否开启抗锯齿。开启后,可以使得图形的边缘在显示时更平滑。
6338
6339**系统能力:** SystemCapability.Graphics.Drawing
6340
6341**参数:**
6342
6343| 参数名 | 类型    | 必填 | 说明                                              |
6344| ------ | ------- | ---- | ------------------------------------------------- |
6345| aa     | boolean | 是   | 表示是否开启抗锯齿。true表示开启,false表示关闭。 |
6346
6347**错误码:**
6348
6349以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
6350
6351| 错误码ID | 错误信息 |
6352| ------- | --------------------------------------------|
6353| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. |
6354
6355**示例:**
6356
6357```ts
6358import { drawing } from '@kit.ArkGraphics2D';
6359const brush = new drawing.Brush();
6360brush.setAntiAlias(true);
6361```
6362
6363### isAntiAlias<sup>12+</sup>
6364
6365isAntiAlias(): boolean
6366
6367获取画刷是否开启抗锯齿属性。
6368
6369**系统能力:** SystemCapability.Graphics.Drawing
6370
6371**返回值:**
6372
6373| 类型    | 说明                       |
6374| ------- | ------------------------- |
6375| boolean | 返回画刷是否开启抗锯齿属性,true表示开启抗锯齿属性,false表示关闭抗锯齿属性。 |
6376
6377**示例:**
6378
6379```ts
6380import { drawing } from '@kit.ArkGraphics2D';
6381
6382const brush = new drawing.Brush();
6383let isAntiAlias = brush.isAntiAlias();
6384```
6385
6386### setAlpha
6387
6388setAlpha(alpha: number) : void
6389
6390用于设置画刷的透明度。
6391
6392**系统能力:** SystemCapability.Graphics.Drawing
6393
6394**参数:**
6395
6396| 参数名 | 类型   | 必填 | 说明                                     |
6397| ------ | ------ | ---- | ---------------------------------------- |
6398| alpha  | number | 是   | 用于表示透明度的[0, 255]区间内的整数值,传入浮点类型时向下取整。 |
6399
6400**错误码:**
6401
6402以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
6403
6404| 错误码ID | 错误信息 |
6405| ------- | --------------------------------------------|
6406| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types;3.Parameter verification failed. |
6407
6408**示例:**
6409
6410```ts
6411import { drawing } from '@kit.ArkGraphics2D';
6412const brush = new drawing.Brush();
6413brush.setAlpha(128);
6414```
6415
6416### getAlpha<sup>12+</sup>
6417
6418getAlpha(): number
6419
6420获取画刷的透明度。
6421
6422**系统能力:** SystemCapability.Graphics.Drawing
6423
6424**返回值:**
6425
6426| 类型   | 说明              |
6427| ------ | ---------------- |
6428| number | 返回画刷的透明度,该返回值为0到255之间的整数。 |
6429
6430**示例:**
6431
6432```ts
6433import { drawing } from '@kit.ArkGraphics2D';
6434
6435const brush = new drawing.Brush();
6436let alpha = brush.getAlpha();
6437```
6438
6439### setColorFilter
6440
6441setColorFilter(filter: ColorFilter) : void
6442
6443用于给画刷添加额外的颜色滤波器。
6444
6445**系统能力:** SystemCapability.Graphics.Drawing
6446
6447**参数:**
6448
6449| 参数名 | 类型                        | 必填 | 说明         |
6450| ------ | --------------------------- | ---- | ------------ |
6451| filter | [ColorFilter](#colorfilter) | 是   | 颜色滤波器。为null时表示清空颜色滤波器。 |
6452
6453**错误码:**
6454
6455以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
6456
6457| 错误码ID | 错误信息 |
6458| ------- | --------------------------------------------|
6459| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. |
6460
6461**示例:**
6462
6463```ts
6464import { drawing } from '@kit.ArkGraphics2D';
6465const brush = new drawing.Brush();
6466let colorFilter = drawing.ColorFilter.createLinearToSRGBGamma();
6467brush.setColorFilter(colorFilter);
6468```
6469
6470### setMaskFilter<sup>12+</sup>
6471
6472setMaskFilter(filter: MaskFilter): void
6473
6474用于给画刷添加额外的蒙版滤镜。
6475
6476**系统能力:** SystemCapability.Graphics.Drawing
6477
6478**参数:**
6479
6480| 参数名 | 类型                       | 必填 | 说明      |
6481| ------ | ------------------------- | ---- | --------- |
6482| filter | [MaskFilter](#maskfilter12) | 是   | 蒙版滤镜。为null时表示清空蒙版滤镜。 |
6483
6484**错误码:**
6485
6486以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
6487
6488| 错误码ID | 错误信息 |
6489| ------- | --------------------------------------------|
6490| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. |
6491
6492**示例:**
6493
6494```ts
6495import { RenderNode } from '@kit.ArkUI';
6496import { common2D, drawing } from '@kit.ArkGraphics2D';
6497class DrawingRenderNode extends RenderNode {
6498  draw(context : DrawContext) {
6499    const canvas = context.canvas;
6500    const brush = new drawing.Brush();
6501    let maskFilter = drawing.MaskFilter.createBlurMaskFilter(drawing.BlurType.OUTER, 10);
6502    brush.setMaskFilter(maskFilter);
6503  }
6504}
6505```
6506
6507### setShaderEffect<sup>12+</sup>
6508
6509setShaderEffect(shaderEffect: ShaderEffect): void
6510
6511设置画刷着色器效果。
6512
6513**系统能力:** SystemCapability.Graphics.Drawing
6514
6515**参数:**
6516
6517| 参数名  | 类型                       | 必填 | 说明         |
6518| ------- | ------------------------- | ---- | ------------ |
6519| shaderEffect  | [ShaderEffect](#shadereffect12) | 是   | 着色器对象。为null时表示清空着色器效果。 |
6520
6521**错误码:**
6522
6523以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
6524
6525| 错误码ID | 错误信息 |
6526| ------- | --------------------------------------------|
6527| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. |
6528
6529**示例:**
6530
6531```ts
6532import { drawing } from '@kit.ArkGraphics2D';
6533
6534const brush = new drawing.Brush();
6535let shaderEffect = drawing.ShaderEffect.createLinearGradient({x: 100, y: 100}, {x: 300, y: 300}, [0xFF00FF00, 0xFFFF0000], drawing.TileMode.REPEAT);
6536brush.setShaderEffect(shaderEffect);
6537```
6538
6539### setShadowLayer<sup>12+</sup>
6540
6541setShadowLayer(shadowLayer: ShadowLayer): void
6542
6543设置画刷阴影层效果。当前仅在绘制文字时生效。
6544
6545**系统能力:** SystemCapability.Graphics.Drawing
6546
6547**参数:**
6548
6549| 参数名  | 类型                       | 必填 | 说明      |
6550| ------- | ------------------------- | ---- | --------- |
6551| shadowLayer  | [ShadowLayer](#shadowlayer12) | 是   | 阴影层对象。为null时表示清空阴影层效果 |
6552
6553**错误码:**
6554
6555以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
6556
6557| 错误码ID | 错误信息 |
6558| ------- | --------------------------------------------|
6559| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. |
6560
6561**示例:**
6562
6563```ts
6564import { RenderNode } from '@kit.ArkUI';
6565import { common2D, drawing } from '@kit.ArkGraphics2D';
6566class DrawingRenderNode extends RenderNode {
6567  draw(context : DrawContext) {
6568    const canvas = context.canvas;
6569    let font = new drawing.Font();
6570    font.setSize(60);
6571
6572    let textBlob = drawing.TextBlob.makeFromString("hello", font, drawing.TextEncoding.TEXT_ENCODING_UTF8);
6573    let pen = new drawing.Pen();
6574    pen.setStrokeWidth(2.0);
6575
6576    let pen_color : common2D.Color = {alpha: 0xFF, red: 0xFF, green: 0x00, blue: 0x00};
6577    pen.setColor(pen_color);
6578    canvas.attachPen(pen);
6579    canvas.drawTextBlob(textBlob, 100, 100);
6580    canvas.detachPen();
6581
6582    let color : common2D.Color = {alpha: 0xFF, red: 0x00, green: 0xFF, blue: 0x00};
6583    let shadowLayer = drawing.ShadowLayer.create(3, -3, 3, color);
6584    pen.setShadowLayer(shadowLayer);
6585    canvas.attachPen(pen);
6586    canvas.drawTextBlob(textBlob, 100, 200);
6587    canvas.detachPen();
6588
6589    let brush = new drawing.Brush();
6590    let brush_color : common2D.Color = {alpha: 0xFF, red: 0xFF, green: 0x00, blue: 0x00};
6591    brush.setColor(brush_color);
6592    canvas.attachBrush(brush);
6593    canvas.drawTextBlob(textBlob, 300, 100);
6594    canvas.detachBrush();
6595
6596    brush.setShadowLayer(shadowLayer);
6597    canvas.attachBrush(brush);
6598    canvas.drawTextBlob(textBlob, 300, 200);
6599    canvas.detachBrush();
6600  }
6601}
6602```
6603
6604### setBlendMode
6605
6606setBlendMode(mode: BlendMode) : void
6607
6608用于设置画刷的混合模式。
6609
6610**系统能力:** SystemCapability.Graphics.Drawing
6611
6612**参数:**
6613
6614| 参数名 | 类型                    | 必填 | 说明             |
6615| ------ | ----------------------- | ---- | ---------------- |
6616| mode   | [BlendMode](#blendmode) | 是   | 颜色的混合模式。 |
6617
6618**错误码:**
6619
6620以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
6621
6622| 错误码ID | 错误信息 |
6623| ------- | --------------------------------------------|
6624| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types;3.Parameter verification failed. |
6625
6626**示例:**
6627
6628```ts
6629import { drawing } from '@kit.ArkGraphics2D';
6630const brush = new drawing.Brush();
6631brush.setBlendMode(drawing.BlendMode.SRC);
6632```
6633
6634### setImageFilter<sup>12+</sup>
6635
6636setImageFilter(filter: ImageFilter | null): void
6637
6638为画刷设置图像滤波器。
6639
6640**系统能力:** SystemCapability.Graphics.Drawing
6641
6642**参数:**
6643
6644| 参数名 | 类型   | 必填 | 说明                    |
6645| ------ | ------ | ---- | ----------------------- |
6646| filter    | [ImageFilter](#imagefilter12) \| null | 是   | 图像滤波器,为null表示清空图像滤波器效果。 |
6647
6648**错误码:**
6649
6650以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
6651
6652| 错误码ID | 错误信息 |
6653| ------- | --------------------------------------------|
6654| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified;2. Incorrect parameter types. | 
6655
6656**示例:**
6657
6658```ts
6659import {drawing} from '@kit.ArkGraphics2D';
6660let brush = new drawing.Brush();
6661let imgFilter = drawing.ImageFilter.createBlurImageFilter(5, 10, drawing.TileMode.DECAL);
6662brush.setImageFilter(imgFilter);
6663brush.setImageFilter(null);
6664```
6665
6666### getColorFilter<sup>12+</sup>
6667
6668getColorFilter(): ColorFilter
6669
6670获取画刷的颜色滤波器。
6671
6672**系统能力:** SystemCapability.Graphics.Drawing
6673
6674**返回值:**
6675
6676| 类型                        | 说明               |
6677| --------------------------- | ------------------ |
6678| [ColorFilter](#colorfilter) | 返回一个颜色滤波器。 |
6679
6680**示例:**
6681
6682```ts 
6683import {drawing} from '@kit.ArkGraphics2D';
6684let brush = new drawing.Brush();
6685let setColorFilter = drawing.ColorFilter.createSRGBGammaToLinear();
6686brush.setColorFilter(setColorFilter);
6687let filter = brush.getColorFilter();   
6688```
6689
6690### reset<sup>12+</sup>
6691
6692reset(): void
6693
6694重置当前画刷为初始状态。
6695
6696**系统能力:** SystemCapability.Graphics.Drawing
6697
6698**示例:**
6699
6700```ts
6701import { drawing } from '@kit.ArkGraphics2D';
6702
6703const brush = new drawing.Brush();
6704brush.reset();
6705```
6706
6707## ScaleToFit<sup>12+</sup>
6708
6709源矩形到目标矩形的缩放方式枚举。
6710
6711**系统能力**:SystemCapability.Graphics.Drawing
6712
6713| 名称                   | 值   | 说明                           |
6714| ---------------------- | ---- | ------------------------------ |
6715| FILL_SCALE_TO_FIT     | 0    | 将源矩形缩放以填充满整个目标矩形,可能会改变源矩形的长宽比。  |
6716| START_SCALE_TO_FIT    | 1    | 保持源矩形的长宽比进行缩放,并对齐到目标矩形的左上方。 |
6717| CENTER_SCALE_TO_FIT    | 2    | 保持源矩形的长宽比进行缩放,并居中对齐到目标矩形。   |
6718| END_SCALE_TO_FIT | 3    | 保持源矩形的长宽比进行缩放,并对齐到目标矩形的右下方。   |
6719
6720## Matrix<sup>12+</sup>
6721
6722矩阵对象。
6723
6724表示为3*3的矩阵,如下图所示:
6725
6726![matrix_3x3](figures/matrix3X3.PNG)
6727
6728矩阵中的元素从左到右,从上到下分别表示水平缩放系数、水平倾斜系数、水平位移系数、垂直倾斜系数、垂直缩放系数、垂直位移系数、X轴透视系数、Y轴透视系数、透视缩放系数。
6729设(x<sub>1</sub>, y<sub>1</sub>)为源坐标点,(x<sub>2</sub>, y<sub>2</sub>)为源坐标点通过矩阵变换后的坐标点,则两个坐标点的关系如下:
6730
6731![matrix_xy](figures/matrix_xy.PNG)
6732
6733### constructor<sup>12+</sup>
6734
6735constructor()
6736
6737用于构造一个矩阵对象。
6738
6739**系统能力:** SystemCapability.Graphics.Drawing
6740
6741**示例:**
6742
6743```ts
6744import { drawing } from '@kit.ArkGraphics2D';
6745
6746let matrix = new drawing.Matrix();
6747```
6748
6749### setRotation<sup>12+</sup>
6750
6751setRotation(degree: number, px: number, py: number): void
6752
6753设置矩阵为单位矩阵,并围绕位于(px, py)的旋转轴点进行旋转。
6754
6755**系统能力:** SystemCapability.Graphics.Drawing
6756
6757**参数:**
6758
6759| 参数名         | 类型                                       | 必填   | 说明                  |
6760| ----------- | ---------------------------------------- | ---- | ------------------- |
6761| degree      | number                  | 是    | 角度,单位为度。正数表示顺时针旋转,负数表示逆时针旋转,该参数为浮点数。|
6762| px          | number                  | 是    | 旋转轴点的横坐标,该参数为浮点数。     |
6763| py          | number                  | 是    | 旋转轴点的纵坐标,该参数为浮点数。     |
6764
6765**错误码:**
6766
6767以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
6768
6769| 错误码ID | 错误信息 |
6770| ------- | --------------------------------------------|
6771| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. |
6772
6773**示例:**
6774
6775```ts
6776import { drawing } from '@kit.ArkGraphics2D';
6777
6778let matrix = new drawing.Matrix();
6779matrix.setRotation(90, 100, 100);
6780```
6781
6782### setScale<sup>12+</sup>
6783
6784setScale(sx: number, sy: number, px: number, py: number): void
6785
6786设置矩阵为单位矩阵围绕位于(px, py)的中心点,以sx和sy进行缩放后的结果。
6787
6788**系统能力:** SystemCapability.Graphics.Drawing
6789
6790**参数:**
6791
6792| 参数名         | 类型                                       | 必填   | 说明                  |
6793| ----------- | ---------------------------------------- | ---- | ------------------- |
6794| sx          | number                  | 是    | x轴方向缩放系数,为负数时可看作是先关于y = px作镜像翻转后再进行缩放,该参数为浮点数。     |
6795| sy          | number                  | 是    | y轴方向缩放系数,为负数时可看作是先关于x = py作镜像翻转后再进行缩放,该参数为浮点数。     |
6796| px          | number                  | 是    |  缩放中心点的横坐标,该参数为浮点数。      |
6797| py          | number                  | 是    |  缩放中心点的纵坐标,该参数为浮点数。      |
6798
6799**错误码:**
6800
6801以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
6802
6803| 错误码ID | 错误信息 |
6804| ------- | --------------------------------------------|
6805| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. |
6806
6807**示例:**
6808
6809```ts
6810import { drawing } from '@kit.ArkGraphics2D';
6811
6812let matrix = new drawing.Matrix();
6813matrix.setScale(100, 100, 150, 150);
6814```
6815
6816### setTranslation<sup>12+</sup>
6817
6818setTranslation(dx: number, dy: number): void
6819
6820设置矩阵为单位矩阵平移(dx, dy)后的结果。
6821
6822**系统能力:** SystemCapability.Graphics.Drawing
6823
6824**参数:**
6825
6826| 参数名         | 类型                                       | 必填   | 说明                  |
6827| ----------- | ---------------------------------------- | ---- | ------------------- |
6828| dx          | number                  | 是    | x轴方向平移距离,正数表示往x轴正方向平移,负数表示往x轴负方向平移,该参数为浮点数。     |
6829| dy          | number                  | 是    | y轴方向平移距离,正数表示往y轴正方向平移,负数表示往y轴负方向平移,该参数为浮点数。     |
6830
6831**错误码:**
6832
6833以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
6834
6835| 错误码ID | 错误信息 |
6836| ------- | --------------------------------------------|
6837| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. |
6838
6839**示例:**
6840
6841```ts
6842import { drawing } from '@kit.ArkGraphics2D';
6843
6844let matrix = new drawing.Matrix();
6845matrix.setTranslation(100, 100);
6846```
6847
6848### setMatrix<sup>12+</sup>
6849
6850setMatrix(values: Array\<number>): void
6851
6852用于设置矩阵对象的各项参数。
6853
6854**系统能力:** SystemCapability.Graphics.Drawing
6855
6856**参数:**
6857
6858| 参数名 | 类型                                                 | 必填 | 说明             |
6859| ------ | ---------------------------------------------------- | ---- | ---------------- |
6860| values  | Array\<number> | 是   | 长度为9的浮点数组,表示矩阵对象参数。数组中的值按下标从小,到大分别表示水平缩放系数、水平倾斜系数、水平位移系数、垂直倾斜系数、垂直缩放系数、垂直位移系数、X轴透视系数、Y轴透视系数、透视缩放系数。 |
6861
6862**错误码:**
6863
6864以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
6865
6866| 错误码ID | 错误信息 |
6867| ------- | --------------------------------------------|
6868| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types; 3. Parameter verification failed. |
6869
6870**示例:**
6871
6872```ts
6873import { drawing } from '@kit.ArkGraphics2D';
6874
6875let matrix = new drawing.Matrix();
6876let value : Array<number> = [2, 2, 2, 2, 2, 2, 2, 2, 2];
6877matrix.setMatrix(value);
6878```
6879
6880### preConcat<sup>12+</sup>
6881
6882preConcat(matrix: Matrix): void
6883
6884将当前矩阵设置为当前矩阵左乘matrix的结果。
6885
6886**系统能力:** SystemCapability.Graphics.Drawing
6887
6888**参数:**
6889
6890| 参数名 | 类型                                                 | 必填 | 说明             |
6891| ------ | ---------------------------------------------------- | ---- | ---------------- |
6892| matrix  | [Matrix](#matrix12) | 是   | 表示矩阵对象,位于乘法表达式右侧。 |
6893
6894**错误码:**
6895
6896以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
6897
6898| 错误码ID | 错误信息 |
6899| ------- | --------------------------------------------|
6900| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. |
6901
6902**示例:**
6903
6904```ts
6905import { drawing } from '@kit.ArkGraphics2D';
6906
6907let matrix1 = new drawing.Matrix();
6908matrix1.setMatrix([2, 1, 3, 1, 2, 1, 3, 1, 2]);
6909let matrix2 = new drawing.Matrix();
6910matrix2.setMatrix([-2, 1, 3, 1, 0, -1, 3, -1, 2]);
6911matrix1.preConcat(matrix2);
6912```
6913
6914### isEqual<sup>12+</sup>
6915
6916isEqual(matrix: Matrix): Boolean
6917
6918判断两个矩阵是否相等。
6919
6920**系统能力:** SystemCapability.Graphics.Drawing
6921
6922**参数:**
6923
6924| 参数名 | 类型                                                 | 必填 | 说明             |
6925| ------ | ---------------------------------------------------- | ---- | ---------------- |
6926| matrix  | [Matrix](#matrix12) | 是   | 另一个矩阵。 |
6927
6928**返回值:**
6929
6930| 类型                        | 说明                  |
6931| --------------------------- | -------------------- |
6932| Boolean | 返回两个矩阵的比较结果。true表示两个矩阵相等,false表示两个矩阵不相等。 |
6933
6934**错误码:**
6935
6936以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
6937
6938| 错误码ID | 错误信息 |
6939| ------- | --------------------------------------------|
6940| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. |
6941
6942**示例:**
6943
6944```ts
6945import { drawing } from '@kit.ArkGraphics2D';
6946
6947let matrix1 = new drawing.Matrix();
6948matrix1.setMatrix([2, 1, 3, 1, 2, 1, 3, 1, 2]);
6949let matrix2 = new drawing.Matrix();
6950matrix2.setMatrix([-2, 1, 3, 1, 0, -1, 3, -1, 2]);
6951if (matrix1.isEqual(matrix2)) {
6952  console.info("matrix1 and matrix2 are equal.");
6953} else {
6954  console.info("matrix1 and matrix2 are not equal.");
6955}
6956```
6957
6958### invert<sup>12+</sup>
6959
6960invert(matrix: Matrix): Boolean
6961
6962将矩阵matrix设置为当前矩阵的逆矩阵,并返回是否设置成功的结果。
6963
6964**系统能力:** SystemCapability.Graphics.Drawing
6965
6966**参数:**
6967
6968| 参数名 | 类型                                                 | 必填 | 说明             |
6969| ------ | ---------------------------------------------------- | ---- | ---------------- |
6970| matrix  | [Matrix](#matrix12) | 是   | 矩阵对象,用于存储获取到的逆矩阵。 |
6971
6972**返回值:**
6973
6974| 类型                        | 说明                  |
6975| --------------------------- | -------------------- |
6976| Boolean | 返回matrix是否被设置为逆矩阵的结果。true表示当前矩阵可逆,matrix被填充为逆矩阵,false表示当前矩阵不可逆,matrix不被改变。 |
6977
6978**错误码:**
6979
6980以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
6981
6982| 错误码ID | 错误信息 |
6983| ------- | --------------------------------------------|
6984| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. |
6985
6986**示例:**
6987
6988```ts
6989import { drawing } from '@kit.ArkGraphics2D';
6990
6991let matrix1 = new drawing.Matrix();
6992matrix1.setMatrix([2, 1, 3, 1, 2, 1, 3, 1, 2]);
6993let matrix2 = new drawing.Matrix();
6994matrix2.setMatrix([-2, 1, 3, 1, 0, -1, 3, -1, 2]);
6995if (matrix1.invert(matrix2)) {
6996  console.info("matrix1 is invertible and matrix2 is set as an inverse matrix of the matrix1.");
6997} else {
6998  console.info("matrix1 is not invertible and matrix2 is not changed.");
6999}
7000```
7001
7002### isIdentity<sup>12+</sup>
7003
7004isIdentity(): Boolean
7005
7006判断矩阵是否是单位矩阵。
7007
7008**系统能力:** SystemCapability.Graphics.Drawing
7009
7010**返回值:**
7011
7012| 类型                        | 说明                  |
7013| --------------------------- | -------------------- |
7014| Boolean | 返回矩阵是否是单位矩阵。true表示矩阵是单位矩阵,false表示矩阵不是单位矩阵。 |
7015
7016**示例:**
7017
7018```ts
7019import { drawing } from '@kit.ArkGraphics2D';
7020
7021let matrix = new drawing.Matrix();
7022if (matrix.isIdentity()) {
7023  console.info("matrix is identity.");
7024} else {
7025  console.info("matrix is not identity.");
7026}
7027```
7028
7029### getValue<sup>12+</sup>
7030
7031getValue(index: number): number
7032
7033获取矩阵给定索引位的值。索引范围0-8。
7034
7035**系统能力**:SystemCapability.Graphics.Drawing
7036
7037**参数:**
7038
7039| 参数名          | 类型    | 必填 | 说明                                                        |
7040| --------------- | ------- | ---- | ----------------------------------------------------------- |
7041| index | number | 是   | 索引位置,范围0-8,该参数为整数。 |
7042
7043**返回值:**
7044
7045| 类型                  | 说明           |
7046| --------------------- | -------------- |
7047| number | 函数返回矩阵给定索引位对应的值,该返回值为整数。 |
7048
7049**错误码:**
7050
7051以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
7052
7053| 错误码ID | 错误信息 |
7054| ------- | --------------------------------------------|
7055| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified;2. Incorrect parameter types;3. Parameter verification failed.|
7056
7057**示例:**
7058
7059```ts
7060import {drawing} from "@kit.ArkGraphics2D"
7061let matrix = new drawing.Matrix();
7062for (let i = 0; i < 9; i++) {
7063    console.info("matrix "+matrix.getValue(i).toString());
7064}
7065```
7066
7067### postRotate<sup>12+</sup>
7068
7069postRotate(degree: number, px: number, py: number): void
7070
7071将矩阵设置为矩阵右乘围绕轴心点旋转一定角度的单位矩阵后得到的矩阵。
7072
7073**系统能力**:SystemCapability.Graphics.Drawing
7074
7075**参数:**
7076
7077| 参数名          | 类型    | 必填 | 说明                                                        |
7078| --------------- | ------- | ---- | ----------------------------------------------------------- |
7079| degree | number | 是   | 旋转角度,单位为度。正数表示顺时针旋转,负数表示逆时针旋转,该参数为浮点数。 |
7080| px | number | 是   | 旋转中心点的横坐标,该参数为浮点数。 |
7081| py | number | 是   | 旋转中心点的纵坐标,该参数为浮点数。 |
7082
7083**错误码:**
7084
7085以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
7086
7087| 错误码ID | 错误信息 |
7088| ------- | --------------------------------------------|
7089| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. |
7090
7091**示例:**
7092
7093```ts
7094import {drawing} from "@kit.ArkGraphics2D"
7095let matrix = new drawing.Matrix();
7096let degree: number = 2;
7097let px: number = 3;
7098let py: number = 4;
7099matrix.postRotate(degree, px, py);
7100console.info("matrix= "+matrix.getAll().toString());
7101```
7102
7103### postScale<sup>12+</sup>
7104
7105postScale(sx: number, sy: number, px: number, py: number): void
7106
7107将矩阵设置为矩阵右乘围绕轴心点按一定缩放系数缩放后的单位矩阵后得到的矩阵。
7108
7109**系统能力**:SystemCapability.Graphics.Drawing
7110
7111**参数:**
7112
7113| 参数名          | 类型    | 必填 | 说明                                                        |
7114| --------------- | ------- | ---- | ----------------------------------------------------------- |
7115| sx | number | 是   | x轴方向缩放系数,为负数时可看作是先关于y = px作镜像翻转后再进行缩放,该参数为浮点数。 |
7116| sy | number | 是   | y轴方向缩放系数,为负数时可看作是先关于x = py作镜像翻转后再进行缩放,该参数为浮点数。 |
7117| px | number | 是   | 缩放中心点的横坐标,该参数为浮点数。 |
7118| py | number | 是   | 缩放中心点的纵坐标,该参数为浮点数。 |
7119
7120**错误码:**
7121
7122以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
7123
7124| 错误码ID | 错误信息 |
7125| ------- | --------------------------------------------|
7126| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. |
7127
7128**示例:**
7129
7130```ts
7131import {drawing} from "@kit.ArkGraphics2D"
7132let matrix = new drawing.Matrix();
7133let sx: number = 2;
7134let sy: number = 0.5;
7135let px: number = 1;
7136let py: number = 1;
7137matrix.postScale(sx, sy, px, py);
7138console.info("matrix= "+matrix.getAll().toString());
7139```
7140
7141### postTranslate<sup>12+</sup>
7142
7143postTranslate(dx: number, dy: number): void
7144
7145将矩阵设置为矩阵右乘平移一定距离后的单位矩阵后得到的矩阵。
7146
7147**系统能力**:SystemCapability.Graphics.Drawing
7148
7149**参数:**
7150
7151| 参数名          | 类型    | 必填 | 说明                                                        |
7152| --------------- | ------- | ---- | ----------------------------------------------------------- |
7153| dx | number | 是   | x轴方向平移距离,正数表示往x轴正方向平移,负数表示往x轴负方向平移,该参数为浮点数。 |
7154| dy | number | 是   | y轴方向平移距离,正数表示往y轴正方向平移,负数表示往y轴负方向平移,该参数为浮点数。 |
7155
7156**错误码:**
7157
7158以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
7159
7160| 错误码ID | 错误信息 |
7161| ------- | --------------------------------------------|
7162| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. |
7163
7164**示例:**
7165
7166```ts
7167import {drawing} from "@kit.ArkGraphics2D"
7168let matrix = new drawing.Matrix();
7169let dx: number = 3;
7170let dy: number = 4;
7171matrix.postTranslate(dx, dy);
7172console.info("matrix= "+matrix.getAll().toString());
7173```
7174
7175### preRotate<sup>12+</sup>
7176
7177preRotate(degree: number, px: number, py: number): void
7178
7179将矩阵设置为矩阵左乘围绕轴心点旋转一定角度的单位矩阵后得到的矩阵。
7180
7181**系统能力**:SystemCapability.Graphics.Drawing
7182
7183**参数:**
7184
7185| 参数名          | 类型    | 必填 | 说明                                                        |
7186| --------------- | ------- | ---- | ----------------------------------------------------------- |
7187| degree | number | 是   | 旋转角度,单位为度。正数表示顺时针旋转,负数表示逆时针旋转,该参数为浮点数。 |
7188| px | number | 是   | 旋转中心点的横坐标,该参数为浮点数。 |
7189| py | number | 是   | 旋转中心点的纵坐标,该参数为浮点数。 |
7190
7191**错误码:**
7192
7193以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
7194
7195| 错误码ID | 错误信息 |
7196| ------- | --------------------------------------------|
7197| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. |
7198
7199**示例:**
7200
7201```ts
7202import {drawing} from "@kit.ArkGraphics2D"
7203let matrix = new drawing.Matrix();
7204let degree: number = 2;
7205let px: number = 3;
7206let py: number = 4;
7207matrix.preRotate(degree, px, py);
7208console.info("matrix= "+matrix.getAll().toString());
7209```
7210
7211### preScale<sup>12+</sup>
7212
7213preScale(sx: number, sy: number, px: number, py: number): void
7214
7215将矩阵设置为矩阵左乘围绕轴心点按一定缩放系数缩放后的单位矩阵后得到的矩阵。
7216
7217**系统能力**:SystemCapability.Graphics.Drawing
7218
7219**参数:**
7220
7221| 参数名          | 类型    | 必填 | 说明                                                        |
7222| --------------- | ------- | ---- | ----------------------------------------------------------- |
7223| sx | number | 是   | x轴方向缩放系数,为负数时可看作是先关于y = px作镜像翻转后再进行缩放,该参数为浮点数。 |
7224| sy | number | 是   | y轴方向缩放系数,为负数时可看作是先关于x = py作镜像翻转后再进行缩放,该参数为浮点数。 |
7225| px | number | 是   | 轴心点横坐标,该参数为浮点数。 |
7226| py | number | 是   | 轴心点纵坐标,该参数为浮点数。 |
7227
7228**错误码:**
7229
7230以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
7231
7232| 错误码ID | 错误信息 |
7233| ------- | --------------------------------------------|
7234| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. |
7235
7236**示例:**
7237
7238```ts
7239import {drawing} from "@kit.ArkGraphics2D"
7240let matrix = new drawing.Matrix();
7241let sx: number = 2;
7242let sy: number = 0.5;
7243let px: number = 1;
7244let py: number = 1;
7245matrix.preScale(sx, sy, px, py);
7246console.info("matrix"+matrix.getAll().toString());
7247```
7248
7249### preTranslate<sup>12+</sup>
7250
7251preTranslate(dx: number, dy: number): void
7252
7253将矩阵设置为矩阵左乘平移一定距离后的单位矩阵后得到的矩阵。
7254
7255**系统能力**:SystemCapability.Graphics.Drawing
7256
7257**参数:**
7258
7259| 参数名          | 类型    | 必填 | 说明                                                        |
7260| --------------- | ------- | ---- | ----------------------------------------------------------- |
7261| dx | number | 是   | x轴方向平移距离,正数表示往x轴正方向平移,负数表示往x轴负方向平移,该参数为浮点数。 |
7262| dy | number | 是   | y轴方向平移距离,正数表示往y轴正方向平移,负数表示往y轴负方向平移,该参数为浮点数。 |
7263
7264**错误码:**
7265
7266以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
7267
7268| 错误码ID | 错误信息 |
7269| ------- | --------------------------------------------|
7270| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. |
7271
7272**示例:**
7273
7274```ts
7275import {drawing} from "@kit.ArkGraphics2D"
7276let matrix = new drawing.Matrix();
7277let dx: number = 3;
7278let dy: number = 4;
7279matrix.preTranslate(dx, dy);
7280console.info("matrix"+matrix.getAll().toString());
7281```
7282
7283### reset<sup>12+</sup>
7284
7285reset(): void
7286
7287重置当前矩阵为单位矩阵。
7288
7289**系统能力**:SystemCapability.Graphics.Drawing
7290
7291**示例:**
7292
7293```ts
7294import {drawing} from "@kit.ArkGraphics2D"
7295let matrix = new drawing.Matrix();
7296matrix.postScale(2, 3, 4, 5);
7297matrix.reset();
7298console.info("matrix= "+matrix.getAll().toString());
7299```
7300
7301### mapPoints<sup>12+</sup>
7302
7303mapPoints(src: Array\<common2D.Point>): Array\<common2D.Point>
7304
7305通过矩阵变换将源点数组映射到目标点数组。
7306
7307**系统能力**:SystemCapability.Graphics.Drawing
7308
7309**参数:**
7310
7311| 参数名          | 类型    | 必填 | 说明                                                        |
7312| --------------- | ------- | ---- | ----------------------------------------------------------- |
7313| src | Array\<[common2D.Point](js-apis-graphics-common2D.md#point)> | 是   | 源点数组。 |
7314
7315**返回值:**
7316
7317| 类型                  | 说明           |
7318| --------------------- | -------------- |
7319| Array\<[common2D.Point](js-apis-graphics-common2D.md#point)> | 源点数组经矩阵变换后的点数组。 |
7320
7321**错误码:**
7322
7323以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
7324
7325| 错误码ID | 错误信息 |
7326| ------- | --------------------------------------------|
7327| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. |
7328
7329**示例:**
7330
7331```ts
7332import {drawing,common2D} from "@kit.ArkGraphics2D"
7333let src: Array<common2D.Point> = [];
7334src.push({x: 15, y: 20});
7335src.push({x: 20, y: 15});
7336src.push({x: 30, y: 10});
7337let matrix = new drawing.Matrix();
7338let dst: Array<common2D.Point> = matrix.mapPoints(src);
7339console.info("matrix= src: "+JSON.stringify(src));
7340console.info("matrix= dst: "+JSON.stringify(dst));
7341```
7342
7343### getAll<sup>12+</sup>
7344
7345getAll(): Array\<number>
7346
7347获取矩阵所有元素值。
7348
7349**系统能力**:SystemCapability.Graphics.Drawing
7350
7351**返回值:**
7352
7353| 类型                  | 说明           |
7354| --------------------- | -------------- |
7355| Array\<number> | 存储矩阵元素值的浮点数组,长度为9。 |
7356
7357**示例:**
7358
7359```ts
7360import {drawing} from "@kit.ArkGraphics2D"
7361let matrix = new drawing.Matrix();
7362console.info("matrix "+ matrix.getAll());
7363```
7364
7365### mapRect<sup>12+</sup>
7366
7367mapRect(dst: common2D.Rect, src: common2D.Rect): boolean
7368
7369将目标矩形设置为源矩形通过矩阵变换后的图形的外接矩形。如下图所示,蓝色矩形为源矩形,假设黄色矩形为源矩形通过矩阵变换形成的图形,此时黄色矩形的边不与坐标轴平行,无法使用矩形对象表示,因此,将目标矩形设置为黄色矩形的外接矩形,即黑色矩形。
7370
7371![mapRect](./figures/zh-ch_matrix_mapRect.png)
7372
7373**系统能力**:SystemCapability.Graphics.Drawing
7374
7375**参数:**
7376
7377| 参数名          | 类型    | 必填 | 说明                                                        |
7378| --------------- | ------- | ---- | ----------------------------------------------------------- |
7379| dst | [common2D.Rect](js-apis-graphics-common2D.md#rect) | 是   | 目标矩形对象,用于存储源矩形经矩阵变换后的的图形的外接矩形。 |
7380| src |[common2D.Rect](js-apis-graphics-common2D.md#rect) | 是   | 源矩形对象。 |
7381
7382**返回值:**
7383
7384| 类型                  | 说明           |
7385| --------------------- | -------------- |
7386| boolean | 返回源矩形经过矩阵变换后的图形是否仍然是矩形的结果,true表示是矩形,false表示不是矩形。 |
7387
7388**错误码:**
7389
7390以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
7391
7392| 错误码ID | 错误信息 |
7393| ------- | --------------------------------------------|
7394| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. |
7395
7396**示例:**
7397
7398```ts
7399import {drawing,common2D} from "@kit.ArkGraphics2D"
7400let dst: common2D.Rect = { left: 100, top: 20, right: 130, bottom: 60 };
7401let src: common2D.Rect = { left: 100, top: 80, right: 130, bottom: 120 };
7402let matrix = new drawing.Matrix();
7403if (matrix.mapRect(dst, src)) {
7404    console.info("matrix= dst "+JSON.stringify(dst));
7405}
7406```
7407
7408### setRectToRect<sup>12+</sup>
7409
7410setRectToRect(src: common2D.Rect, dst: common2D.Rect, scaleToFit: ScaleToFit): boolean
7411
7412将当前矩阵设置为能使源矩形映射到目标矩形的变换矩阵。
7413
7414**系统能力**:SystemCapability.Graphics.Drawing
7415
7416**参数:**
7417
7418| 参数名          | 类型    | 必填 | 说明                                                        |
7419| --------------- | ------- | ---- | ----------------------------------------------------------- |
7420| src | [common2D.Rect](js-apis-graphics-common2D.md#rect) | 是   | 源矩形。 |
7421| dst | [common2D.Rect](js-apis-graphics-common2D.md#rect) | 是   | 目标矩形。 |
7422| scaleToFit | [ScaleToFit](#scaletofit12) | 是   | 源矩形到目标矩形的映射方式。 |
7423
7424**返回值:**
7425
7426| 类型                  | 说明           |
7427| --------------------- | -------------- |
7428| boolean | 返回矩阵是否可以表示矩形之间的映射,true表示可以,false表示不可以。特别地,如果源矩形的宽高任意一个小于等于0,则返回false,并将矩阵设置为单位矩阵;如果目标矩形的宽高任意一个小于等于0,则返回true,并将矩阵设置为除透视缩放系数为1外其余值皆为0的矩阵。 |
7429
7430**错误码:**
7431
7432以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
7433
7434| 错误码ID | 错误信息 |
7435| ------- | --------------------------------------------|
7436| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types;3.Parameter verification failed. |
7437
7438**示例:**
7439
7440```ts
7441import {drawing,common2D} from "@kit.ArkGraphics2D"
7442let src: common2D.Rect = { left: 100, top: 100, right: 300, bottom: 300 };
7443let dst: common2D.Rect = { left: 200, top: 200, right: 600, bottom: 600 };
7444let scaleToFit: drawing.ScaleToFit = drawing.ScaleToFit.FILL_SCALE_TO_FIT
7445let matrix = new drawing.Matrix();
7446if (matrix.setRectToRect(src, dst, scaleToFit)) {
7447    console.info("matrix"+matrix.getAll().toString());
7448}
7449```
7450
7451### setPolyToPoly<sup>12+</sup>
7452
7453setPolyToPoly(src: Array\<common2D.Point>, dst: Array\<common2D.Point>, count: number): boolean
7454
7455将当前矩阵设置为能使源点数组映射到目标点数组的变换矩阵。
7456
7457**系统能力**:SystemCapability.Graphics.Drawing
7458
7459**参数:**
7460
7461| 参数名          | 类型    | 必填 | 说明                                                        |
7462| --------------- | ------- | ---- | ----------------------------------------------------------- |
7463| src | Array\<[common2D.Point](js-apis-graphics-common2D.md#point)> | 是   | 源点数组,长度必须为count。 |
7464| dst | Array\<[common2D.Point](js-apis-graphics-common2D.md#point)> | 是   | 目标点数组,长度必须为count。 |
7465| count | number | 是   | 在src和dst点的数量,该参数为整数。 |
7466
7467**返回值:**
7468
7469| 类型                  | 说明           |
7470| --------------------- | -------------- |
7471| boolean | 返回设置矩阵是否成功的结果,true表示设置成功,false表示设置失败。 |
7472
7473**错误码:**
7474
7475以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
7476
7477| 错误码ID | 错误信息 |
7478| ------- | --------------------------------------------|
7479| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. |
7480
7481**示例:**
7482
7483```ts
7484import {drawing,common2D} from "@kit.ArkGraphics2D"
7485let srcPoints: Array<common2D.Point> = [ {x: 10, y: 20}, {x: 200, y: 150} ];
7486let dstPoints: Array<common2D.Point> = [{ x:0, y: 10 }, { x:300, y: 600 }];
7487let matrix = new drawing.Matrix();
7488if (matrix.setPolyToPoly(srcPoints, dstPoints, 2)) {
7489    console.info("matrix"+matrix.getAll().toString());
7490}
7491```
7492
7493## RoundRect<sup>12+</sup>
7494
7495圆角矩形对象。
7496
7497### constructor<sup>12+</sup>
7498
7499constructor(rect: common2D.Rect, xRadii: number, yRadii: number)
7500
7501构造一个圆角矩形对象,当且仅当xRadii和yRadii均大于0时,圆角生效,否则只会构造一个矩形。
7502
7503**系统能力:** SystemCapability.Graphics.Drawing
7504
7505**参数:**
7506
7507| 参数名         | 类型                                       | 必填   | 说明                  |
7508| ----------- | ---------------------------------------- | ---- | ------------------- |
7509| rect        | [common2D.Rect](js-apis-graphics-common2D.md#rect) | 是    | 需要创建的圆角矩形区域。      |
7510| xRadii        | number                  | 是    | X轴上的圆角半径,该参数为浮点数,小于等于0时无效。     |
7511| yRadii        | number                  | 是    | Y轴上的圆角半径,该参数为浮点数,小于等于0时无效。     |
7512
7513**错误码:**
7514
7515以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
7516
7517| 错误码ID | 错误信息 |
7518| ------- | --------------------------------------------|
7519| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. |
7520
7521**示例:**
7522
7523```ts
7524import { common2D, drawing } from '@kit.ArkGraphics2D';
7525
7526let rect: common2D.Rect = {left : 100, top : 100, right : 500, bottom : 300};
7527let roundRect = new drawing.RoundRect(rect, 50, 50);
7528```
7529### setCorner<sup>12+</sup>
7530
7531setCorner(pos: CornerPos, x: number, y: number): void
7532
7533用于设置圆角矩形中指定圆角位置的圆角半径。
7534
7535**系统能力:** SystemCapability.Graphics.Drawing
7536
7537**参数:**
7538
7539| 参数名   | 类型                                         | 必填 | 说明                            |
7540| -------- | -------------------------------------------- | ---- | ------------------------------- |
7541| pos | [CornerPos](#cornerpos12) | 是   | 圆角位置。                 |
7542| x     | number                 | 是   | x轴方向的圆角半径,该参数为浮点数。 |
7543| y     | number      | 是   | y轴方向的圆角半径,该参数为浮点数。 |
7544
7545**错误码:**
7546
7547以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
7548
7549| 错误码ID | 错误信息 |
7550| ------- | --------------------------------------------|
7551| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types;3.Parameter verification failed. |
7552
7553**示例:**
7554
7555```ts
7556import { drawing } from '@kit.ArkGraphics2D';
7557let roundRect : drawing.RoundRect = new drawing.RoundRect({left: 0, top: 0, right: 300, bottom: 300}, 50, 50);
7558roundRect.setCorner(drawing.CornerPos.TOP_LEFT_POS, 150, 150);
7559```
7560
7561### getCorner<sup>12+</sup>
7562
7563getCorner(pos: CornerPos): common2D.Point
7564
7565获取圆角矩形中指定圆角位置的圆角半径。
7566
7567**系统能力:** SystemCapability.Graphics.Drawing
7568
7569**参数:**
7570
7571| 参数名   | 类型                                         | 必填 | 说明                            |
7572| -------- | -------------------------------------------- | ---- | ------------------------------- |
7573| pos | [CornerPos](#cornerpos12) | 是   | 圆角位置。                 |
7574
7575**返回值:**
7576
7577| 类型                  | 说明           |
7578| --------------------- | -------------- |
7579| [common2D.Point](js-apis-graphics-common2D.md#point)  | 返回一个点,其横坐标表示圆角x轴方向上的半径,纵坐标表示y轴方向上的半径。 |
7580
7581**错误码:**
7582
7583以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
7584
7585| 错误码ID | 错误信息 |
7586| ------- | --------------------------------------------|
7587| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types;3.Parameter verification failed. |
7588
7589**示例:**
7590
7591```ts
7592import { drawing } from '@kit.ArkGraphics2D';
7593let roundRect : drawing.RoundRect = new drawing.RoundRect({left: 0, top: 0, right: 300, bottom: 300}, 50, 50);
7594let cornerRadius = roundRect.getCorner(drawing.CornerPos.BOTTOM_LEFT_POS);
7595console.info("getCorner---"+cornerRadius.x)
7596console.info("getCorner---"+cornerRadius.y)
7597```
7598
7599### offset<sup>12+</sup>
7600
7601offset(dx: number, dy: number): void
7602
7603将圆角矩形分别沿x轴方向和y轴方向平移dx,dy。
7604
7605**系统能力:** SystemCapability.Graphics.Drawing
7606
7607**参数:**
7608
7609| 参数名   | 类型                                         | 必填 | 说明                            |
7610| -------- | -------------------------------------------- | ---- | ------------------------------- |
7611| dx | number | 是   | 表示x轴方向上的偏移量,正数表示往x轴正方向平移,负数表示往x轴负方向平移,该参数为浮点数。                 |
7612| dy | number | 是   | 表示y轴方向上的偏移量,正数表示往y轴正方向平移,负数表示往y轴负方向平移,该参数为浮点数。                 |
7613
7614**错误码:**
7615
7616以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
7617
7618| 错误码ID | 错误信息 |
7619| ------- | --------------------------------------------|
7620| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. |
7621
7622**示例:**
7623
7624```ts
7625import { drawing } from '@kit.ArkGraphics2D';
7626let roundRect : drawing.RoundRect = new drawing.RoundRect({left: 0, top: 0, right: 300, bottom: 300}, 50, 50);
7627roundRect.offset(100, 100);
7628```
7629
7630## Region<sup>12+</sup>
7631
7632区域对象,用于描述所绘制图形的区域信息。
7633
7634### isPointContained<sup>12+</sup>
7635
7636isPointContained(x: number, y: number) : boolean
7637
7638用于判断测试点是否在区域内。
7639
7640**系统能力:** SystemCapability.Graphics.Drawing
7641
7642**参数:**
7643
7644| 参数名 | 类型   | 必填 | 说明                    |
7645| ------ | ------ | ---- | ----------------------- |
7646| x      | number | 是   | 测试点的x轴坐标。该参数必须为整数。当输入的数字带小数时,小数部分会被舍去。 |
7647| y      | number | 是   | 测试点的y轴坐标。该参数必须为整数。当输入的数字带小数时,小数部分会被舍去。 |
7648
7649**返回值:**
7650
7651| 类型    | 说明           |
7652| ------- | -------------- |
7653| boolean | 返回测试点是否在区域内的结果。true表示测试点在区域内,false表示测试点不在区域内。 |
7654
7655**错误码:**
7656
7657以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
7658
7659| 错误码ID | 错误信息 |
7660| ------- | --------------------------------------------|
7661| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. |
7662
7663**示例:**
7664
7665```ts
7666import { RenderNode } from '@kit.ArkUI';
7667class DrawingRenderNode extends RenderNode {
7668  draw(context : DrawContext) {
7669    const canvas = context.canvas;
7670    const pen = new drawing.Pen();
7671    pen.setColor({ alpha: 255, red: 255, green: 0, blue: 0 });
7672    pen.setStrokeWidth(10);
7673    canvas.attachPen(pen);
7674    let region = new drawing.Region();
7675    region.setRect(100, 100, 400, 400);
7676    let flag: boolean = false;
7677    flag = region.isPointContained(200,200);
7678    console.info("region isPointContained : " + flag);
7679    canvas.drawPoint(200,200);
7680    canvas.drawRegion(region);
7681    canvas.detachPen();
7682  }
7683}
7684```
7685
7686### isRegionContained<sup>12+</sup>
7687
7688isRegionContained(other: Region) : boolean
7689
7690用于判断其他区域是否在当前区域内。
7691
7692**系统能力:** SystemCapability.Graphics.Drawing
7693
7694**参数:**
7695
7696| 参数名 | 类型   | 必填 | 说明                    |
7697| ------ | ------ | ---- | ----------------------- |
7698| other      | [Region](#region12) | 是   | 区域对象。 |
7699
7700**返回值:**
7701
7702| 类型    | 说明           |
7703| ------- | -------------- |
7704| boolean | 返回其他区域是否在当前区域内的结果。true表示其他区域在当前区域内,false表示其他区域不在当前区域内。 |
7705
7706**错误码:**
7707
7708以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
7709
7710| 错误码ID | 错误信息 |
7711| ------- | --------------------------------------------|
7712| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. |
7713
7714**示例:**
7715
7716```ts
7717import { RenderNode } from '@kit.ArkUI';
7718class DrawingRenderNode extends RenderNode {
7719  draw(context : DrawContext) {
7720    const canvas = context.canvas;
7721    const pen = new drawing.Pen();
7722    pen.setColor({ alpha: 255, red: 255, green: 0, blue: 0 });
7723    pen.setStrokeWidth(10);
7724    canvas.attachPen(pen);
7725    let region = new drawing.Region();
7726    let other = new drawing.Region();
7727    region.setRect(100, 100, 400, 400);
7728    other.setRect(150, 150, 250 ,250);
7729    let flag: boolean = false;
7730    flag = region.isRegionContained(other);
7731    console.info("region isRegionContained : " + flag);
7732    canvas.drawRegion(region);
7733    canvas.drawRegion(other);
7734    canvas.detachPen();
7735  }
7736}
7737```
7738
7739### op<sup>12+</sup>
7740
7741op(region: Region, regionOp: RegionOp) : boolean
7742
7743用于将当前区域与指定区域进行指定运算操作,并将当前区域替换为运算结果。
7744
7745**系统能力:** SystemCapability.Graphics.Drawing
7746
7747**参数:**
7748
7749| 参数名 | 类型   | 必填 | 说明                    |
7750| ------ | ------ | ---- | ----------------------- |
7751| region      | [Region](#region12) | 是   | 区域对象。 |
7752| regionOp      | [RegionOp](#regionop12) | 是   | 区域合并操作类型。 |
7753
7754**返回值:**
7755
7756| 类型    | 说明           |
7757| ------- | -------------- |
7758| boolean | 返回区域运算结果是否成功替换当前区域。true表示区域运算结果替换当前区域成功,false表示区域运算结果替换当前区域失败。 |
7759
7760**错误码:**
7761
7762以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
7763
7764| 错误码ID | 错误信息 |
7765| ------- | --------------------------------------------|
7766| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. |
7767
7768**示例:**
7769
7770```ts
7771import { RenderNode } from '@kit.ArkUI';
7772class DrawingRenderNode extends RenderNode {
7773  draw(context : DrawContext) {
7774    const canvas = context.canvas;
7775    const pen = new drawing.Pen();
7776    pen.setColor({ alpha: 255, red: 255, green: 0, blue: 0 });
7777    pen.setStrokeWidth(10);
7778    canvas.attachPen(pen);
7779    let region = new drawing.Region();
7780    region.setRect(200, 200, 400, 400);
7781    let othregion = new drawing.Region();
7782    othregion.setRect(110, 110, 240, 240);
7783    let flag: boolean = false;
7784    flag = region.op(othregion,drawing.RegionOp.REPLACE);
7785    console.info("region op : " + flag);
7786    canvas.drawRegion(region);
7787    canvas.detachPen();
7788  }
7789}
7790```
7791
7792### quickReject<sup>12+</sup>
7793
7794quickReject(left: number, top: number, right: number, bottom: number) : boolean
7795
7796用于快速判断矩形和区域是否不相交,实际上比较的是矩形和区域的外接矩形是否不相交,因此会有误差。
7797
7798**系统能力:** SystemCapability.Graphics.Drawing
7799
7800**参数:**
7801
7802| 参数名 | 类型   | 必填 | 说明                    |
7803| ------ | ------ | ---- | ----------------------- |
7804| left   | number | 是   | 矩形区域的左侧位置。该参数必须为整数。当输入的数字带小数时,小数部分会被舍去。 |
7805| top    | number | 是   | 矩形区域的顶部位置。该参数必须为整数。当输入的数字带小数时,小数部分会被舍去。 |
7806| right  | number | 是   | 矩形区域的右侧位置。该参数必须为整数。当输入的数字带小数时,小数部分会被舍去。 |
7807| bottom | number | 是   | 矩形区域的底部位置。该参数必须为整数。当输入的数字带小数时,小数部分会被舍去。 |
7808
7809**返回值:**
7810
7811| 类型    | 说明           |
7812| ------- | -------------- |
7813| boolean | 返回矩形是否与区域不相交的结果。true表示矩形与区域不相交,false表示矩形与区域相交。 |
7814
7815**错误码:**
7816
7817以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
7818
7819| 错误码ID | 错误信息 |
7820| ------- | --------------------------------------------|
7821| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. |
7822
7823**示例:**
7824
7825```ts
7826import { RenderNode } from '@kit.ArkUI';
7827class DrawingRenderNode extends RenderNode {
7828  draw(context : DrawContext) {
7829    const canvas = context.canvas;
7830    const pen = new drawing.Pen();
7831    pen.setColor({ alpha: 255, red: 255, green: 0, blue: 0 });
7832    pen.setStrokeWidth(10);
7833    canvas.attachPen(pen);
7834    let region = new drawing.Region();
7835    region.setRect(100, 100, 400, 400);
7836    let flag: boolean = false;
7837    flag = region.quickReject(50, 50, 70, 70);
7838    console.info("region quickReject : " + flag);
7839    canvas.drawRegion(region);
7840    canvas.detachPen();
7841  }
7842}
7843```
7844
7845### setPath<sup>12+</sup>
7846
7847setPath(path: Path, clip: Region) : boolean
7848
7849设置一个与裁剪区域内路径的轮廓相匹配的区域。
7850
7851**系统能力:** SystemCapability.Graphics.Drawing
7852
7853**参数:**
7854
7855| 参数名 | 类型   | 必填 | 说明                    |
7856| ------ | ------ | ---- | ----------------------- |
7857| path      | [Path](#path) | 是   | 路径对象。 |
7858| clip      | [Region](#region12) | 是   | 区域对象。 |
7859
7860**返回值:**
7861
7862| 类型    | 说明           |
7863| ------- | -------------- |
7864| boolean | 返回是否成功设置一个与裁剪区域内路径的轮廓相匹配的区域。true表示设置成功,false表示设置失败。 |
7865
7866**错误码:**
7867
7868以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
7869
7870| 错误码ID | 错误信息 |
7871| ------- | --------------------------------------------|
7872| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. |
7873
7874**示例:**
7875
7876```ts
7877import { RenderNode } from '@kit.ArkUI';
7878class DrawingRenderNode extends RenderNode {
7879  draw(context : DrawContext) {
7880    const canvas = context.canvas;
7881    const pen = new drawing.Pen();
7882    pen.setColor({ alpha: 255, red: 255, green: 0, blue: 0 });
7883    pen.setStrokeWidth(10);
7884    canvas.attachPen(pen);
7885    let region = new drawing.Region();
7886    let path = new drawing.Path();
7887    region.setRect(100, 100, 400, 400);
7888    path.arcTo(50, 50, 300, 300, 0, 359);
7889    let flag: boolean = false;
7890    flag = region.setPath(path,region);
7891    console.info("region setPath : " + flag);
7892    canvas.drawRegion(region);
7893    canvas.detachPen();
7894  }
7895}
7896```
7897
7898### setRect<sup>12+</sup>
7899
7900setRect(left: number, top: number, right: number, bottom: number) : boolean
7901
7902设置一个矩形区域。
7903
7904**系统能力:** SystemCapability.Graphics.Drawing
7905
7906**参数:**
7907
7908| 参数名 | 类型   | 必填 | 说明                    |
7909| ------ | ------ | ---- | ----------------------- |
7910| left   | number | 是   | 矩形区域的左侧位置。该参数必须为整数。当输入的数字带小数时,小数部分会被舍去。 |
7911| top    | number | 是   | 矩形区域的顶部位置。该参数必须为整数。当输入的数字带小数时,小数部分会被舍去。 |
7912| right  | number | 是   | 矩形区域的右侧位置。该参数必须为整数。当输入的数字带小数时,小数部分会被舍去。 |
7913| bottom | number | 是   | 矩形区域的底部位置。该参数必须为整数。当输入的数字带小数时,小数部分会被舍去。 |
7914
7915**返回值:**
7916
7917| 类型    | 说明           |
7918| ------- | -------------- |
7919| boolean | 返回设置矩形区域是否成功的结果。true表示设置矩形区域成功,false表示设置矩形区域失败。 |
7920
7921**错误码:**
7922
7923以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
7924
7925| 错误码ID | 错误信息 |
7926| ------- | --------------------------------------------|
7927| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. |
7928
7929**示例:**
7930
7931```ts
7932import { RenderNode } from '@kit.ArkUI';
7933class DrawingRenderNode extends RenderNode {
7934  draw(context : DrawContext) {
7935    const canvas = context.canvas;
7936    const pen = new drawing.Pen();
7937    pen.setColor({ alpha: 255, red: 255, green: 0, blue: 0 });
7938    pen.setStrokeWidth(10);
7939    canvas.attachPen(pen);
7940    let region = new drawing.Region();
7941    let flag: boolean = false;
7942    flag = region.setRect(50, 50, 300, 300);
7943    console.info("region setRect : " + flag);
7944    canvas.drawRegion(region);
7945    canvas.detachPen();
7946  }
7947}
7948```
7949
7950## TileMode<sup>12+</sup>
7951
7952着色器效果平铺模式的枚举。
7953
7954**系统能力**:SystemCapability.Graphics.Drawing
7955
7956| 名称                   | 值   | 说明                           |
7957| ---------------------- | ---- | ------------------------------ |
7958| CLAMP     | 0    | 如果着色器效果超出其原始边界,剩余区域使用着色器的边缘颜色填充。 |
7959| REPEAT    | 1    | 在水平和垂直方向上重复着色器效果。 |
7960| MIRROR    | 2    | 在水平和垂直方向上重复着色器效果,交替镜像图像,以便相邻图像始终接合。 |
7961| DECAL     | 3    | 仅在其原始边界内渲染着色器效果。|
7962
7963## ShaderEffect<sup>12+</sup>
7964
7965着色器。画刷和画笔设置着色器后,会使用着色器效果而不是颜色属性去绘制,但此时画笔和画刷的透明度属性仍然生效。
7966
7967### createColorShader<sup>12+</sup>
7968
7969static createColorShader(color: number): ShaderEffect
7970
7971创建具有单一颜色的着色器。
7972
7973**系统能力:** SystemCapability.Graphics.Drawing
7974
7975**参数:**
7976
7977| 参数名 | 类型                                               | 必填 | 说明           |
7978| ------ | -------------------------------------------------- | ---- | -------------- |
7979| color   | number | 是   | 表示着色器的ARGB格式颜色,该参数为32位无符号整数。 |
7980
7981**返回值:**
7982
7983| 类型    | 说明                       |
7984| ------- | ------------------------- |
7985| [ShaderEffect](#shadereffect12) | 返回具有单一颜色的着色器对象。 |
7986
7987**错误码:**
7988
7989以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
7990
7991| 错误码ID | 错误信息 |
7992| ------- | --------------------------------------------|
7993| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. |
7994
7995**示例:**
7996
7997```ts
7998import { drawing } from '@kit.ArkGraphics2D';
7999
8000let shaderEffect = drawing.ShaderEffect.createColorShader(0xFFFF0000);
8001```
8002
8003### createLinearGradient<sup>12+</sup>
8004
8005static createLinearGradient(startPt: common2D.Point, endPt: common2D.Point, colors: Array
8006\<number>, mode: TileMode, pos?: Array\<number> | null, matrix?: Matrix | null): ShaderEffect
8007
8008创建着色器,在两个指定点之间生成线性渐变。
8009
8010**系统能力:** SystemCapability.Graphics.Drawing
8011
8012**参数:**
8013
8014| 参数名 | 类型                                               | 必填 | 说明           |
8015| ------ | -------------------------------------------------- | ---- | -------------- |
8016| startPt  | [common2D.Point](js-apis-graphics-common2D.md#point)  | 是   | 表示渐变的起点。 |
8017| endPt   | [common2D.Point](js-apis-graphics-common2D.md#point)  | 是   | 表示渐变的终点。 |
8018| colors | Array\<number> | 是   | 表示在两个点之间分布的颜色数组,数组中的值为32位(ARGB)无符号整数。 |
8019| mode  | [TileMode](#tilemode12) | 是   | 着色器效果平铺模式。 |
8020| pos | Array\<number> \|null| 否   | 表示每种对应颜色在颜色数组中的相对位置。数组长度需和colors保持一致,数组的首个元素应当是0.0,末尾元素应当是1.0,中间的元素应当在0与1之间并且逐下标递增,表示colors中每个对应颜色的相对位置。默认为null,表示颜色均匀分布在起点和终点之间。 |
8021| matrix | [Matrix](#matrix12) \| null | 否   | 矩阵对象,用于对着色器做矩阵变换。默认为null,表示单位矩阵。 |
8022
8023![LinearGradient](./figures/zh-ch_image_createLinearGradient.png)
8024
8025如上图是设置颜色数组为红绿蓝,位置数组为0.0,0.75,1.0后的显示效果。三角下标即为对应的颜色所在起始点和终点之间的相对位置,颜色与颜色之间使用渐变填充。
8026
8027**返回值:**
8028
8029| 类型    | 说明                       |
8030| ------- | ------------------------- |
8031| [ShaderEffect](#shadereffect12) | 返回创建的着色器对象。 |
8032
8033**错误码:**
8034
8035以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
8036
8037| 错误码ID | 错误信息 |
8038| ------- | --------------------------------------------|
8039| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types; 3. Parameter verification failed. |
8040
8041**示例:**
8042
8043```ts
8044import { common2D,drawing } from '@kit.ArkGraphics2D';
8045
8046let startPt: common2D.Point = { x: 100, y: 100 };
8047let endPt: common2D.Point = { x: 300, y: 300 };
8048let shaderEffect =drawing.ShaderEffect.createLinearGradient(startPt, endPt,[0xFF00FF00, 0xFFFF0000], drawing.TileMode.REPEAT);
8049```
8050
8051### createRadialGradient<sup>12+</sup>
8052
8053static createRadialGradient(centerPt: common2D.Point, radius: number, colors: Array\<number>, mode: TileMode, pos?: Array\<number> | null, matrix?: Matrix | null): ShaderEffect;
8054
8055创建着色器,使用给定圆心和半径生成径向渐变。从圆心到圆边界,颜色由内到外生成圆形渐变(从圆心向外一圈圈扩散)称为径向渐变。
8056
8057**系统能力:** SystemCapability.Graphics.Drawing
8058
8059**参数:**
8060
8061| 参数名 | 类型                                               | 必填 | 说明           |
8062| ------ | -------------------------------------------------- | ---- | -------------- |
8063| centerPt  | [common2D.Point](js-apis-graphics-common2D.md#point)  | 是   | 表示渐变的圆心。 |
8064| radius   | number  | 是   | 表示渐变的半径,小于等于0时无效,该参数为浮点数。 |
8065| colors | Array\<number> | 是   | 表示在圆心和圆边界之间分布的颜色数组,数组中的值为32位(ARGB)无符号整数。 |
8066| mode  | [TileMode](#tilemode12) | 是   | 着色器效果平铺模式。 |
8067| pos | Array\<number> \| null | 否   | 表示每种对应颜色在颜色数组中的相对位置。数组长度需和colors保持一致,数组的首个元素应当是0.0,末尾元素应当是1.0,中间的元素应当在0与1之间并且逐下标递增,表示colors中每个对应颜色的相对位置。默认为null,表示颜色均匀分布在圆心和圆边界之间。 |
8068| matrix | [Matrix](#matrix12) \| null | 否   | 矩阵对象,用于对着色器做矩阵变换。默认为null,表示单位矩阵。 |
8069
8070![RadialGradient](./figures/zh-ch_image_createRadialGradient.png)
8071
8072如上图是设置颜色数组为红绿蓝,位置数组为0.0,0.75,1.0后的显示效果。三角下标即为对应的颜色所在圆心和圆边界之间的相对位置,颜色与颜色之间使用渐变填充。
8073
8074**返回值:**
8075
8076| 类型    | 说明                       |
8077| ------- | ------------------------- |
8078| [ShaderEffect](#shadereffect12) | 返回创建的着色器对象。 |
8079
8080**错误码:**
8081
8082以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
8083
8084| 错误码ID | 错误信息 |
8085| ------- | --------------------------------------------|
8086| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types; 3. Parameter verification failed. |
8087
8088**示例:**
8089
8090```ts
8091import { common2D,drawing } from '@kit.ArkGraphics2D';
8092
8093let centerPt: common2D.Point = { x: 100, y: 100 };
8094let shaderEffect = drawing.ShaderEffect.createRadialGradient(centerPt, 100, [0xFF00FF00, 0xFFFF0000], drawing.TileMode.REPEAT);
8095```
8096
8097### createSweepGradient<sup>12+</sup>
8098
8099static createSweepGradient(centerPt: common2D.Point, colors: Array\<number>,
8100  mode: TileMode, startAngle: number, endAngle: number, pos?: Array\<number> | null,
8101  matrix?: Matrix | null): ShaderEffect;
8102
8103创建着色器,该着色器在给定中心的情况下生成扫描渐变。以给定中心为圆心,颜色在顺时针或逆时针方向上生成渐变称为扫描渐变。
8104
8105**系统能力:** SystemCapability.Graphics.Drawing
8106
8107**参数:**
8108
8109| 参数名 | 类型                                               | 必填 | 说明           |
8110| ------ | -------------------------------------------------- | ---- | -------------- |
8111| centerPt  | [common2D.Point](js-apis-graphics-common2D.md#point)  | 是   | 表示渐变的圆心。 |
8112| colors | Array\<number> | 是   | 表示在起始角度和结束角度之间分布的颜色数组,数组中的值为32位(ARGB)无符号整数。 |
8113| mode  | [TileMode](#tilemode12) | 是   | 着色器效果平铺模式。 |
8114| startAngle | number | 是   | 表示扇形渐变的起始角度,单位为度。0度时为x轴正方向,正数往顺时针方向偏移,负数往逆时针方向偏移。该参数为浮点数。 |
8115| endAngle | number | 是   | 表示扇形渐变的结束角度,单位为度。0度时为x轴正方向,正数往顺时针方向偏移,负数往逆时针方向偏移。小于起始角度时无效。该参数为浮点数。 |
8116| pos | Array\<number> \| null | 否   | 表示每种对应颜色在颜色数组中的相对位置。数组长度需和colors保持一致,数组的首个元素应当是0.0,末尾元素应当是1.0,中间的元素应当在0与1之间并且逐下标递增,表示colors中每个对应颜色的相对位置。默认为null,表示颜色均匀分布在起始角度和结束角度之间。 |
8117| matrix | [Matrix](#matrix12) \| null | 否   |矩阵对象,用于对着色器做矩阵变换。默认为null,表示单位矩阵。 |
8118
8119![SweepGradient](./figures/zh-ch_image_createSweepGradient.png)
8120
8121如上图是设置颜色数组为红绿蓝,位置数组为0.0,0.75,1.0,起始角度设置为0度,结束角度设置为180度后的显示效果。0.0对应0度的位置,0.75对应135度的位置,1.0对应180度的位置,颜色与颜色之间使用渐变填充。
8122
8123**返回值:**
8124
8125| 类型    | 说明                       |
8126| ------- | ------------------------- |
8127| [ShaderEffect](#shadereffect12) | 返回创建的着色器对象。 |
8128
8129**错误码:**
8130
8131以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
8132
8133| 错误码ID | 错误信息 |
8134| ------- | --------------------------------------------|
8135| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types; 3. Parameter verification failed. |
8136
8137**示例:**
8138
8139```ts
8140import { common2D,drawing } from '@kit.ArkGraphics2D';
8141
8142let centerPt: common2D.Point = { x: 100, y: 100 };
8143let shaderEffect = drawing.ShaderEffect.createSweepGradient(centerPt, [0xFF00FF00, 0xFFFF0000], drawing.TileMode.REPEAT, 100, 200);
8144```
8145
8146### createConicalGradient<sup>12+</sup>
8147
8148static createConicalGradient(startPt: common2D.Point, startRadius: number, endPt: common2D.Point, endRadius: number, colors: Array\<number>, mode: TileMode, 
8149pos?: Array\<number> | null, matrix?: Matrix | null): ShaderEffect;
8150
8151创建着色器,在给定两个圆之间生成径向渐变。
8152
8153**系统能力:** SystemCapability.Graphics.Drawing
8154
8155**参数:**
8156
8157| 参数名 | 类型                                               | 必填 | 说明           |
8158| ------ | -------------------------------------------------- | ---- | -------------- |
8159| startPt  | [common2D.Point](js-apis-graphics-common2D.md#point)  | 是   |表示渐变的起始圆的圆心。 |
8160| startRadius | number | 是   | 表示渐变的起始圆的半径,小于0时无效。该参数为浮点数。 |
8161| endPt  | [common2D.Point](js-apis-graphics-common2D.md#point)  | 是   | 表示渐变的结束圆的圆心。 |
8162| endRadius | number | 是   | 表示渐变的结束圆的半径,小于0时无效。该参数为浮点数。 |
8163| colors | Array\<number> | 是   | 表示在起始圆和结束圆之间分布的颜色数组,数组中的值为32位(ARGB)无符号整数。 |
8164| mode  | [TileMode](#tilemode12) | 是   | 着色器效果平铺模式。 |
8165| pos | Array\<number> \| null | 否   | 表示每种对应颜色在颜色数组中的相对位置。数组长度需和colors保持一致,数组的首个元素应当是0.0,末尾元素应当是1.0,中间的元素应当在0与1之间并且逐下标递增,表示colors中每个对应颜色的相对位置。默认为null,表示颜色均匀分布在起始圆和结束圆之间。|
8166| matrix | [Matrix](#matrix12) \| null | 否   | 矩阵对象,用于对着色器做矩阵变换。默认为null,表示单位矩阵。 |
8167
8168![ConicalGradient](./figures/zh-ch_image_createConicalGradient.png)
8169
8170如上图是设置颜色数组为红绿蓝,位置数组为0.0,0.5,1.0的绘制结果。左侧为起始圆不在结束圆内的绘制结果,右侧为起始圆在结束圆内的绘制结果。
8171
8172**返回值:**
8173
8174| 类型    | 说明                       |
8175| ------- | ------------------------- |
8176| [ShaderEffect](#shadereffect12) | 返回创建的着色器对象。 |
8177
8178**错误码:**
8179
8180以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
8181
8182| 错误码ID | 错误信息 |
8183| ------- | --------------------------------------------|
8184| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types; 3. Parameter verification failed. |
8185
8186**示例:**
8187
8188```ts
8189import { common2D,drawing } from '@kit.ArkGraphics2D';
8190
8191let startPt: common2D.Point = { x: 100, y: 100 };
8192let endPt: common2D.Point = {x: 200, y: 200};
8193let shaderEffect = drawing.ShaderEffect.createConicalGradient(startPt, 100, endPt, 50, [0xFF00FF00, 0xFFFF0000], drawing.TileMode.REPEAT);
8194```
8195
8196## RegionOp<sup>12+</sup>
8197
8198两个区域合并时的操作的枚举。
8199
8200**系统能力**:SystemCapability.Graphics.Drawing
8201
8202| 名称                   | 值   | 说明                           | 示意图   |
8203| --------------------- | ---- | ------------------------------ | -------- |
8204| DIFFERENCE         | 0    | 两个区域相减操作。  | ![CLEAR](./figures/zh-ch_image_RegionOp_Difference.png) |
8205| INTERSECT          | 1    | 两个区域相交操作。 | ![INTERSECT](./figures/zh-ch_image_RegionOp_Intersect.png) |
8206| UNION              | 2    | 两个区域联合操作。   | ![UNION](./figures/zh-ch_image_RegionOpe_Union.png) |
8207| XOR                | 3    | 两个区域异或操作。   | ![XOR](./figures/zh-ch_image_RegionOp_Xor.png) |
8208| REVERSE_DIFFERENCE | 4    | 两个区域反向相减操作。   | ![REVERSE_DIFFERENCE](./figures/zh-ch_image_RegionOp_Reverse_difference.png) |
8209| REPLACE            | 5    | 两个区域替换操作。   | ![REPLACE](./figures/zh-ch_image_RegionOp_Replace.png) |
8210
8211> **说明:**
8212>
8213> 示意图展示的是以一个红色区域为基础,使用不同枚举值与另一个蓝色区域合并后获得的结果,其中绿色区域为最终得到的区域。
8214
8215## CornerPos<sup>12+</sup>
8216
8217圆角位置枚举。
8218
8219**系统能力**:SystemCapability.Graphics.Drawing
8220
8221| 名称                   | 值   | 说明                           |
8222| --------------------- | ---- | ------------------------------ | 
8223| TOP_LEFT_POS          | 0    | 左上角圆角位置。  |
8224| TOP_RIGHT_POS         | 1    | 右上角圆角位置。 |
8225| BOTTOM_RIGHT_POS      | 2    | 右下角圆角位置。   |
8226| BOTTOM_LEFT_POS       | 3    | 左下角圆角位置。   |