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### getLocalClipBounds<sup>12+</sup>
1540
1541getLocalClipBounds(): common2D.Rect
1542
1543获取画布裁剪区域的边界。
1544
1545**系统能力**:SystemCapability.Graphics.Drawing
1546
1547**返回值:**
1548
1549| 类型                                       | 说明       |
1550| ---------------------------------------- | -------- |
1551| [common2D.Rect](js-apis-graphics-common2D.md#rect) | 返回画布裁剪区域的矩形边界。 |
1552
1553**示例:**
1554
1555```ts
1556import { RenderNode } from '@kit.ArkUI';
1557import { common2D, drawing } from '@kit.ArkGraphics2D';
1558class DrawingRenderNode extends RenderNode {
1559  draw(context : DrawContext) {
1560    const canvas = context.canvas;
1561    let clipRect: common2D.Rect = {
1562      left : 150, top : 150, right : 300, bottom : 400
1563    };
1564    canvas.clipRect(clipRect,drawing.ClipOp.DIFFERENCE, true);
1565    console.info("test rect.left: " + clipRect.left);
1566    console.info("test rect.top: " + clipRect.top);
1567    console.info("test rect.right: " + clipRect.right);
1568    console.info("test rect.bottom: " + clipRect.bottom);
1569    canvas.getLocalClipBounds();
1570  }
1571}
1572```
1573
1574### getTotalMatrix<sup>12+</sup>
1575
1576getTotalMatrix(): Matrix
1577
1578获取画布矩阵。
1579
1580**系统能力**:SystemCapability.Graphics.Drawing
1581
1582**返回值:**
1583
1584| 类型                | 说明       |
1585| ----------------- | -------- |
1586| [Matrix](#matrix12) |返回画布矩阵。 |
1587
1588**示例:**
1589
1590```ts
1591import { RenderNode } from '@kit.ArkUI';
1592import { drawing } from '@kit.ArkGraphics2D';
1593class DrawingRenderNode extends RenderNode {
1594  draw(context : DrawContext) {
1595    const canvas = context.canvas;
1596    let matrix = new drawing.Matrix();
1597    matrix.setMatrix([5, 0, 0, 0, 1, 1, 0, 0, 1]);
1598    canvas.setMatrix(matrix);
1599    let matrixResult =canvas.getTotalMatrix();
1600  }
1601}
1602```
1603
1604### drawCircle
1605
1606drawCircle(x: number, y: number, radius: number): void
1607
1608用于画一个圆形。如果半径小于等于零,则不绘制任何内容。默认使用黑色填充。
1609
1610**系统能力**:SystemCapability.Graphics.Drawing
1611
1612**参数:**
1613
1614| 参数名 | 类型   | 必填 | 说明                |
1615| ------ | ------ | ---- | ------------------- |
1616| x      | number | 是   | 圆心的x坐标,该参数为浮点数。 |
1617| y      | number | 是   | 圆心的y坐标,该参数为浮点数。 |
1618| radius | number | 是   | 圆的半径,大于0的浮点数。 |
1619
1620**错误码:**
1621
1622以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
1623
1624| 错误码ID | 错误信息 |
1625| ------- | --------------------------------------------|
1626| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types;3.Parameter verification failed. |
1627
1628**示例:**
1629
1630```ts
1631import { RenderNode } from '@kit.ArkUI';
1632import { drawing } from '@kit.ArkGraphics2D';
1633class DrawingRenderNode extends RenderNode {
1634  draw(context : DrawContext) {
1635    const canvas = context.canvas;
1636    const pen = new drawing.Pen();
1637    pen.setStrokeWidth(5);
1638    pen.setColor({alpha: 255, red: 255, green: 0, blue: 0});
1639    canvas.attachPen(pen);
1640    canvas.drawCircle(10, 10, 2);
1641    canvas.detachPen();
1642  }
1643}
1644```
1645
1646### drawImage
1647
1648drawImage(pixelmap: image.PixelMap, left: number, top: number, samplingOptions?: SamplingOptions): void
1649
1650用于画一张图片,图片的左上角坐标为(left, top)。
1651
1652**系统能力**:SystemCapability.Graphics.Drawing
1653
1654**参数:**
1655
1656| 参数名   | 类型                                         | 必填 | 说明                            |
1657| -------- | -------------------------------------------- | ---- | ------------------------------- |
1658| pixelmap | [image.PixelMap](../apis-image-kit/js-apis-image.md#pixelmap7) | 是   | 图片的PixelMap                  |
1659| left     | number                                       | 是   | 图片位置的左上角x轴坐标,该参数为浮点数。 |
1660| top      | number                                       | 是   | 图片位置的左上角y轴坐标,该参数为浮点数。 |
1661| samplingOptions<sup>12+</sup>  | [SamplingOptions](#samplingoptions12)  | 否  | 采样选项对象,默认为不使用任何参数构造的原始采样选项对象。 |
1662
1663**错误码:**
1664
1665以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
1666
1667| 错误码ID | 错误信息 |
1668| ------- | --------------------------------------------|
1669| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. |
1670
1671**示例:**
1672
1673```ts
1674import { RenderNode } from '@kit.ArkUI';
1675import { image } from '@kit.ImageKit';
1676import { drawing } from '@kit.ArkGraphics2D';
1677class DrawingRenderNode extends RenderNode {
1678  pixelMap: image.PixelMap | null = null;
1679
1680  async draw(context : DrawContext) {
1681    const canvas = context.canvas;
1682    let options = new drawing.SamplingOptions(drawing.FilterMode.FILTER_MODE_NEAREST);
1683    if (this.pixelMap != null) {
1684      canvas.drawImage(this.pixelMap, 0, 0, options);
1685    }
1686  }
1687}
1688```
1689
1690### drawImageRect<sup>12+</sup>
1691
1692drawImageRect(pixelmap: image.PixelMap, dstRect: common2D.Rect, samplingOptions?: SamplingOptions): void
1693
1694将图片绘制到画布的指定区域上。
1695
1696**系统能力**:SystemCapability.Graphics.Drawing
1697
1698**参数:**
1699
1700| 参数名   | 类型                                         | 必填 | 说明                            |
1701| -------- | -------------------------------------------- | ---- | ------------------------------- |
1702| pixelmap | [image.PixelMap](../apis-image-kit/js-apis-image.md#pixelmap7) | 是   | 图片的PixelMap。                 |
1703| dstRect     | [common2D.Rect](js-apis-graphics-common2D.md#rect)                               | 是   | 矩形对象,用于指定画布上图片的绘制区域。 |
1704| samplingOptions     | [SamplingOptions](#samplingoptions12)                           | 否   | 采样选项对象,默认为不使用任何参数构造的原始采样选项对象。 |
1705
1706**错误码:**
1707
1708以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
1709
1710| 错误码ID | 错误信息 |
1711| ------- | --------------------------------------------|
1712| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. |
1713
1714**示例:**
1715
1716```ts
1717import { RenderNode } from '@kit.ArkUI';
1718import { image } from '@kit.ImageKit';
1719import { common2D, drawing } from '@kit.ArkGraphics2D';
1720class DrawingRenderNode extends RenderNode {
1721pixelMap: image.PixelMap | null = null;
1722  draw(context : DrawContext) {
1723    const canvas = context.canvas;
1724    let pen = new drawing.Pen();
1725    canvas.attachPen(pen);
1726    let rect: common2D.Rect = { left: 0, top: 0, right: 200, bottom: 200 };
1727    canvas.drawImageRect(this.pixelMap, rect);
1728    canvas.detachPen();
1729  }
1730}
1731```
1732
1733### drawImageRectWithSrc<sup>12+</sup>
1734
1735drawImageRectWithSrc(pixelmap: image.PixelMap, srcRect: common2D.Rect, dstRect: common2D.Rect, samplingOptions?: SamplingOptions, constraint?: SrcRectConstraint): void
1736
1737将图片的指定区域绘制到画布的指定区域。
1738
1739**系统能力**:SystemCapability.Graphics.Drawing
1740
1741**参数:**
1742
1743| 参数名   | 类型                                         | 必填 | 说明                            |
1744| -------- | -------------------------------------------- | ---- | ------------------------------- |
1745| pixelmap | [image.PixelMap](../apis-image-kit/js-apis-image.md#pixelmap7) | 是   | 图片的PixelMap。                 |
1746| srcRect     | [common2D.Rect](js-apis-graphics-common2D.md#rect)                               | 是   | 矩形对象,用于指定图片的待绘制区域。 |
1747| dstRect     | [common2D.Rect](js-apis-graphics-common2D.md#rect)                               | 是   | 矩形对象,用于指定画布上图片的绘制区域。 |
1748| samplingOptions     | [SamplingOptions](#samplingoptions12)                           | 否   | 采样选项对象,默认为不使用任何参数构造的原始采样选项对象。 |
1749| constraint     | [SrcRectConstraint](#srcrectconstraint12)                        | 否   | 源矩形区域约束类型,默认为STRICT。 |
1750
1751**错误码:**
1752
1753以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
1754
1755| 错误码ID | 错误信息 |
1756| ------- | --------------------------------------------|
1757| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. |
1758
1759**示例:**
1760
1761```ts
1762import { RenderNode } from '@kit.ArkUI';
1763import { image } from '@kit.ImageKit';
1764import { common2D, drawing } from '@kit.ArkGraphics2D';
1765class DrawingRenderNode extends RenderNode {
1766pixelMap: image.PixelMap | null = null;
1767  draw(context : DrawContext) {
1768    const canvas = context.canvas;
1769    let pen = new drawing.Pen();
1770    canvas.attachPen(pen);
1771    let srcRect: common2D.Rect = { left: 0, top: 0, right: 100, bottom: 100 };
1772    let dstRect: common2D.Rect = { left: 100, top: 100, right: 200, bottom: 200 };
1773    canvas.drawImageRectWithSrc(this.pixelMap, srcRect, dstRect);
1774    canvas.detachPen();
1775  }
1776}
1777```
1778
1779### drawColor
1780
1781drawColor(color: common2D.Color, blendMode?: BlendMode): void
1782
1783绘制背景颜色。
1784
1785**系统能力**:SystemCapability.Graphics.Drawing
1786
1787**参数:**
1788
1789| 参数名    | 类型                                                 | 必填 | 说明                             |
1790| --------- | ---------------------------------------------------- | ---- | -------------------------------- |
1791| color     | [common2D.Color](js-apis-graphics-common2D.md#color) | 是   | ARGB格式的颜色,每个颜色通道是0到255之间的整数。                   |
1792| blendMode | [BlendMode](#blendmode)                              | 否   | 颜色混合模式,默认模式为SRC_OVER |
1793
1794**错误码:**
1795
1796以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
1797
1798| 错误码ID | 错误信息 |
1799| ------- | --------------------------------------------|
1800| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types;3.Parameter verification failed. |
1801
1802**示例:**
1803
1804```ts
1805import { RenderNode } from '@kit.ArkUI';
1806import { common2D, drawing } from '@kit.ArkGraphics2D';
1807class DrawingRenderNode extends RenderNode {
1808  draw(context : DrawContext) {
1809    const canvas = context.canvas;
1810    let color: common2D.Color = {
1811      alpha : 255,
1812      red: 0,
1813      green: 10,
1814      blue: 10
1815    }
1816    canvas.drawColor(color, drawing.BlendMode.CLEAR);
1817  }
1818}
1819```
1820
1821### drawColor<sup>12+</sup>
1822
1823drawColor(alpha: number, red: number, green: number, blue: number, blendMode?: BlendMode): void
1824
1825绘制背景颜色。性能优于[drawColor](#drawcolor)接口,推荐使用本接口。
1826
1827**系统能力**:SystemCapability.Graphics.Drawing
1828
1829**参数:**
1830
1831| 参数名     | 类型                    | 必填 | 说明                                               |
1832| --------- | ----------------------- | ---- | ------------------------------------------------- |
1833| alpha     | number                  | 是   | ARGB格式颜色的透明度通道值,该参数是0到255之间的整数,传入范围内的浮点数会向下取整。 |
1834| red       | number                  | 是   | ARGB格式颜色的红色通道值,该参数是0到255之间的整数,传入范围内的浮点数会向下取整。   |
1835| green     | number                  | 是   | ARGB格式颜色的绿色通道值,该参数是0到255之间的整数,传入范围内的浮点数会向下取整。   |
1836| blue      | number                  | 是   | ARGB格式颜色的蓝色通道值,该参数是0到255之间的整数,传入范围内的浮点数会向下取整。   |
1837| blendMode | [BlendMode](#blendmode) | 否   | 颜色混合模式,默认模式为SRC_OVER。                   |
1838
1839**错误码:**
1840
1841以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
1842
1843| 错误码ID | 错误信息 |
1844| ------- | --------------------------------------------|
1845| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types;3.Parameter verification failed. |
1846
1847**示例:**
1848
1849```ts
1850import { RenderNode } from '@kit.ArkUI';
1851import { drawing } from '@kit.ArkGraphics2D';
1852class DrawingRenderNode extends RenderNode {
1853  draw(context : DrawContext) {
1854    const canvas = context.canvas;
1855    canvas.drawColor(255, 0, 10, 10, drawing.BlendMode.CLEAR);
1856  }
1857}
1858```
1859
1860### drawPixelMapMesh<sup>12+</sup>
1861
1862drawPixelMapMesh(pixelmap: image.PixelMap, meshWidth: number, meshHeight: number, vertices: Array\<number>, vertOffset: number, colors: Array\<number>, colorOffset: number): void
1863
1864在网格上绘制像素图,网格均匀分布在像素图上。
1865
1866**系统能力**:SystemCapability.Graphics.Drawing
1867
1868**参数:**
1869
1870| 参数名      | 类型            | 必填 | 说明                            |
1871| ----------- | -------------  | ---- | ------------------------------- |
1872| pixelmap    | [image.PixelMap](../apis-image-kit/js-apis-image.md#pixelmap7) | 是   | 用于绘制网格的像素图。 |
1873| meshWidth   | number         | 是   | 网格中的列数,大于0的整数。 |
1874| meshHeight  | number         | 是   | 网格中的行数,大于0的整数。 |
1875| vertices    | Array\<number> | 是   | 顶点数组,指定网格的绘制位置,浮点数组,大小必须为((meshWidth+1) * (meshHeight+1) + vertOffset) * 2。 |
1876| vertOffset  | number         | 是   | 绘图前要跳过的vert元素数,大于等于0的整数。 |
1877| colors      | Array\<number> | 是   | 颜色数组,在每个顶点指定一种颜色,整数数组,可为null,大小必须为(meshWidth+1) * (meshHeight+1) + colorOffset。 |
1878| colorOffset | number         | 是   | 绘制前要跳过的颜色元素数,大于等于0的整数。 |
1879
1880**错误码:**
1881
1882以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
1883
1884| 错误码ID | 错误信息 |
1885| ------- | --------------------------------------------|
1886| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. |
1887
1888**示例:**
1889
1890```ts
1891import { RenderNode } from '@kit.ArkUI';
1892import { image } from '@kit.ImageKit';
1893import { drawing } from '@kit.ArkGraphics2D';
1894class DrawingRenderNode extends RenderNode {
1895  pixelMap: image.PixelMap | null = null;
1896
1897  async draw(context : DrawContext) {
1898    const canvas = context.canvas;
1899    if (this.pixelMap != null) {
1900      const brush = new drawing.Brush(); // 只支持brush,使用pen没有绘制效果。
1901      canvas.attachBrush(brush);
1902      let verts : Array<number> = [0, 0, 50, 0, 410, 0, 0, 180, 50, 180, 410, 180, 0, 360, 50, 360, 410, 360]; // 18
1903      canvas.drawPixelMapMesh(this.pixelMap, 2, 2, verts, 0, null, 0);
1904      canvas.detachBrush();
1905    }
1906  }
1907}
1908```
1909
1910### clear<sup>12+</sup>
1911
1912clear(color: common2D.Color): void
1913
1914使用指定颜色填充画布上的裁剪区域。
1915
1916**系统能力**:SystemCapability.Graphics.Drawing
1917
1918**参数:**
1919
1920| 参数名    | 类型                                                 | 必填 | 说明                             |
1921| --------- | ---------------------------------------------------- | ---- | -------------------------------- |
1922| color     | [common2D.Color](js-apis-graphics-common2D.md#color) | 是   | ARGB格式的颜色,每个颜色通道是0到255之间的整数。      |
1923
1924**错误码:**
1925
1926以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
1927
1928| 错误码ID | 错误信息 |
1929| ------- | --------------------------------------------|
1930| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. |
1931
1932**示例:**
1933
1934```ts
1935import { RenderNode } from '@kit.ArkUI';
1936import { common2D, drawing } from '@kit.ArkGraphics2D';
1937class DrawingRenderNode extends RenderNode {
1938  draw(context : DrawContext) {
1939    const canvas = context.canvas;
1940    let color: common2D.Color = {alpha: 255, red: 255, green: 0, blue: 0};
1941    canvas.clear(color);
1942  }
1943}
1944```
1945
1946### getWidth<sup>12+</sup>
1947
1948getWidth(): number
1949
1950获取画布的宽度。
1951
1952**系统能力**:SystemCapability.Graphics.Drawing
1953
1954**返回值:**
1955
1956| 类型   | 必填 | 说明           |
1957| ------ | ---- | -------------- |
1958| number | 是   | 返回画布的宽度,该参数为浮点数。 |
1959
1960**示例:**
1961
1962```ts
1963import { RenderNode } from '@kit.ArkUI';
1964import { drawing } from '@kit.ArkGraphics2D';
1965class DrawingRenderNode extends RenderNode {
1966  draw(context : DrawContext) {
1967    const canvas = context.canvas;
1968    let width = canvas.getWidth();
1969    console.info('get canvas width:' + width);
1970  }
1971}
1972```
1973
1974### getHeight<sup>12+</sup>
1975
1976getHeight(): number
1977
1978获取画布的高度。
1979
1980**系统能力**:SystemCapability.Graphics.Drawing
1981
1982**返回值:**
1983
1984| 类型   | 必填 | 说明           |
1985| ------ | ---- | -------------- |
1986| number | 是   | 返回画布的高度,该参数为浮点数。 |
1987
1988**示例:**
1989
1990```ts
1991import { RenderNode } from '@kit.ArkUI';
1992import { drawing } from '@kit.ArkGraphics2D';
1993class DrawingRenderNode extends RenderNode {
1994  draw(context : DrawContext) {
1995    const canvas = context.canvas;
1996    let height = canvas.getHeight();
1997    console.log('get canvas height:' + height);
1998  }
1999}
2000```
2001
2002### drawOval<sup>12+</sup>
2003
2004drawOval(oval: common2D.Rect): void
2005
2006在画布上绘制一个椭圆,椭圆的形状和位置由定义椭圆边界的矩形参数定义。
2007
2008**系统能力**:SystemCapability.Graphics.Drawing
2009
2010**参数**
2011
2012| 参数名 | 类型                                               | 必填 | 说明           |
2013| ------ | -------------------------------------------------- | ---- | -------------- |
2014| oval   | [common2D.Rect](js-apis-graphics-common2D.md#rect) | 是   | 矩形区域,该矩形的内切椭圆即为待绘制椭圆。 |
2015
2016**错误码:**
2017
2018以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
2019
2020| 错误码ID | 错误信息 |
2021| ------- | --------------------------------------------|
2022| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. |
2023
2024**示例**
2025
2026```ts
2027import { RenderNode } from '@kit.ArkUI';
2028import { common2D, drawing } from '@kit.ArkGraphics2D';
2029class DrawingRenderNode extends RenderNode {
2030  draw(context : DrawContext) {
2031    const canvas = context.canvas;
2032    const pen = new drawing.Pen();
2033    pen.setStrokeWidth(5);
2034    const color : common2D.Color = { alpha: 255, red: 255, green: 0, blue: 0 };
2035    pen.setColor(color);
2036    canvas.attachPen(pen);
2037    const rect: common2D.Rect = {left:100, top:50, right:400, bottom:500};
2038    canvas.drawOval(rect);
2039    canvas.detachPen();
2040  }
2041}
2042```
2043
2044### drawArc<sup>12+</sup>
2045
2046drawArc(arc: common2D.Rect, startAngle: number, sweepAngle: number): void
2047
2048在画布上绘制一段圆弧。该方法允许指定圆弧的起始角度、扫描角度。
2049
2050**系统能力**:SystemCapability.Graphics.Drawing
2051
2052**参数**
2053
2054| 参数名 | 类型                                               | 必填 | 说明           |
2055| ------ | -------------------------------------------------- | ---- | -------------- |
2056| arc   | [common2D.Rect](js-apis-graphics-common2D.md#rect) | 是   | 包含要绘制的圆弧的椭圆的矩形边界。 |
2057| startAngle      | number | 是   | 弧的起始角度,单位为度,该参数为浮点数。0度时起始点位于椭圆的右端点,正数时以顺时针方向放置起始点,负数时以逆时针方向放置起始点。 |
2058| sweepAngle      | number | 是   | 弧的扫描角度,单位为度,该参数为浮点数。为正数时顺时针扫描,为负数时逆时针扫描。 |
2059
2060**错误码:**
2061
2062以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
2063
2064| 错误码ID | 错误信息 |
2065| ------- | --------------------------------------------|
2066| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. |
2067
2068**示例**
2069
2070```ts
2071import { RenderNode } from '@kit.ArkUI';
2072import { common2D, drawing } from '@kit.ArkGraphics2D';
2073class DrawingRenderNode extends RenderNode {
2074  draw(context : DrawContext) {
2075    const canvas = context.canvas;
2076    const pen = new drawing.Pen();
2077    pen.setStrokeWidth(5);
2078    const color : common2D.Color = { alpha: 255, red: 255, green: 0, blue: 0 };
2079    pen.setColor(color);
2080    canvas.attachPen(pen);
2081    const rect: common2D.Rect = {left:100, top:50, right:400, bottom:200};
2082    canvas.drawArc(rect, 90, 180);
2083    canvas.detachPen();
2084  }
2085}
2086```
2087
2088### drawPoint
2089
2090drawPoint(x: number, y: number): void
2091
2092用于绘制一个点。
2093
2094**系统能力**:SystemCapability.Graphics.Drawing
2095
2096**参数:**
2097
2098| 参数名 | 类型   | 必填 | 说明                |
2099| ------ | ------ | ---- | ------------------- |
2100| x      | number | 是   | 点的x轴坐标,该参数为浮点数。 |
2101| y      | number | 是   | 点的y轴坐标,该参数为浮点数。 |
2102
2103**错误码:**
2104
2105以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
2106
2107| 错误码ID | 错误信息 |
2108| ------- | --------------------------------------------|
2109| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. |
2110
2111**示例:**
2112
2113```ts
2114import { RenderNode } from '@kit.ArkUI';
2115import { drawing } from '@kit.ArkGraphics2D';
2116class DrawingRenderNode extends RenderNode {
2117  draw(context : DrawContext) {
2118    const canvas = context.canvas;
2119    const pen = new drawing.Pen();
2120    pen.setStrokeWidth(5);
2121    pen.setColor({alpha: 255, red: 255, green: 0, blue: 0});
2122    canvas.attachPen(pen);
2123    canvas.drawPoint(10, 10);
2124    canvas.detachPen();
2125  }
2126}
2127```
2128
2129### drawPoints<sup>12+</sup>
2130
2131drawPoints(points: Array\<common2D.Point>, mode?: PointMode): void
2132
2133在画布上绘制一组点、线段或多边形。通过指定点的数组和绘制模式来决定如何绘制这些点。
2134
2135**系统能力**:SystemCapability.Graphics.Drawing
2136
2137**参数:**
2138
2139| 参数名  | 类型                                       | 必填   | 说明        |
2140| ---- | ---------------------------------------- | ---- | --------- |
2141| points  | Array\<[common2D.Point](js-apis-graphics-common2D.md#point)> | 是    | 要绘制的点的数组。长度不能为0。   |
2142| mode | [PointMode](#pointmode12)                  | 否    | 绘制数组中的点的方式,默认为drawing.PointMode.POINTS。 |
2143
2144**错误码:**
2145
2146以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
2147
2148| 错误码ID | 错误信息 |
2149| ------- | --------------------------------------------|
2150| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified;2. Incorrect parameter types; 3. Parameter verification failed.|
2151
2152**示例:**
2153
2154```ts
2155import { RenderNode } from '@kit.ArkUI';
2156import { common2D, drawing } from '@kit.ArkGraphics2D';
2157class DrawingRenderNode extends RenderNode {
2158  draw(context : DrawContext) {
2159    const canvas = context.canvas;
2160    const pen = new drawing.Pen();
2161    pen.setStrokeWidth(30);
2162    const color : common2D.Color = { alpha: 255, red: 255, green: 0, blue: 0 };
2163    pen.setColor(color);
2164    canvas.attachPen(pen);
2165    canvas.drawPoints([{x: 100, y: 200}, {x: 150, y: 230}, {x: 200, y: 300}], drawing.PointMode.POINTS);
2166    canvas.detachPen();
2167  }
2168}
2169```
2170
2171### drawPath
2172
2173drawPath(path: Path): void
2174
2175用于绘制一个自定义路径,该路径包含了一组路径轮廓,每个路径轮廓可以是开放的或封闭的。
2176
2177**系统能力**:SystemCapability.Graphics.Drawing
2178
2179**参数:**
2180
2181| 参数名 | 类型          | 必填 | 说明               |
2182| ------ | ------------- | ---- | ------------------ |
2183| path   | [Path](#path) | 是   | 要绘制的路径对象。 |
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    let path = new drawing.Path();
2205    path.moveTo(10,10);
2206    path.cubicTo(10, 10, 10, 10, 15, 15);
2207    path.close();
2208    canvas.attachPen(pen);
2209    canvas.drawPath(path);
2210    canvas.detachPen();
2211  }
2212}
2213```
2214
2215### drawLine
2216
2217drawLine(x0: number, y0: number, x1: number, y1: number): void
2218
2219用于画一条直线段,从指定的起点到指点的终点。如果直线段的起点和终点是同一个点,无法绘制。
2220
2221**系统能力**:SystemCapability.Graphics.Drawing
2222
2223**参数:**
2224
2225| 参数名 | 类型   | 必填 | 说明                    |
2226| ------ | ------ | ---- | ----------------------- |
2227| x0     | number | 是   | 线段起点的X坐标,该参数为浮点数。 |
2228| y0     | number | 是   | 线段起点的Y坐标,该参数为浮点数。 |
2229| x1     | number | 是   | 线段终点的X坐标,该参数为浮点数。 |
2230| y1     | number | 是   | 线段终点的Y坐标,该参数为浮点数。 |
2231
2232**错误码:**
2233
2234以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
2235
2236| 错误码ID | 错误信息 |
2237| ------- | --------------------------------------------|
2238| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. |
2239
2240**示例:**
2241
2242```ts
2243import { RenderNode } from '@kit.ArkUI';
2244import { drawing } from '@kit.ArkGraphics2D';
2245class DrawingRenderNode extends RenderNode {
2246  draw(context : DrawContext) {
2247    const canvas = context.canvas;
2248    const pen = new drawing.Pen();
2249    pen.setStrokeWidth(5);
2250    pen.setColor({alpha: 255, red: 255, green: 0, blue: 0});
2251    canvas.attachPen(pen);
2252    canvas.drawLine(0, 0, 20, 20);
2253    canvas.detachPen();
2254  }
2255}
2256```
2257
2258### drawTextBlob
2259
2260drawTextBlob(blob: TextBlob, x: number, y: number): void
2261
2262用于绘制一段文字。若构造blob的字体不支持待绘制字符,则该部分字符无法绘制。
2263
2264**系统能力**:SystemCapability.Graphics.Drawing
2265
2266**参数:**
2267
2268| 参数名 | 类型                  | 必填 | 说明                                       |
2269| ------ | --------------------- | ---- | ------------------------------------------ |
2270| blob   | [TextBlob](#textblob) | 是   | TextBlob对象。                             |
2271| x      | number                | 是   | 所绘制出的文字基线(下图蓝线)的左端点(下图红点)的横坐标,该参数为浮点数。 |
2272| y      | number                | 是   | 所绘制出的文字基线(下图蓝线)的左端点(下图红点)的纵坐标,该参数为浮点数。 |
2273
2274![zh-ch_image_Text_Blob.png](figures/zh-ch_image_Text_Blob.png)
2275
2276**错误码:**
2277
2278以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
2279
2280| 错误码ID | 错误信息 |
2281| ------- | --------------------------------------------|
2282| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. |
2283
2284**示例:**
2285
2286```ts
2287import { RenderNode } from '@kit.ArkUI';
2288import { drawing } from '@kit.ArkGraphics2D';
2289class DrawingRenderNode extends RenderNode {
2290  draw(context : DrawContext) {
2291    const canvas = context.canvas;
2292    const brush = new drawing.Brush();
2293    brush.setColor({alpha: 255, red: 255, green: 0, blue: 0});
2294    const font = new drawing.Font();
2295    font.setSize(20);
2296    const textBlob = drawing.TextBlob.makeFromString("Hello, drawing", font, drawing.TextEncoding.TEXT_ENCODING_UTF8);
2297    canvas.attachBrush(brush);
2298    canvas.drawTextBlob(textBlob, 20, 20);
2299    canvas.detachBrush();
2300  }
2301}
2302```
2303
2304### drawSingleCharacter<sup>12+</sup>
2305
2306drawSingleCharacter(text: string, font: Font, x: number, y: number): void
2307
2308用于绘制单个字符。当前字型中的字体不支持待绘制字符时,退化到使用系统字体绘制字符。
2309
2310**系统能力**:SystemCapability.Graphics.Drawing
2311
2312**参数**
2313
2314| 参数名 | 类型                | 必填 | 说明        |
2315| ------ | ------------------- | ---- | ----------- |
2316| text   | string | 是   | 待绘制的单个字符,字符串的长度必须为1。  |
2317| font   | [Font](#font) | 是   | 字型对象。  |
2318| x      | number | 是   | 所绘制出的字符基线(下图蓝线)的左端点(下图红点)的横坐标,该参数为浮点数。 |
2319| y      | number | 是   | 所绘制出的字符基线(下图蓝线)的左端点(下图红点)的纵坐标,该参数为浮点数。 |
2320
2321![zh-ch_image_Text_Blob.png](figures/zh-ch_image_Text_Blob.png)
2322
2323**错误码:**
2324
2325以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
2326
2327| 错误码ID | 错误信息 |
2328| ------- | --------------------------------------------|
2329| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types;3.Parameter verification failed. |
2330
2331**示例**
2332
2333```ts
2334import { RenderNode } from '@kit.ArkUI';
2335import { drawing } from '@kit.ArkGraphics2D';
2336
2337class DrawingRenderNode extends RenderNode {
2338  draw(context : DrawContext) {
2339    const canvas = context.canvas;
2340    const brush = new drawing.Brush();
2341    brush.setColor({alpha: 255, red: 255, green: 0, blue: 0});
2342    const font = new drawing.Font();
2343    font.setSize(20);
2344    canvas.attachBrush(brush);
2345    canvas.drawSingleCharacter("你", font, 100, 100);
2346    canvas.drawSingleCharacter("好", font, 120, 100);
2347    canvas.detachBrush();
2348  }
2349}
2350```
2351
2352### drawRegion<sup>12+</sup>
2353
2354drawRegion(region: Region): void
2355
2356用于绘制一个区域。
2357
2358**系统能力**:SystemCapability.Graphics.Drawing
2359
2360**参数**
2361
2362| 参数名 | 类型                | 必填 | 说明        |
2363| ------ | ------------------- | ---- | ----------- |
2364| region   | [Region](#region12) | 是   | 绘制的区域  |
2365
2366**错误码:**
2367
2368以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
2369
2370| 错误码ID | 错误信息 |
2371| ------- | --------------------------------------------|
2372| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. |
2373
2374**示例**
2375
2376```ts
2377import { RenderNode } from '@kit.ArkUI';
2378class DrawingRenderNode extends RenderNode {
2379  draw(context : DrawContext) {
2380    const canvas = context.canvas;
2381    const pen = new drawing.Pen();
2382    let region = new drawing.Region();
2383    pen.setStrokeWidth(10);
2384    pen.setColor({ alpha: 255, red: 255, green: 0, blue: 0 });
2385    canvas.attachPen(pen);
2386    region.setRect(100, 100, 400, 400);
2387    canvas.drawRegion(region);
2388    canvas.detachPen();
2389  }
2390}
2391```
2392
2393### attachPen
2394
2395attachPen(pen: Pen): void
2396
2397绑定画笔给画布,画布将使用画笔的样式和颜色去绘制图形形状的轮廓。
2398
2399> **说明:**
2400>
2401> 执行该方法后,若pen的效果发生改变并且开发者希望该变化生效于接下来的绘制动作,需要再次执行该方法以确保变化生效。
2402
2403**系统能力**:SystemCapability.Graphics.Drawing
2404
2405**参数:**
2406
2407| 参数名 | 类型        | 必填 | 说明       |
2408| ------ | ----------- | ---- | ---------- |
2409| pen    | [Pen](#pen) | 是   | 画笔对象。 |
2410
2411**错误码:**
2412
2413以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
2414
2415| 错误码ID | 错误信息 |
2416| ------- | --------------------------------------------|
2417| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. |
2418
2419**示例:**
2420
2421```ts
2422import { RenderNode } from '@kit.ArkUI';
2423import { drawing } from '@kit.ArkGraphics2D';
2424class DrawingRenderNode extends RenderNode {
2425  draw(context : DrawContext) {
2426    const canvas = context.canvas;
2427    const pen = new drawing.Pen();
2428    pen.setStrokeWidth(5);
2429    pen.setColor({alpha: 255, red: 255, green: 0, blue: 0});
2430    canvas.attachPen(pen);
2431    canvas.drawRect({ left : 0, right : 10, top : 0, bottom : 10 });
2432    canvas.detachPen();
2433  }
2434}
2435```
2436
2437### attachBrush
2438
2439attachBrush(brush: Brush): void
2440
2441绑定画刷给画布,画布将使用画刷的样式和颜色去绘制图形形状,并在其内部进行填充。
2442
2443> **说明:**
2444>
2445> 执行该方法后,若brush的效果发生改变并且开发者希望该变化生效于接下来的绘制动作,需要再次执行该方法以确保变化生效。
2446
2447**系统能力**:SystemCapability.Graphics.Drawing
2448
2449**参数:**
2450
2451| 参数名 | 类型            | 必填 | 说明       |
2452| ------ | --------------- | ---- | ---------- |
2453| brush  | [Brush](#brush) | 是   | 画刷对象。 |
2454
2455**错误码:**
2456
2457以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
2458
2459| 错误码ID | 错误信息 |
2460| ------- | --------------------------------------------|
2461| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. |
2462
2463**示例:**
2464
2465```ts
2466import { RenderNode } from '@kit.ArkUI';
2467import { drawing } from '@kit.ArkGraphics2D';
2468class DrawingRenderNode extends RenderNode {
2469  draw(context : DrawContext) {
2470    const canvas = context.canvas;
2471    const brush = new drawing.Brush();
2472    brush.setColor({alpha: 255, red: 255, green: 0, blue: 0});
2473    canvas.attachBrush(brush);
2474    canvas.drawRect({ left : 0, right : 10, top : 0, bottom : 10 });
2475    canvas.detachBrush();
2476  }
2477}
2478```
2479
2480### detachPen
2481
2482detachPen(): void
2483
2484用于去除掉画布中的画笔,画布将不再使用画笔去绘制图形形状的轮廓。
2485
2486**系统能力**:SystemCapability.Graphics.Drawing
2487
2488**示例:**
2489
2490```ts
2491import { RenderNode } from '@kit.ArkUI';
2492import { drawing } from '@kit.ArkGraphics2D';
2493class DrawingRenderNode extends RenderNode {
2494  draw(context : DrawContext) {
2495    const canvas = context.canvas;
2496    const pen = new drawing.Pen();
2497    pen.setStrokeWidth(5);
2498    pen.setColor({alpha: 255, red: 255, green: 0, blue: 0});
2499    canvas.attachPen(pen);
2500    canvas.drawRect({ left : 0, right : 10, top : 0, bottom : 10 });
2501    canvas.detachPen();
2502  }
2503}
2504```
2505
2506### detachBrush
2507
2508detachBrush(): void
2509
2510用于去除掉画布中的画刷,画布将不再使用画刷去绘制图形形状,也不会进行填充。
2511
2512**系统能力**:SystemCapability.Graphics.Drawing
2513
2514**示例:**
2515
2516```ts
2517import { RenderNode } from '@kit.ArkUI';
2518import { drawing } from '@kit.ArkGraphics2D';
2519class DrawingRenderNode extends RenderNode {
2520  draw(context : DrawContext) {
2521    const canvas = context.canvas;
2522    const brush = new drawing.Brush();
2523    brush.setColor({alpha: 255, red: 255, green: 0, blue: 0});
2524    canvas.attachBrush(brush);
2525    canvas.drawRect({ left : 0, right : 10, top : 0, bottom : 10 });
2526    canvas.detachBrush();
2527  }
2528}
2529```
2530
2531### clipPath<sup>12+</sup>
2532
2533clipPath(path: Path, clipOp?: ClipOp, doAntiAlias?: boolean): void
2534
2535用于裁剪一个自定义路径。
2536
2537**系统能力**:SystemCapability.Graphics.Drawing
2538
2539**参数:**
2540
2541| 参数名       | 类型               | 必填 | 说明                                |
2542| ------------ | ----------------- | ---- | ------------------------------------|
2543| path         | [Path](#path)     | 是   | 路径对象。                                                 |
2544| clipOp       | [ClipOp](#clipop12) | 否   | 裁剪方式。默认为INTERSECT。                                     |
2545| doAntiAlias  | boolean           | 否   | 表示是否使能抗锯齿绘制。true表示使能,false表示不使能。默认为false。 |
2546
2547**错误码:**
2548
2549以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
2550
2551| 错误码ID | 错误信息 |
2552| ------- | --------------------------------------------|
2553| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. |
2554
2555**示例:**
2556
2557```ts
2558import { RenderNode } from '@kit.ArkUI';
2559import { common2D, drawing } from '@kit.ArkGraphics2D';
2560class DrawingRenderNode extends RenderNode {
2561  draw(context : DrawContext) {
2562    const canvas = context.canvas;
2563    const pen = new drawing.Pen();
2564    pen.setStrokeWidth(5);
2565    pen.setColor({alpha: 255, red: 255, green: 0, blue: 0});
2566    let path = new drawing.Path();
2567    path.moveTo(10, 10);
2568    path.cubicTo(10, 10, 10, 10, 15, 15);
2569    path.close();
2570    canvas.attachPen(pen);
2571    canvas.clipPath(path, drawing.ClipOp.DIFFERENCE, true);
2572    canvas.detachPen();
2573  }
2574}
2575```
2576
2577### clipRect<sup>12+</sup>
2578
2579clipRect(rect: common2D.Rect, clipOp?: ClipOp, doAntiAlias?: boolean): void
2580
2581用于裁剪一个矩形。
2582
2583**系统能力**:SystemCapability.Graphics.Drawing
2584
2585**参数:**
2586
2587| 参数名         | 类型                                       | 必填   | 说明                  |
2588| ----------- | ---------------------------------------- | ---- | ------------------- |
2589| rect        | [common2D.Rect](js-apis-graphics-common2D.md#rect) | 是    | 需要裁剪的矩形区域。      |
2590| clipOp      | [ClipOp](#clipop12)                  | 否    | 裁剪方式。默认为INTERSECT。     |
2591| doAntiAlias | boolean           | 否   | 表示是否使能抗锯齿绘制。true表示使能,false表示不使能。默认为false。 |
2592
2593**错误码:**
2594
2595以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
2596
2597| 错误码ID | 错误信息 |
2598| ------- | --------------------------------------------|
2599| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. |
2600
2601**示例:**
2602
2603```ts
2604import { RenderNode } from '@kit.ArkUI';
2605import { common2D, drawing } from '@kit.ArkGraphics2D';
2606class DrawingRenderNode extends RenderNode {
2607  draw(context : DrawContext) {
2608    const canvas = context.canvas;
2609    const pen = new drawing.Pen();
2610    pen.setStrokeWidth(5);
2611    pen.setColor({alpha: 255, red: 255, green: 0, blue: 0});
2612    canvas.attachPen(pen);
2613    canvas.clipRect({left : 10, right : 500, top : 300, bottom : 900}, drawing.ClipOp.DIFFERENCE, true);
2614    canvas.detachPen();
2615  }
2616}
2617```
2618
2619### save<sup>12+</sup>
2620
2621save(): number
2622
2623用于保存当前画布的状态(画布矩阵)到栈顶。
2624
2625**系统能力**:SystemCapability.Graphics.Drawing
2626
2627**返回值:**
2628
2629| 类型   | 说明                |
2630| ------ | ------------------ |
2631| number | 画布状态个数,该参数为正整数。 |
2632
2633**示例:**
2634
2635```ts
2636import { RenderNode } from '@kit.ArkUI';
2637import { common2D, drawing } from '@kit.ArkGraphics2D';
2638class DrawingRenderNode extends RenderNode {
2639  draw(context : DrawContext) {
2640    const canvas = context.canvas;
2641    let rect: common2D.Rect = {left: 10, right: 200, top: 100, bottom: 300};
2642    canvas.drawRect(rect);
2643    let saveCount = canvas.save();
2644  }
2645}
2646```
2647
2648### saveLayer<sup>12+</sup>
2649
2650saveLayer(rect?: common2D.Rect | null, brush?: Brush | null): number
2651
2652保存当前画布的矩阵和裁剪区域,并为后续绘制分配位图。调用恢复接口[restore](#restore12)将会舍弃对矩阵和裁剪区域做的更改,并绘制位图。
2653
2654**系统能力**:SystemCapability.Graphics.Drawing
2655
2656**参数:**
2657
2658| 参数名  | 类型     | 必填   | 说明         |
2659| ---- | ------ | ---- | ----------------- |
2660| rect   | [common2D.Rect](js-apis-graphics-common2D.md#rect)\|null | 否   | 矩形对象,用于限制图层大小,默认为当前画布大小。 |
2661| brush  | [Brush](#brush)\|null | 否   | 画刷对象,绘制位图时会应用画刷对象的透明度,颜色滤波器效果和混合模式,默认不设置额外效果。 |
2662
2663**返回值:**
2664
2665| 类型   | 说明                |
2666| ------ | ------------------ |
2667| number | 返回调用前保存的画布状态数,该参数为正整数。 |
2668
2669**错误码:**
2670
2671以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
2672
2673| 错误码ID | 错误信息 |
2674| ------- | --------------------------------------------|
2675| 401 | Parameter error. Possible causes: Mandatory parameters are left unspecified. |
2676
2677**示例:**
2678
2679```ts
2680import { RenderNode } from '@kit.ArkUI';
2681import { common2D, drawing } from '@kit.ArkGraphics2D';
2682class DrawingRenderNode extends RenderNode {
2683  draw(context : DrawContext) {
2684    const canvas = context.canvas;
2685    canvas.saveLayer(null, null);
2686    const brushRect = new drawing.Brush();
2687    const colorRect: common2D.Color = {alpha: 255, red: 255, green: 255, blue: 0};
2688    brushRect.setColor(colorRect);
2689    canvas.attachBrush(brushRect);
2690    const rect: common2D.Rect = {left:100, top:100, right:500, bottom:500};
2691    canvas.drawRect(rect);
2692
2693    const brush = new drawing.Brush();
2694    brush.setBlendMode(drawing.BlendMode.DST_OUT);
2695    canvas.saveLayer(rect, brush);
2696
2697    const brushCircle = new drawing.Brush();
2698    const colorCircle: common2D.Color = {alpha: 255, red: 0, green: 0, blue: 255};
2699    brushCircle.setColor(colorCircle);
2700    canvas.attachBrush(brushCircle);
2701    canvas.drawCircle(500, 500, 200);
2702    canvas.restore();
2703    canvas.restore();
2704    canvas.detachBrush();
2705  }
2706}
2707```
2708
2709### scale<sup>12+</sup>
2710
2711scale(sx: number, sy: number): void
2712
2713用于画布缩放。
2714
2715**系统能力**:SystemCapability.Graphics.Drawing
2716
2717**参数:**
2718
2719| 参数名  | 类型     | 必填   | 说明         |
2720| ---- | ------ | ---- | ----------------- |
2721| sx   | number | 是   | x轴方向的缩放比例,该参数为浮点数。 |
2722| sy   | number | 是   | y轴方向的缩放比例,该参数为浮点数。 |
2723
2724**错误码:**
2725
2726以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
2727
2728| 错误码ID | 错误信息 |
2729| ------- | --------------------------------------------|
2730| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. |
2731
2732**示例:**
2733
2734```ts
2735import { RenderNode } from '@kit.ArkUI';
2736import { common2D, drawing } from '@kit.ArkGraphics2D';
2737class DrawingRenderNode extends RenderNode {
2738  draw(context : DrawContext) {
2739    const canvas = context.canvas;
2740    const pen = new drawing.Pen();
2741    pen.setStrokeWidth(5);
2742    pen.setColor({alpha: 255, red: 255, green: 0, blue: 0});
2743    canvas.attachPen(pen);
2744    canvas.scale(2, 0.5);
2745    canvas.drawRect({left : 10, right : 500, top : 300, bottom : 900});
2746    canvas.detachPen();
2747  }
2748}
2749```
2750
2751### skew<sup>12+</sup>
2752
2753skew(sx: number, sy: number) : void
2754
2755用于画布倾斜变换,包括水平轴和垂直轴上的偏移。
2756
2757**系统能力**:SystemCapability.Graphics.Drawing
2758
2759**参数:**
2760
2761| 参数名  | 类型     | 必填   | 说明         |
2762| ---- | ------ | ---- | ----------------- |
2763| sx   | number | 是   | x轴上的倾斜量,该参数为浮点数。    |
2764| sy   | number | 是   | y轴上的倾斜量,该参数为浮点数。    |
2765
2766**错误码:**
2767
2768以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
2769
2770| 错误码ID | 错误信息 |
2771| ------- | --------------------------------------------|
2772| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. |
2773
2774**示例:**
2775
2776```ts
2777import { RenderNode } from '@kit.ArkUI';
2778import { common2D, drawing } from '@kit.ArkGraphics2D';
2779class DrawingRenderNode extends RenderNode {
2780  draw(context : DrawContext) {
2781    const canvas = context.canvas;
2782    const pen = new drawing.Pen();
2783    pen.setStrokeWidth(5);
2784    pen.setColor({alpha: 255, red: 255, green: 0, blue: 0});
2785    canvas.attachPen(pen);
2786    canvas.skew(0.1, 0.1);
2787    canvas.drawRect({left : 10, right : 500, top : 300, bottom : 900});
2788    canvas.detachPen();
2789  }
2790}
2791```
2792
2793### rotate<sup>12+</sup>
2794
2795rotate(degrees: number, sx: number, sy: number) : void
2796
2797用于画布旋转一定的角度。
2798
2799**系统能力**:SystemCapability.Graphics.Drawing
2800
2801**参数:**
2802
2803| 参数名  | 类型     | 必填   | 说明         |
2804| ---- | ------ | ------ | ------------------------ |
2805| degrees       | number | 是    | 旋转角度,单位为度,该参数为浮点数,正数为顺时针旋转,负数为逆时针旋转。  |
2806| sx            | number | 是    | 旋转中心的横坐标,该参数为浮点数。 |
2807| sy            | number | 是    | 旋转中心的纵坐标,该参数为浮点数。 |
2808
2809**错误码:**
2810
2811以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
2812
2813| 错误码ID | 错误信息 |
2814| ------- | --------------------------------------------|
2815| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. |
2816
2817**示例:**
2818
2819```ts
2820import { RenderNode } from '@kit.ArkUI';
2821import { common2D, drawing } from '@kit.ArkGraphics2D';
2822class DrawingRenderNode extends RenderNode {
2823  draw(context : DrawContext) {
2824    const canvas = context.canvas;
2825    const pen = new drawing.Pen();
2826    pen.setStrokeWidth(5);
2827    pen.setColor({alpha: 255, red: 255, green: 0, blue: 0});
2828    canvas.attachPen(pen);
2829    canvas.rotate(30, 100, 100);
2830    canvas.drawRect({left : 10, right : 500, top : 300, bottom : 900});
2831    canvas.detachPen();
2832  }
2833}
2834```
2835
2836### translate<sup>12+</sup>
2837
2838translate(dx: number, dy: number): void
2839
2840用于平移画布一段距离。
2841
2842**系统能力**:SystemCapability.Graphics.Drawing
2843
2844**参数:**
2845
2846| 参数名 | 类型   | 必填 | 说明                |
2847| ----- | ------ | ---- | ------------------- |
2848| dx    | number | 是   | x轴方向的移动距离,该参数为浮点数。   |
2849| dy    | number | 是   | y轴方向的移动距离,该参数为浮点数。   |
2850
2851**错误码:**
2852
2853以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
2854
2855| 错误码ID | 错误信息 |
2856| ------- | --------------------------------------------|
2857| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. |
2858
2859**示例:**
2860
2861```ts
2862import { RenderNode } from '@kit.ArkUI';
2863import { common2D, drawing } from '@kit.ArkGraphics2D';
2864class DrawingRenderNode extends RenderNode {
2865  draw(context : DrawContext) {
2866    const canvas = context.canvas;
2867    const pen = new drawing.Pen();
2868    pen.setStrokeWidth(5);
2869    pen.setColor({alpha: 255, red: 255, green: 0, blue: 0});
2870    canvas.attachPen(pen);
2871    canvas.translate(10, 10);
2872    canvas.drawRect({left : 10, right : 500, top : 300, bottom : 900});
2873    canvas.detachPen();
2874  }
2875}
2876```
2877
2878### getSaveCount<sup>12+</sup>
2879
2880getSaveCount(): number
2881
2882用于获取栈中保存的画布状态(画布矩阵)的数量。
2883
2884**系统能力**:SystemCapability.Graphics.Drawing
2885
2886**返回值:**
2887
2888| 类型    | 说明                                 |
2889| ------ | ------------------------------------ |
2890| number | 已保存的画布状态的数量,该参数为正整数。 |
2891
2892**示例:**
2893
2894```ts
2895import { RenderNode } from '@kit.ArkUI';
2896import { common2D, drawing } from '@kit.ArkGraphics2D';
2897class DrawingRenderNode extends RenderNode {
2898  draw(context : DrawContext) {
2899    const canvas = context.canvas;
2900    const pen = new drawing.Pen();
2901    pen.setStrokeWidth(5);
2902    pen.setColor({alpha: 255, red: 255, green: 0, blue: 0});
2903    canvas.attachPen(pen);
2904    canvas.drawRect({left: 10, right: 200, top: 100, bottom: 300});
2905    canvas.save();
2906    canvas.drawRect({left : 10, right : 500, top : 300, bottom : 900});
2907    canvas.getSaveCount();
2908    canvas.detachPen();
2909  }
2910}
2911```
2912
2913### restoreToCount<sup>12+</sup>
2914
2915restoreToCount(count: number): void
2916
2917用于恢复到指定数量的画布状态(画布矩阵)。
2918
2919**系统能力**:SystemCapability.Graphics.Drawing
2920
2921**参数:**
2922
2923| 参数名   | 类型     | 必填   | 说明                    |
2924| ----- | ------ | ---- | ----------------------------- |
2925| count | number | 是   | 要恢复的画布状态深度,该参数为整数。小于等于1时,恢复为初始状态;大于已保存的画布状态数量时,不执行任何操作。 |
2926
2927**错误码:**
2928
2929以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
2930
2931| 错误码ID | 错误信息 |
2932| ------- | --------------------------------------------|
2933| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. |
2934
2935**示例:**
2936
2937```ts
2938import { RenderNode } from '@kit.ArkUI';
2939import { common2D, drawing } from '@kit.ArkGraphics2D';
2940class DrawingRenderNode extends RenderNode {
2941  draw(context : DrawContext) {
2942    const canvas = context.canvas;
2943    const pen = new drawing.Pen();
2944    pen.setStrokeWidth(5);
2945    pen.setColor({alpha: 255, red: 255, green: 0, blue: 0});
2946    canvas.attachPen(pen);
2947    canvas.drawRect({left: 10, right: 200, top: 100, bottom: 300});
2948    canvas.save();
2949    canvas.drawRect({left: 10, right: 200, top: 100, bottom: 500});
2950    canvas.save();
2951    canvas.drawRect({left: 100, right: 300, top: 100, bottom: 500});
2952    canvas.save();
2953    canvas.restoreToCount(2);
2954    canvas.drawRect({left : 10, right : 500, top : 300, bottom : 900});
2955    canvas.detachPen();
2956  }
2957}
2958```
2959
2960### restore<sup>12+</sup>
2961
2962restore(): void
2963
2964用于恢复保存在栈顶的画布状态(画布矩阵)。
2965
2966**系统能力**:SystemCapability.Graphics.Drawing
2967
2968**示例:**
2969
2970```ts
2971import { RenderNode } from '@kit.ArkUI';
2972import { common2D, drawing } from '@kit.ArkGraphics2D';
2973class DrawingRenderNode extends RenderNode {
2974  draw(context : DrawContext) {
2975    const canvas = context.canvas;
2976    const pen = new drawing.Pen();
2977    pen.setStrokeWidth(5);
2978    pen.setColor({alpha: 255, red: 255, green: 0, blue: 0});
2979    canvas.attachPen(pen);
2980    canvas.restore();
2981    canvas.detachPen();
2982  }
2983}
2984```
2985
2986### concatMatrix<sup>12+</sup>
2987
2988concatMatrix(matrix: Matrix): void
2989
2990画布现有矩阵左乘以传入矩阵,不影响该接口之前的绘制操作。
2991
2992**系统能力**:SystemCapability.Graphics.Drawing
2993
2994**参数:**
2995
2996| 参数名    | 类型                | 必填   | 说明    |
2997| ------ | ----------------- | ---- | ----- |
2998| matrix | [Matrix](#matrix12) | 是    | 矩阵对象。 |
2999
3000**错误码:**
3001
3002以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
3003
3004| 错误码ID | 错误信息 |
3005| ------- | --------------------------------------------|
3006| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. |
3007
3008**示例:**
3009
3010```ts
3011import { RenderNode } from '@kit.ArkUI';
3012import { drawing } from '@kit.ArkGraphics2D';
3013class DrawingRenderNode extends RenderNode {
3014  draw(context : DrawContext) {
3015    const canvas = context.canvas;
3016    let matrix = new drawing.Matrix();
3017    matrix.setMatrix([5, 0, 0, 0, 1, 2, 0, 0, 1]);
3018    canvas.concatMatrix(matrix);
3019  }
3020}
3021```
3022
3023### setMatrix<sup>12+</sup>
3024
3025setMatrix(matrix: Matrix): void
3026
3027设置画布的矩阵。
3028
3029**系统能力**:SystemCapability.Graphics.Drawing
3030
3031**参数:**
3032
3033| 参数名    | 类型                | 必填   | 说明    |
3034| ------ | ----------------- | ---- | ----- |
3035| matrix | [Matrix](#matrix12) | 是    | 矩阵对象。 |
3036
3037**错误码:**
3038
3039以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
3040
3041| 错误码ID | 错误信息 |
3042| ------- | --------------------------------------------|
3043| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. |
3044
3045**示例:**
3046
3047```ts
3048import { RenderNode } from '@kit.ArkUI';
3049import { drawing } from '@kit.ArkGraphics2D';
3050class DrawingRenderNode extends RenderNode {
3051  draw(context : DrawContext) {
3052    const canvas = context.canvas;
3053    let matrix = new drawing.Matrix()
3054    matrix.setMatrix([5, 0, 0, 0, 1, 1, 0, 0, 1]);
3055    canvas.setMatrix(matrix);
3056  }
3057}
3058```
3059
3060### isClipEmpty<sup>12+</sup>
3061
3062isClipEmpty(): boolean
3063
3064用于判断裁剪后可绘制区域是否为空。
3065
3066**系统能力**:SystemCapability.Graphics.Drawing
3067
3068**返回值:**
3069
3070| 类型                  | 说明           |
3071| --------------------- | -------------- |
3072| boolean | 返回画布的可绘制区域是否为空的结果,true表示为空,false表示不为空。 |
3073
3074**示例:**
3075
3076```ts
3077import { RenderNode } from '@kit.ArkUI';
3078import { drawing } from '@kit.ArkGraphics2D';
3079class DrawingRenderNode extends RenderNode {
3080  draw(context : DrawContext) {
3081    const canvas = context.canvas;
3082    if (canvas.isClipEmpty()) {
3083      console.info("canvas.isClipEmpty() returned true");
3084    } else {
3085      console.info("canvas.isClipEmpty() returned false");
3086    }
3087  }
3088}
3089```
3090
3091### clipRegion<sup>12+</sup>
3092
3093clipRegion(region: Region, clipOp?: ClipOp): void
3094
3095在画布上裁剪一个区域。
3096
3097**系统能力**:SystemCapability.Graphics.Drawing
3098
3099**参数:**
3100
3101| 参数名          | 类型    | 必填 | 说明                                                        |
3102| --------------- | ------- | ---- | ----------------------------------------------------------- |
3103| region | [Region](#region12) | 是   | 区域对象,表示裁剪范围。 |
3104| clipOp | [ClipOp](#clipop12)   | 否   | 裁剪方式,默认为INTERSECT。 |
3105
3106**错误码:**
3107
3108以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
3109
3110| 错误码ID | 错误信息 |
3111| ------- | --------------------------------------------|
3112| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. |
3113
3114**示例:**
3115
3116```ts
3117import { RenderNode } from '@kit.ArkUI';
3118import { drawing } from '@kit.ArkGraphics2D';
3119class DrawingRenderNode extends RenderNode {
3120  draw(context : DrawContext) {
3121    const canvas = context.canvas;
3122    let region : drawing.Region = new drawing.Region();
3123    region.setRect(0, 0, 500, 500);
3124    canvas.clipRegion(region);
3125  }
3126}
3127```
3128
3129### clipRoundRect<sup>12+</sup>
3130
3131clipRoundRect(roundRect: RoundRect, clipOp?: ClipOp, doAntiAlias?: boolean): void
3132
3133在画布上裁剪一个圆角矩形。
3134
3135**系统能力**:SystemCapability.Graphics.Drawing
3136
3137**参数:**
3138
3139| 参数名          | 类型    | 必填 | 说明                                                        |
3140| --------------- | ------- | ---- | ----------------------------------------------------------- |
3141| roundRect | [RoundRect](#roundrect12) | 是   | 圆角矩形对象,表示裁剪范围。 |
3142| clipOp | [ClipOp](#clipop12)   | 否   | 裁剪方式,默认为INTERSECT。 |
3143| doAntiAlias | boolean | 否   | 表示是否使能抗锯齿。true表示使能,false表示不使能。默认为false。 |
3144
3145**错误码:**
3146
3147以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
3148
3149| 错误码ID | 错误信息 |
3150| ------- | --------------------------------------------|
3151| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. |
3152
3153**示例:**
3154
3155```ts
3156import { RenderNode } from '@kit.ArkUI';
3157import { common2D, drawing } from '@kit.ArkGraphics2D';
3158class DrawingRenderNode extends RenderNode {
3159  draw(context : DrawContext) {
3160    const canvas = context.canvas;
3161    let rect: common2D.Rect = { left: 10, top: 100, right: 200, bottom: 300 };
3162    let roundRect = new drawing.RoundRect(rect, 10, 10);
3163    canvas.clipRoundRect(roundRect);
3164  }
3165}
3166```
3167
3168### resetMatrix<sup>12+</sup>
3169
3170resetMatrix(): void
3171
3172重置当前画布的矩阵为单位矩阵。
3173
3174**系统能力**:SystemCapability.Graphics.Drawing
3175
3176**示例:**
3177
3178```ts
3179import { RenderNode } from '@kit.ArkUI';
3180import { drawing } from '@kit.ArkGraphics2D';
3181class DrawingRenderNode extends RenderNode {
3182  draw(context : DrawContext) {
3183    const canvas = context.canvas;
3184    canvas.scale(4, 6);
3185    canvas.resetMatrix();
3186  }
3187}
3188```
3189
3190## ImageFilter<sup>12+</sup>
3191
3192图像滤波器。
3193
3194### createBlurImageFilter<sup>12+</sup>
3195
3196static createBlurImageFilter(sigmaX: number, sigmaY: number, tileMode: TileMode, imageFilter?: ImageFilter | null ): ImageFilter
3197
3198创建具有模糊效果的图像滤波器。
3199
3200**系统能力**:SystemCapability.Graphics.Drawing
3201
3202**参数:**
3203
3204| 参数名          | 类型    | 必填 | 说明                                                        |
3205| --------------- | ------- | ---- | ----------------------------------------------------------- |
3206| sigmaX | number | 是   | 表示沿x轴方向上高斯模糊的标准差,必须大于0,该参数为浮点数。 |
3207| sigmaY | number | 是   | 表示沿y轴方向上高斯模糊的标准差,必须大于0,该参数为浮点数。 |
3208| tileMode | [TileMode](#tilemode12)| 是   | 表示在边缘处应用的平铺模式。 |
3209| imageFilter | [ImageFilter](#imagefilter12) \| null | 否   | 表示要和当前图像滤波器叠加的输入滤波器,默认为null,表示直接将当前图像滤波器作用于原始图像。 |
3210
3211**返回值:**
3212
3213| 类型                  | 说明           |
3214| --------------------- | -------------- |
3215| [ImageFilter](#imagefilter12) | 返回创建的图像滤波器。 |
3216
3217**错误码:**
3218
3219以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
3220
3221| 错误码ID | 错误信息 |
3222| ------- | --------------------------------------------|
3223| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types;3.Parameter verification failed. |
3224
3225**示例:**
3226
3227```ts
3228import { drawing } from '@kit.ArkGraphics2D';
3229let imgFilter = drawing.ImageFilter.createBlurImageFilter(5, 10, drawing.TileMode.CLAMP);
3230```
3231
3232### createFromColorFilter<sup>12+</sup>
3233
3234static createFromColorFilter(colorFilter: ColorFilter, imageFilter?: ImageFilter | null): ImageFilter
3235
3236创建一个将颜色滤波器应用于传入的图像滤波器的图像滤波器。
3237
3238**系统能力**:SystemCapability.Graphics.Drawing
3239
3240**参数:**
3241
3242| 参数名          | 类型    | 必填 | 说明                                                        |
3243| --------------- | ------- | ---- | ----------------------------------------------------------- |
3244| colorFilter | [ColorFilter](#colorfilter) | 是   | 表示颜色滤波器。 |
3245| imageFilter | [ImageFilter](#imagefilter12) \| null | 否   | 表示要和当前图像滤波器叠加的输入滤波器,默认为null,表示直接将当前图像滤波器作用于原始图像。 |
3246
3247**返回值:**
3248
3249| 类型                  | 说明           |
3250| --------------------- | -------------- |
3251| [ImageFilter](#imagefilter12) | 返回创建的图像滤波器。 |
3252
3253**错误码:**
3254
3255以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
3256
3257| 错误码ID | 错误信息 |
3258| ------- | --------------------------------------------|
3259| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. |
3260
3261**示例:**
3262
3263```ts
3264import { drawing } from '@kit.ArkGraphics2D';
3265let imgFilter = drawing.ImageFilter.createBlurImageFilter(5, 10, drawing.TileMode.CLAMP);
3266let clolorfilter = drawing.ColorFilter.createSRGBGammaToLinear();
3267let imgFilter1 = drawing.ImageFilter.createFromColorFilter(clolorfilter, imgFilter);
3268```
3269
3270## TextBlobRunBuffer
3271
3272描述一行文字中具有相同属性的连续字形。
3273
3274**系统能力**:SystemCapability.Graphics.Drawing
3275
3276| 名称      | 类型   | 可读 | 可写 | 说明                      |
3277| --------- | ------ | ---- | ---- | ------------------------- |
3278| glyph     | number | 是   | 是   | 存储文字的索引,该参数为整数,传入浮点类型时向下取整。 |
3279| positionX | number | 是   | 是   | 文本的起点x轴坐标,该参数为浮点数。 |
3280| positionY | number | 是   | 是   | 文本的起点y轴坐标,该参数为浮点数。 |
3281
3282## TextEncoding
3283
3284文本的编码类型枚举。
3285
3286**系统能力**:SystemCapability.Graphics.Drawing
3287
3288| 名称                   | 值   | 说明                           |
3289| ---------------------- | ---- | ------------------------------ |
3290| TEXT_ENCODING_UTF8     | 0    | 使用1个字节表示UTF-8或ASCII。  |
3291| TEXT_ENCODING_UTF16    | 1    | 使用2个字节表示大部分unicode。 |
3292| TEXT_ENCODING_UTF32    | 2    | 使用4个字节表示全部unicode。   |
3293| TEXT_ENCODING_GLYPH_ID | 3    | 使用2个字节表示glyph index。   |
3294
3295## ClipOp<sup>12+</sup>
3296画布裁剪方式的枚举。
3297
3298
3299**系统能力**:SystemCapability.Graphics.Drawing
3300
3301| 名称                 | 值    | 说明           | 示意图   |
3302| ------------------ | ---- | ---------------- | -------- |
3303| DIFFERENCE | 0    | 将指定区域裁剪(取差集)。 | ![DIFFERENCE](./figures/zh-ch_image_ClipOp_Difference.png) |
3304| INTERSECT  | 1    | 将指定区域保留(取交集)。 | ![INTERSECT](./figures/zh-ch_image_ClipOp_Intersect.png) |
3305
3306> **说明:**
3307>
3308> 示意图展示的是以INTERSECT方式裁剪一个矩形后,使用不同枚举值在此基础上裁剪一个圆形的结果,其中绿色区域为最终得到的裁剪区域。
3309
3310## FilterMode<sup>12+</sup>
3311
3312过滤模式枚举。
3313
3314**系统能力**:SystemCapability.Graphics.Drawing
3315
3316| 名称                  | 值    | 说明      |
3317| ------------------- | ---- | ------- |
3318| FILTER_MODE_NEAREST | 0    | 邻近过滤模式。 |
3319| FILTER_MODE_LINEAR  | 1    | 线性过滤模式。 |
3320
3321## PathDirection<sup>12+</sup>
3322
3323添加闭合轮廓方向的枚举。
3324
3325**系统能力**:SystemCapability.Graphics.Drawing
3326
3327| 名称                  | 值    | 说明      |
3328| ------------------- | ---- | ------- |
3329| CLOCKWISE   | 0    | 顺时针方向添加闭合轮廓。 |
3330| COUNTER_CLOCKWISE  | 1    | 逆时针方向添加闭合轮廓。 |
3331
3332## PathFillType<sup>12+</sup>
3333
3334定义路径的填充类型枚举。
3335
3336**系统能力**:SystemCapability.Graphics.Drawing
3337
3338| 名称                  | 值    | 说明      |
3339| ------------------- | ---- | ------- |
3340| WINDING   | 0    | 绘制区域中的任意一点,向任意方向射出一条射线,对于射线和路径的所有交点,初始计数为0,遇到每个顺时针的交点(路径从射线的左边向右穿过),计数加1,遇到每个逆时针的交点(路径从射线的右边向左穿过),计数减1,若最终的计数结果不为0,则认为这个点在路径内部,需要被涂色;若计数为0则不被涂色。 |
3341| EVEN_ODD  | 1    | 绘制区域中的任意一点,向任意方向射出一条射线,若这条射线和路径相交的次数是奇数,则这个点被认为在路径内部,需要被涂色;若是偶数则不被涂色。 |
3342| INVERSE_WINDING  | 2    | WINDING涂色规则取反。 |
3343| INVERSE_EVEN_ODD  | 3    | EVEN_ODD涂色规则取反。 |
3344
3345> **说明:**
3346> ![WINDING&EVEN_ODD](./figures/zh-ch_image_PathFillType_Winding_Even_Odd.png)
3347> 如图所示圆环为路径,箭头指示路径的方向,p为区域内任意一点,蓝色线条为点p出发的射线,黑色箭头所指为对应填充规则下使用蓝色填充路径的结果。WINDING填充规则下,射线与路径的交点计数为2,不为0,点p被涂色;EVEN_ODD填充规则下,射线与路径的相交次数为2,是偶数,点p不被涂色。
3348
3349## PointMode<sup>12+</sup>
3350
3351绘制数组点的方式的枚举。
3352
3353**系统能力**:SystemCapability.Graphics.Drawing
3354
3355| 名称                 | 值    | 说明            |
3356| ------------------ | ---- | ------------- |
3357| POINTS  | 0    | 分别绘制每个点。      |
3358| LINES   | 1    | 将每对点绘制为线段。    |
3359| POLYGON | 2    | 将点阵列绘制为开放多边形。 |
3360
3361## FontEdging<sup>12+</sup>
3362
3363字形边缘效果类型枚举。
3364
3365**系统能力**:SystemCapability.Graphics.Drawing
3366
3367| 名称                  | 值    | 说明      |
3368| ------------------- | ---- | ------- |
3369| ALIAS | 0    | 无抗锯齿处理。 |
3370| ANTI_ALIAS  | 1    | 使用抗锯齿来平滑字形边缘。 |
3371| SUBPIXEL_ANTI_ALIAS  | 2    | 使用次像素级别的抗锯齿来平滑字形边缘,可以获得更加平滑的字形渲染效果。 |
3372
3373## FontHinting<sup>12+</sup>
3374
3375字形轮廓效果类型枚举。
3376
3377**系统能力**:SystemCapability.Graphics.Drawing
3378
3379| 名称                  | 值    | 说明      |
3380| ------------------- | ---- | ------- |
3381| NONE    | 0    | 不修改字形轮廓。 |
3382| SLIGHT  | 1    | 最小限度修改字形轮廓以改善对比度。 |
3383| NORMAL  | 2    | 修改字形轮廓以提高对比度。 |
3384| FULL    | 3    | 修改字形轮廓以获得最大对比度。 |
3385
3386## TextBlob
3387
3388由一个或多个具有相同字体的字符组成的字块。
3389
3390### makeFromPosText<sup>12+</sup>
3391
3392static makeFromPosText(text: string, len: number, points: common2D.Point[], font: Font): TextBlob
3393
3394使用文本创建TextBlob对象,TextBlob对象中每个字形的坐标由points中对应的坐标信息决定。
3395
3396**系统能力**:SystemCapability.Graphics.Drawing
3397
3398**参数:**
3399
3400| 参数名   | 类型                          | 必填 | 说明                                   |
3401| -------- | ----------------------------- | ---- | -------------------------------------- |
3402| text     | string             | 是   | 绘制字形的文本内容。                   |
3403| len      | number             | 是   | 字形个数,由[countText](#counttext12)获取,该参数为整数。 |
3404| points   |[common2D.Point](js-apis-graphics-common2D.md#point)[]     | 是   |点数组,用于指定每个字形的坐标,长度必须为len。|
3405| font     | [Font](#font)      | 是   | 字型对象。 |
3406
3407**返回值:**
3408
3409| 类型                  | 说明           |
3410| --------------------- | -------------- |
3411| [TextBlob](#textblob) | TextBlob对象。 |
3412
3413
3414**错误码:**
3415
3416以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
3417
3418| 错误码ID | 错误信息 |
3419| ------- | --------------------------------------------|
3420| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified;2. Incorrect parameter types. |
3421
3422**示例:**
3423
3424```ts
3425import { RenderNode } from '@kit.ArkUI';
3426import { drawing,common2D} from '@kit.ArkGraphics2D';
3427
3428class DrawingRenderNode extends RenderNode {
3429  draw(context : DrawContext) {
3430    const canvas = context.canvas;
3431    let text : string = 'makeFromPosText';
3432    let font : drawing.Font = new drawing.Font();
3433    font.setSize(100);
3434    let length = font.countText(text);
3435    let points : common2D.Point[] = [];
3436    for (let i = 0; i !== length; ++i) {
3437      points.push({ x: i * 35, y: i * 35 });
3438    }
3439    let textblob : drawing.TextBlob =drawing.TextBlob.makeFromPosText(text, points.length, points, font);
3440    canvas.drawTextBlob(textblob, 100, 100);
3441  }
3442}
3443```
3444
3445### uniqueID<sup>12+</sup>
3446
3447uniqueID(): number
3448
3449获取文本的标识符,该标识符是唯一的非零值。
3450
3451**系统能力**:SystemCapability.Graphics.Drawing
3452
3453**返回值:**
3454
3455| 类型                  | 说明           |
3456| --------------------- | -------------- |
3457| number | 返回TextBlob对象的唯一标识符。 |
3458
3459**示例:**
3460
3461```ts
3462import {drawing} from "@kit.ArkGraphics2D"
3463let text : string = 'TextBlobUniqueId';
3464let font : drawing.Font = new drawing.Font();
3465font.setSize(100);
3466let textBlob = drawing.TextBlob.makeFromString(text, font, 0);
3467let id = textBlob.uniqueID();
3468console.info("uniqueID---------------" +id);
3469```
3470
3471### makeFromString
3472
3473static makeFromString(text: string, font: Font, encoding?: TextEncoding): TextBlob
3474
3475将string类型的值转化成TextBlob对象。
3476
3477**系统能力**:SystemCapability.Graphics.Drawing
3478
3479**参数:**
3480
3481| 参数名   | 类型                          | 必填 | 说明                                   |
3482| -------- | ----------------------------- | ---- | -------------------------------------- |
3483| text     | string                        | 是   | 绘制字形的文本内容。                   |
3484| font     | [Font](#font)                 | 是   | 字型对象。           |
3485| encoding | [TextEncoding](#textencoding) | 否   | 编码类型,默认值为TEXT_ENCODING_UTF8。当前只有TEXT_ENCODING_UTF8生效,其余编码类型也会被视为TEXT_ENCODING_UTF8。 |
3486
3487**返回值:**
3488
3489| 类型                  | 说明           |
3490| --------------------- | -------------- |
3491| [TextBlob](#textblob) | TextBlob对象。 |
3492
3493**错误码:**
3494
3495以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
3496
3497| 错误码ID | 错误信息 |
3498| ------- | --------------------------------------------|
3499| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. |
3500
3501**示例:**
3502
3503```ts
3504import { RenderNode } from '@kit.ArkUI';
3505import { drawing } from '@kit.ArkGraphics2D';
3506class DrawingRenderNode extends RenderNode {
3507  draw(context : DrawContext) {
3508    const canvas = context.canvas;
3509    const brush = new drawing.Brush();
3510    brush.setColor({alpha: 255, red: 255, green: 0, blue: 0});
3511    const font = new drawing.Font();
3512    font.setSize(20);
3513    const textBlob = drawing.TextBlob.makeFromString("drawing", font, drawing.TextEncoding.TEXT_ENCODING_UTF8);
3514    canvas.attachBrush(brush);
3515    canvas.drawTextBlob(textBlob, 20, 20);
3516    canvas.detachBrush();
3517  }
3518}
3519```
3520
3521### makeFromRunBuffer
3522
3523static makeFromRunBuffer(pos: Array\<TextBlobRunBuffer>, font: Font, bounds?: common2D.Rect): TextBlob
3524
3525基于RunBuffer信息创建一个Textblob对象。
3526
3527**系统能力**:SystemCapability.Graphics.Drawing
3528
3529**参数:**
3530
3531| 参数名 | 类型                                               | 必填 | 说明                           |
3532| ------ | -------------------------------------------------- | ---- | ------------------------------ |
3533| pos    | Array\<[TextBlobRunBuffer](#textblobrunbuffer)>    | 是   | TextBlobRunBuffer数组。        |
3534| font   | [Font](#font)                                      | 是   | 字型对象。   |
3535| bounds | [common2D.Rect](js-apis-graphics-common2D.md#rect) | 否   | 可选,如果不设置,则无边界框。 |
3536
3537**返回值:**
3538
3539| 类型                  | 说明           |
3540| --------------------- | -------------- |
3541| [TextBlob](#textblob) | TextBlob对象。 |
3542
3543**错误码:**
3544
3545以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
3546
3547| 错误码ID | 错误信息 |
3548| ------- | --------------------------------------------|
3549| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. |
3550
3551**示例:**
3552
3553```ts
3554import { RenderNode } from '@kit.ArkUI';
3555import { common2D, drawing } from '@kit.ArkGraphics2D';
3556class DrawingRenderNode extends RenderNode {
3557  draw(context : DrawContext) {
3558    const canvas = context.canvas;
3559    const font = new drawing.Font();
3560    font.setSize(20);
3561    let runBuffer : Array<drawing.TextBlobRunBuffer> = [
3562      { glyph: 65, positionX: 0, positionY: 0 },
3563      { glyph: 227, positionX: 14.9, positionY: 0 },
3564      { glyph: 283, positionX: 25.84, positionY: 0 },
3565      { glyph: 283, positionX: 30.62, positionY: 0 },
3566      { glyph: 299, positionX: 35.4, positionY: 0}
3567    ];
3568    const textBlob = drawing.TextBlob.makeFromRunBuffer(runBuffer, font, null);
3569    const brush = new drawing.Brush();
3570    brush.setColor({alpha: 255, red: 255, green: 0, blue: 0});
3571    canvas.attachBrush(brush);
3572    canvas.drawTextBlob(textBlob, 20, 20);
3573    canvas.detachBrush();
3574  }
3575}
3576```
3577
3578### bounds
3579
3580bounds(): common2D.Rect
3581
3582获取文字边界框的矩形区域。
3583
3584**系统能力**:SystemCapability.Graphics.Drawing
3585
3586**返回值:**
3587
3588| 类型                                               | 说明                   |
3589| -------------------------------------------------- | ---------------------- |
3590| [common2D.Rect](js-apis-graphics-common2D.md#rect) | 文字边界框的矩形区域。 |
3591
3592**示例:**
3593
3594```ts
3595import { common2D, drawing } from '@kit.ArkGraphics2D';
3596const font = new drawing.Font();
3597font.setSize(20);
3598const textBlob = drawing.TextBlob.makeFromString("drawing", font, drawing.TextEncoding.TEXT_ENCODING_UTF8);
3599let bounds = textBlob.bounds();
3600```
3601
3602## Typeface
3603
3604字体,如宋体、楷体等。
3605
3606### getFamilyName
3607
3608getFamilyName(): string
3609
3610获取字体的系列名称。
3611
3612**系统能力**:SystemCapability.Graphics.Drawing
3613
3614**返回值:**
3615
3616| 类型   | 说明                 |
3617| ------ | -------------------- |
3618| string | 返回字体的系列名称。 |
3619
3620**示例:**
3621
3622```ts
3623import { drawing } from '@kit.ArkGraphics2D';
3624const font = new drawing.Font();
3625let typeface = font.getTypeface();
3626let familyName = typeface.getFamilyName();
3627```
3628
3629### makeFromFile<sup>12+</sup>
3630
3631static makeFromFile(filePath: string): Typeface
3632
3633从指定字体文件,构造字体。
3634
3635**系统能力**:SystemCapability.Graphics.Drawing
3636
3637**参数:**
3638
3639| 参数名         | 类型                                       | 必填   | 说明                  |
3640| ----------- | ---------------------------------------- | ---- | ------------------- |
3641| filePath | string           | 是   | 表示字体资源存放的路径。应用沙箱路径和真实物理路径的对应关系请参考[应用沙箱路径和真实物理路径的对应关系](../../file-management/app-sandbox-directory.md#应用沙箱路径和真实物理路径的对应关系)。 |
3642
3643**返回值:**
3644
3645| 类型   | 说明                 |
3646| ------ | -------------------- |
3647| [Typeface](#typeface) | 返回Typeface对象。 |
3648
3649**错误码:**
3650
3651以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
3652
3653| 错误码ID | 错误信息 |
3654| ------- | --------------------------------------------|
3655| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. |
3656
3657**示例:**
3658
3659```ts
3660import { RenderNode } from '@kit.ArkUI';
3661import { drawing } from '@kit.ArkGraphics2D';
3662class TextRenderNode extends RenderNode {
3663  async draw(context: DrawContext) {
3664    const canvas = context.canvas;
3665    let font = new drawing.Font();
3666    let str = "/system/fonts/HarmonyOS_Sans_Italic.ttf";
3667    const mytypeface = drawing.Typeface.makeFromFile(str);
3668    font.setTypeface(mytypeface);
3669    const textBlob = drawing.TextBlob.makeFromString("Hello World", font, drawing.TextEncoding.TEXT_ENCODING_UTF8);
3670    canvas.drawTextBlob(textBlob, 60, 100);
3671  }
3672}
3673```
3674
3675## Font
3676
3677描述字形绘制时所使用的属性,如大小、字体等。
3678
3679### isSubpixel<sup>12+</sup>
3680
3681isSubpixel(): boolean
3682
3683获取字型是否使用次像素渲染。
3684
3685**系统能力:** SystemCapability.Graphics.Drawing
3686
3687**返回值:**
3688
3689| 类型   | 说明                 |
3690| ------ | -------------------- |
3691| boolean | 返回字型是否使用次像素渲染的结果,true表示使用,false表示不使用。 |
3692
3693**示例:**
3694
3695```ts
3696import {drawing} from '@kit.ArkGraphics2D';
3697let font: drawing.Font = new drawing.Font();
3698font.enableSubpixel(true)
3699console.info("values=" + font.isSubpixel());
3700```
3701
3702### isLinearMetrics<sup>12+</sup>
3703
3704isLinearMetrics(): boolean
3705
3706获取字型是否可以线性缩放。
3707
3708**系统能力:** SystemCapability.Graphics.Drawing
3709
3710**返回值:**
3711
3712| 类型   | 说明                 |
3713| ------ | -------------------- |
3714| boolean | 返回字型是否可线性缩放的结果,true表示可线性缩放,false表示不可线性缩放。 |
3715
3716**示例:**
3717
3718```ts
3719import {drawing} from '@kit.ArkGraphics2D';
3720let font: drawing.Font = new drawing.Font();
3721font.enableLinearMetrics(true)
3722console.info("values=" + font.isLinearMetrics());
3723```
3724
3725### getSkewX<sup>12+</sup>
3726
3727getSkewX(): number
3728
3729获取字型在x轴方向上的倾斜度。
3730
3731**系统能力:** SystemCapability.Graphics.Drawing
3732
3733**返回值:**
3734
3735| 类型   | 说明                 |
3736| ------ | -------------------- |
3737| number | 返回字型在x轴方向上的倾斜度。 |
3738
3739**示例:**
3740
3741```ts
3742import {drawing} from '@kit.ArkGraphics2D';
3743let font: drawing.Font = new drawing.Font();
3744font.setSkewX(-1)
3745console.info("values=" + font.getSkewX());
3746```
3747
3748### isEmbolden<sup>12+</sup>
3749
3750isEmbolden(): boolean
3751
3752获取字型是否设置了粗体效果。
3753
3754**系统能力:** SystemCapability.Graphics.Drawing
3755
3756**返回值:**
3757
3758| 类型   | 说明                 |
3759| ------ | -------------------- |
3760| boolean  | 返回字型是否设置粗体效果的结果,true表示设置了粗体效果,false表示未设置粗体效果。 |
3761
3762**示例:**
3763
3764```ts
3765import {drawing} from '@kit.ArkGraphics2D';
3766let font: drawing.Font = new drawing.Font();
3767font.enableEmbolden(true);
3768console.info("values=" + font.isEmbolden());
3769```
3770
3771### getScaleX<sup>12+</sup>
3772
3773getScaleX(): number
3774
3775获取字型在x轴方向上的缩放比例。
3776
3777**系统能力:** SystemCapability.Graphics.Drawing
3778
3779**返回值:**
3780
3781| 类型   | 说明                 |
3782| ------ | -------------------- |
3783| number  | 返回字型在x轴方向上的缩放比例。 |
3784
3785**示例:**
3786
3787```ts
3788import {drawing} from '@kit.ArkGraphics2D';
3789let font: drawing.Font = new drawing.Font();
3790font.setScaleX(2);
3791console.info("values=" + font.getScaleX());
3792```
3793
3794### getHinting<sup>12+</sup>
3795
3796getHinting(): FontHinting
3797
3798获取字型轮廓效果。
3799
3800**系统能力:** SystemCapability.Graphics.Drawing
3801
3802**返回值:**
3803
3804| 类型   | 说明                 |
3805| ------ | -------------------- |
3806| [FontHinting](#fonthinting12)  | 返回字型轮廓效果。 |
3807
3808**示例:**
3809
3810```ts
3811import {drawing} from '@kit.ArkGraphics2D';
3812let font: drawing.Font = new drawing.Font();
3813console.info("values=" + font.getHinting());
3814```
3815
3816### getEdging<sup>12+</sup>
3817
3818getEdging(): FontEdging
3819
3820获取字型边缘效果。
3821
3822**系统能力:** SystemCapability.Graphics.Drawing
3823
3824**返回值:**
3825
3826| 类型   | 说明                 |
3827| ------ | -------------------- |
3828| [FontEdging](#fontedging12)  | 返回字型边缘效果。 |
3829
3830**示例:**
3831
3832```ts
3833import {drawing} from '@kit.ArkGraphics2D';
3834let font: drawing.Font = new drawing.Font();
3835console.info("values=" + font.getEdging());
3836```
3837
3838### enableSubpixel
3839
3840enableSubpixel(isSubpixel: boolean): void
3841
3842使能字体亚像素级别的文字绘制,显示效果平滑。
3843
3844**系统能力**:SystemCapability.Graphics.Drawing
3845
3846**参数:**
3847
3848| 参数名     | 类型    | 必填 | 说明                                                         |
3849| ---------- | ------- | ---- | ------------------------------------------------------------ |
3850| isSubpixel | boolean | 是   | 表示是否使能字体亚像素级别的文字绘制。true表示使能,false表示不使能。 |
3851
3852**错误码:**
3853
3854以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
3855
3856| 错误码ID | 错误信息 |
3857| ------- | --------------------------------------------|
3858| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. |
3859
3860**示例:**
3861
3862```ts
3863import { drawing } from '@kit.ArkGraphics2D';
3864let font = new drawing.Font();
3865font.enableSubpixel(true);
3866```
3867
3868### enableEmbolden
3869
3870enableEmbolden(isEmbolden: boolean): void
3871
3872使能字体粗体。
3873
3874**系统能力**:SystemCapability.Graphics.Drawing
3875
3876**参数:**
3877
3878| 参数名     | 类型    | 必填 | 说明                                                  |
3879| ---------- | ------- | ---- | ----------------------------------------------------- |
3880| isEmbolden | boolean | 是   | 表示是否使能字体粗体。true表示使能,false表示不使能。 |
3881
3882**错误码:**
3883
3884以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
3885
3886| 错误码ID | 错误信息 |
3887| ------- | --------------------------------------------|
3888| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. |
3889
3890**示例:**
3891
3892```ts
3893import { drawing } from '@kit.ArkGraphics2D';
3894let font = new drawing.Font();
3895font.enableEmbolden(true);
3896```
3897
3898### enableLinearMetrics
3899
3900enableLinearMetrics(isLinearMetrics: boolean): void
3901
3902使能字形的线性缩放。
3903
3904**系统能力**:SystemCapability.Graphics.Drawing
3905
3906**参数:**
3907
3908| 参数名          | 类型    | 必填 | 说明                                                        |
3909| --------------- | ------- | ---- | ----------------------------------------------------------- |
3910| isLinearMetrics | boolean | 是   | 表示是否使能字形的线性缩放。true表示使能,false表示不使能。 |
3911
3912**错误码:**
3913
3914以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
3915
3916| 错误码ID | 错误信息 |
3917| ------- | --------------------------------------------|
3918| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. |
3919
3920**示例:**
3921
3922```ts
3923import { drawing } from '@kit.ArkGraphics2D';
3924let font = new drawing.Font();
3925font.enableLinearMetrics(true);
3926```
3927
3928### setSize
3929
3930setSize(textSize: number): void
3931
3932设置字体大小。
3933
3934**系统能力**:SystemCapability.Graphics.Drawing
3935
3936**参数:**
3937
3938| 参数名   | 类型   | 必填 | 说明             |
3939| -------- | ------ | ---- | ---------------- |
3940| textSize | number | 是   | 字体大小,该参数为浮点数,为负数时字体大小会被置为0。字体大小为0时,绘制的文字不会显示。|
3941
3942**错误码:**
3943
3944以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
3945
3946| 错误码ID | 错误信息 |
3947| ------- | --------------------------------------------|
3948| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types;3.Parameter verification failed. |
3949
3950**示例:**
3951
3952```ts
3953import { drawing } from '@kit.ArkGraphics2D';
3954let font = new drawing.Font();
3955font.setSize(5);
3956```
3957
3958### getSize
3959
3960getSize(): number
3961
3962获取字体大小。
3963
3964**系统能力**:SystemCapability.Graphics.Drawing
3965
3966**返回值:**
3967
3968| 类型   | 说明             |
3969| ------ | ---------------- |
3970| number | 字体大小,浮点数。 |
3971
3972**示例:**
3973
3974```ts
3975import { drawing } from '@kit.ArkGraphics2D';
3976let font = new drawing.Font();
3977font.setSize(5);
3978let fontSize = font.getSize();
3979```
3980
3981### setTypeface
3982
3983setTypeface(typeface: Typeface): void
3984
3985设置字体。
3986
3987**系统能力**:SystemCapability.Graphics.Drawing
3988
3989**参数:**
3990
3991| 参数名   | 类型                  | 必填 | 说明   |
3992| -------- | --------------------- | ---- | ------ |
3993| typeface | [Typeface](#typeface) | 是   | 字体。 |
3994
3995**错误码:**
3996
3997以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
3998
3999| 错误码ID | 错误信息 |
4000| ------- | --------------------------------------------|
4001| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. |
4002
4003**示例:**
4004
4005```ts
4006import { drawing } from '@kit.ArkGraphics2D';
4007let font = new drawing.Font();
4008font.setTypeface(new drawing.Typeface());
4009```
4010
4011### getTypeface
4012
4013getTypeface(): Typeface
4014
4015获取字体。
4016
4017**系统能力**:SystemCapability.Graphics.Drawing
4018
4019**返回值:**
4020
4021| 类型                  | 说明   |
4022| --------------------- | ------ |
4023| [Typeface](#typeface) | 字体。 |
4024
4025**示例:**
4026
4027```ts
4028import { drawing } from '@kit.ArkGraphics2D';
4029let font = new drawing.Font();
4030let typeface = font.getTypeface();
4031```
4032
4033### getMetrics
4034
4035getMetrics(): FontMetrics
4036
4037获取与字体关联的FontMetrics属性。
4038
4039**系统能力**:SystemCapability.Graphics.Drawing
4040
4041**返回值:**
4042
4043| 类型                        | 说明              |
4044| --------------------------- | ----------------- |
4045| [FontMetrics](#fontmetrics) | FontMetrics属性。 |
4046
4047**示例:**
4048
4049```ts
4050import { drawing } from '@kit.ArkGraphics2D';
4051let font = new drawing.Font();
4052let metrics = font.getMetrics();
4053```
4054
4055### measureText
4056
4057measureText(text: string, encoding: TextEncoding): number
4058
4059测量文本的宽度。
4060
4061> **说明:**
4062>
4063> 此接口用于测量原始字符串的文本宽度,若想测量排版后的文本宽度,建议使用[measure.measureText](../apis-arkui/js-apis-measure.md#measuretextmeasuretext)替代。
4064
4065**系统能力**:SystemCapability.Graphics.Drawing
4066
4067**参数:**
4068
4069| 参数名   | 类型                          | 必填 | 说明       |
4070| -------- | ----------------------------- | ---- | ---------- |
4071| text     | string                        | 是   | 文本内容。 |
4072| encoding | [TextEncoding](#textencoding) | 是   | 编码格式。 |
4073
4074**返回值:**
4075
4076| 类型   | 说明             |
4077| ------ | ---------------- |
4078| number | 文本的宽度,浮点数。 |
4079
4080**错误码:**
4081
4082以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
4083
4084| 错误码ID | 错误信息 |
4085| ------- | --------------------------------------------|
4086| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. |
4087
4088**示例:**
4089
4090```ts
4091import { drawing } from '@kit.ArkGraphics2D';
4092let font = new drawing.Font();
4093font.measureText("drawing", drawing.TextEncoding.TEXT_ENCODING_UTF8);
4094```
4095
4096### measureSingleCharacter<sup>12+</sup>
4097
4098measureSingleCharacter(text: string): number
4099
4100用于测量单个字符的宽度。当前字型中的字体不支持待测量字符时,退化到使用系统字体测量字符宽度。
4101
4102**系统能力**:SystemCapability.Graphics.Drawing
4103
4104**参数**
4105
4106| 参数名 | 类型                | 必填 | 说明        |
4107| ------ | ------------------- | ---- | ----------- |
4108| text   | string | 是   | 待测量的单个字符,字符串的长度必须为1。  |
4109
4110**返回值:**
4111
4112| 类型   | 说明             |
4113| ------ | ---------------- |
4114| number | 字符的宽度,浮点数。 |
4115
4116**错误码:**
4117
4118以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
4119
4120| 错误码ID | 错误信息 |
4121| ------- | --------------------------------------------|
4122| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types;3.Parameter verification failed. |
4123
4124**示例**
4125
4126```ts
4127import { RenderNode } from '@kit.ArkUI';
4128import { drawing } from '@kit.ArkGraphics2D';
4129
4130class DrawingRenderNode extends RenderNode {
4131  draw(context : DrawContext) {
4132    const canvas = context.canvas;
4133    const font = new drawing.Font();
4134    font.setSize(20);
4135    let width = font.measureSingleCharacter("你");
4136  }
4137}
4138```
4139
4140### setScaleX<sup>12+</sup>
4141
4142setScaleX(scaleX: number): void
4143
4144用于设置字形对象在x轴上的缩放比例。
4145
4146**系统能力**:SystemCapability.Graphics.Drawing
4147
4148**参数:**
4149
4150| 参数名   | 类型                          | 必填 | 说明       |
4151| -------- | ----------------------------- | ---- | ---------- |
4152| scaleX     | number                      | 是   | 文本在x轴上的缩放比例,该参数为浮点数。 |
4153
4154**错误码:**
4155
4156以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
4157
4158| 错误码ID | 错误信息 |
4159| ------- | --------------------------------------------|
4160| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. |
4161
4162**示例:**
4163
4164```ts
4165import { RenderNode } from '@kit.ArkUI';
4166import { common2D, drawing } from '@kit.ArkGraphics2D';
4167class DrawingRenderNode extends RenderNode {
4168  draw(context : DrawContext) {
4169    const canvas = context.canvas;
4170    const pen = new drawing.Pen();
4171    pen.setStrokeWidth(5);
4172    pen.setColor({alpha: 255, red: 255, green: 0, blue: 0});
4173    canvas.attachPen(pen);
4174    let font = new drawing.Font();
4175    font.setSize(100);
4176    font.setScaleX(2);
4177    const textBlob = drawing.TextBlob.makeFromString("hello", font, drawing.TextEncoding.TEXT_ENCODING_UTF8);
4178    canvas.drawTextBlob(textBlob, 200, 200);
4179  }
4180}
4181```
4182
4183### setSkewX<sup>12+</sup>
4184
4185setSkewX(skewX: number): void
4186
4187用于设置字形对象在x轴上的倾斜比例。
4188
4189**系统能力**:SystemCapability.Graphics.Drawing
4190
4191**参数:**
4192
4193| 参数名   | 类型                          | 必填 | 说明       |
4194| -------- | ----------------------------- | ---- | ---------- |
4195| skewX     | number                      | 是   | 文本在x轴上的倾斜比例,正数表示往左边倾斜,负数表示往右边倾斜,该参数为浮点数。 |
4196
4197**错误码:**
4198
4199以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
4200
4201| 错误码ID | 错误信息 |
4202| ------- | --------------------------------------------|
4203| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. |
4204
4205**示例:**
4206
4207```ts
4208import { RenderNode } from '@kit.ArkUI';
4209import { common2D, drawing } from '@kit.ArkGraphics2D';
4210class DrawingRenderNode extends RenderNode {
4211  draw(context : DrawContext) {
4212    const canvas = context.canvas;
4213    const pen = new drawing.Pen();
4214    pen.setStrokeWidth(5);
4215    pen.setColor({alpha: 255, red: 255, green: 0, blue: 0});
4216    canvas.attachPen(pen);
4217    let font = new drawing.Font();
4218    font.setSize(100);
4219    font.setSkewX(1);
4220    const textBlob = drawing.TextBlob.makeFromString("hello", font, drawing.TextEncoding.TEXT_ENCODING_UTF8);
4221    canvas.drawTextBlob(textBlob, 200, 200);
4222  }
4223}
4224```
4225
4226### setEdging<sup>12+</sup>
4227
4228setEdging(edging: FontEdging): void
4229
4230设置字形边缘效果。
4231
4232**系统能力**:SystemCapability.Graphics.Drawing
4233
4234**参数:**
4235
4236| 参数名   | 类型                          | 必填 | 说明       |
4237| -------- | ----------------------------- | ---- | ---------- |
4238| edging | [FontEdging](#fontedging12) | 是   | 字形边缘效果。 |
4239
4240**错误码:**
4241
4242以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
4243
4244| 错误码ID | 错误信息 |
4245| ------- | --------------------------------------------|
4246| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified;2. Incorrect parameter types; 3. Parameter verification failed. |
4247
4248**示例:**
4249
4250```ts
4251import { drawing } from '@kit.ArkGraphics2D';
4252
4253let font = new drawing.Font();
4254font.setEdging(drawing.FontEdging.SUBPIXEL_ANTI_ALIAS);
4255```
4256
4257### setHinting<sup>12+</sup>
4258
4259setHinting(hinting: FontHinting): void
4260
4261设置字形轮廓效果。
4262
4263**系统能力**:SystemCapability.Graphics.Drawing
4264
4265**参数:**
4266
4267| 参数名   | 类型                          | 必填 | 说明       |
4268| -------- | ----------------------------- | ---- | ---------- |
4269| hinting | [FontHinting](#fonthinting12) | 是   | 字形轮廓效果。 |
4270
4271**错误码:**
4272
4273以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
4274
4275| 错误码ID | 错误信息 |
4276| ------- | --------------------------------------------|
4277| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified;2. Incorrect parameter types; 3. Parameter verification failed. |
4278
4279**示例:**
4280
4281```ts
4282import { drawing } from '@kit.ArkGraphics2D';
4283
4284let font = new drawing.Font();
4285font.setHinting(drawing.FontHinting.FULL);
4286```
4287
4288### countText<sup>12+</sup>
4289
4290countText(text: string): number
4291
4292获取文本所表示的字符数量。
4293
4294**系统能力**:SystemCapability.Graphics.Drawing
4295
4296**参数:**
4297
4298| 参数名   | 类型                          | 必填 | 说明       |
4299| -------- | ----------------------------- | ---- | ---------- |
4300| text     | string                        | 是   | 文本内容。 |
4301
4302**返回值:**
4303
4304| 类型   | 说明             |
4305| ------ | ---------------- |
4306| number | 返回文本所表示的字符数量,整数。 |
4307
4308**错误码:**
4309
4310以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
4311
4312| 错误码ID | 错误信息 |
4313| ------- | --------------------------------------------|
4314| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. |
4315
4316**示例:**
4317
4318```ts
4319import { drawing } from '@kit.ArkGraphics2D';
4320
4321let font = new drawing.Font();
4322let resultNumber: number = font.countText('ABCDE');
4323console.info("count text number: " + resultNumber);
4324```
4325
4326### setBaselineSnap<sup>12+</sup>
4327
4328setBaselineSnap(isBaselineSnap: boolean): void
4329
4330当前画布矩阵轴对齐时,设置字形基线是否与像素对齐。
4331
4332**系统能力**:SystemCapability.Graphics.Drawing
4333
4334**参数:**
4335
4336| 参数名          | 类型    | 必填 | 说明                                       |
4337| --------------- | ------- | ---- | ---------------------------------------- |
4338| isBaselineSnap | boolean | 是   | 指示字形基线是否和像素对齐,true表示对齐,false表示不对齐。 |
4339
4340**错误码:**
4341
4342以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
4343
4344| 错误码ID | 错误信息 |
4345| ------- | --------------------------------------------|
4346| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. |
4347
4348**示例:**
4349
4350```ts
4351import { drawing } from '@kit.ArkGraphics2D';
4352
4353let font : drawing.Font = new drawing.Font();
4354font.setBaselineSnap(true);
4355console.info("drawing font isBaselineSnap: " + font.isBaselineSnap());
4356```
4357
4358### isBaselineSnap()<sup>12+</sup>
4359
4360isBaselineSnap(): boolean
4361
4362当前画布矩阵轴对齐时,获取字形基线是否与像素对齐的结果。
4363
4364**系统能力**:SystemCapability.Graphics.Drawing
4365
4366**返回值:**
4367
4368| 类型   | 说明             |
4369| ------ | ---------------- |
4370| boolean | 返回字形基线是否与像素对齐,true为对齐,false为没有对齐。 |
4371
4372**示例:**
4373
4374```ts
4375import { drawing } from '@kit.ArkGraphics2D';
4376
4377let font : drawing.Font = new drawing.Font();
4378font.setTypeface(new drawing.Typeface());
4379font.setBaselineSnap(true);
4380console.info("drawing font isBaselineSnap: " + font.isBaselineSnap());
4381```
4382
4383### setEmbeddedBitmaps<sup>12+</sup>
4384
4385setEmbeddedBitmaps(isEmbeddedBitmaps: boolean): void
4386
4387设置字形是否转换成位图处理。
4388
4389**系统能力**:SystemCapability.Graphics.Drawing
4390
4391**参数:**
4392
4393| 参数名   | 类型   | 必填 | 说明             |
4394| -------- | ------ | ---- | ---------------- |
4395| isEmbeddedBitmaps | boolean | 是   | 设置字形是否转换成位图处理,true表示转换成位图处理,false表示不转换成位图处理。 |
4396
4397**错误码:**
4398
4399以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
4400
4401| 错误码ID | 错误信息 |
4402| ------- | --------------------------------------------|
4403| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. |
4404
4405**示例:**
4406
4407```ts
4408import { drawing } from '@kit.ArkGraphics2D';
4409
4410let font : drawing.Font = new drawing.Font();
4411font.setTypeface(new drawing.Typeface());
4412font.setEmbeddedBitmaps(false);
4413console.info("draw isEmbeddedBitmaps: " + font.isEmbeddedBitmaps());
4414```
4415
4416### isEmbeddedBitmaps()<sup>12+</sup>
4417
4418isEmbeddedBitmaps(): boolean
4419
4420获取字形是否转换成位图处理的结果。
4421
4422**系统能力**:SystemCapability.Graphics.Drawing
4423
4424**返回值:**
4425
4426| 类型   | 说明             |
4427| ------ | ---------------- |
4428| boolean | 返回字形是否转换成位图处理结果,true表示转换成位图处理,false表示不转换成位图处理。 |
4429
4430**示例:**
4431
4432```ts
4433import { drawing } from '@kit.ArkGraphics2D';
4434
4435let font : drawing.Font = new drawing.Font();
4436font.setTypeface(new drawing.Typeface());
4437font.setEmbeddedBitmaps(true);
4438console.info("draw isEmbeddedBitmaps: " + font.isEmbeddedBitmaps());
4439```
4440
4441### setForceAutoHinting<sup>12+</sup>
4442
4443setForceAutoHinting(isForceAutoHinting: boolean): void
4444
4445设置是否自动调整字形轮廓。
4446
4447**系统能力**:SystemCapability.Graphics.Drawing
4448
4449**参数:**
4450
4451| 参数名   | 类型   | 必填 | 说明             |
4452| -------- | ------ | ---- | ---------------- |
4453| isForceAutoHinting | boolean | 是   | 是否自动调整字形轮廓,true为自动调整,false为不自动调整。 |
4454
4455**错误码:**
4456
4457以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
4458
4459| 错误码ID | 错误信息 |
4460| ------- | --------------------------------------------|
4461| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. |
4462
4463**示例:**
4464
4465```ts
4466import { drawing } from '@kit.ArkGraphics2D';
4467
4468let font : drawing.Font = new drawing.Font();
4469font.setTypeface(new drawing.Typeface());
4470font.setForceAutoHinting(false);
4471console.info("drawing isForceAutoHinting:  " + font.isForceAutoHinting());
4472```
4473
4474### isForceAutoHinting<sup>12+</sup>
4475
4476isForceAutoHinting(): boolean
4477
4478获取字形轮廓是否自动调整的结果。
4479
4480**系统能力**:SystemCapability.Graphics.Drawing
4481
4482**返回值:**
4483
4484| 类型   | 说明             |
4485| ------ | ---------------- |
4486| boolean | 返回字形轮廓是否自动调整,true为自动调整,false为不自动调整。 |
4487
4488**示例:**
4489
4490```ts
4491import { drawing } from '@kit.ArkGraphics2D';
4492
4493let font : drawing.Font = new drawing.Font();
4494font.setTypeface(new drawing.Typeface());
4495font.setForceAutoHinting(false);
4496console.info("drawing isForceAutoHinting:  " + font.isForceAutoHinting());
4497```
4498
4499### getWidths<sup>12+</sup>
4500
4501getWidths(glyphs: Array\<number>): Array\<number>
4502
4503获取字形数组中每个字形对应的宽度。
4504
4505**系统能力**:SystemCapability.Graphics.Drawing
4506
4507**参数:**
4508
4509| 参数名   | 类型                  | 必填 | 说明   |
4510| -------- | --------------------- | ---- | ------ |
4511| glyphs | Array\<number> | 是   | 字形索引数组,可由[textToGlyphs](#texttoglyphs12)生成。 |
4512
4513**返回值:**
4514
4515| 类型   | 说明             |
4516| ------ | ---------------- |
4517| Array\<number> | 返回得到的字形宽度数组。 |
4518
4519**错误码:**
4520
4521以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
4522
4523| 错误码ID | 错误信息 |
4524| ------- | --------------------------------------------|
4525| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. |
4526
4527**示例:**
4528
4529```ts
4530import { drawing } from '@kit.ArkGraphics2D';
4531
4532let font: drawing.Font = new drawing.Font();
4533let text: string = 'hello world';
4534let glyphs: number[] = font.textToGlyphs(text);
4535let fontWidths: Array<number> = font.getWidths(glyphs);
4536for (let index = 0; index < fontWidths.length; index++) {
4537  console.info("get fontWidths[", index, "]:", fontWidths[index]);
4538}
4539```
4540
4541### textToGlyphs<sup>12+</sup>
4542
4543textToGlyphs(text: string, glyphCount?: number): Array\<number>
4544
4545将文本转换为字形索引。
4546
4547**系统能力**:SystemCapability.Graphics.Drawing
4548
4549**参数:**
4550
4551| 参数名   | 类型                          | 必填 | 说明       |
4552| -------- | ----------------------------- | ---- | ---------- |
4553| text     | string                        | 是   | 文本字符串。 |
4554| glyphCount | number | 否   | 文本表示的字符数量,必须与[countText](#counttext12)获取的值相等,默认为text的字符数量,该参数为整数。 |
4555
4556**返回值:**
4557
4558| 类型   | 说明             |
4559| ------ | ---------------- |
4560| Array\<number> | 返回转换得到的字形索引数组。 |
4561
4562**错误码:**
4563
4564以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
4565
4566| 错误码ID | 错误信息 |
4567| ------- | --------------------------------------------|
4568| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. |
4569
4570**示例:**
4571
4572```ts
4573import { drawing } from '@kit.ArkGraphics2D';
4574
4575let font : drawing.Font = new drawing.Font();
4576let text : string = 'hello world';
4577let glyphs : number[] = font.textToGlyphs(text);
4578console.info("drawing text toglyphs OnTestFunction num =  " + glyphs.length );
4579```
4580
4581## FontMetricsFlags<sup>12+</sup>
4582
4583字体度量标志枚举,指示字体度量中的各字段数据是否有效。
4584
4585**系统能力**:SystemCapability.Graphics.Drawing
4586
4587| 名称                          | 值        | 说明                           |
4588| ----------------------------- | --------- | ------------------------------ |
4589| UNDERLINE_THICKNESS_VALID     | 1 << 0    | 表示[FontMetrics](#fontmetrics)结构中的underlineThickness(下划线厚度)字有效。    |
4590| UNDERLINE_POSITION_VALID      | 1 << 1    | 表示[FontMetrics](#fontmetrics)结构中的underlinePosition(下划线位置)字段有效。  |
4591| STRIKETHROUGH_THICKNESS_VALID | 1 << 2    | 表示[FontMetrics](#fontmetrics)结构中strikethroughThickness(删除线厚度)是有效的。|
4592| STRIKETHROUGH_POSITION_VALID  | 1 << 3    | 表示[FontMetrics](#fontmetrics)结构中strikethroughPosition(删除线位置)字段有效。  |
4593| BOUNDS_INVALID                | 1 << 4    | 表示[FontMetrics](#fontmetrics)结构中的边界度量值(如top, bottom, xMin, xMax)无效。  |
4594
4595## FontMetrics
4596
4597描述字形大小和布局的属性信息,同一种字体中的字符属性大致相同。
4598
4599**系统能力:** SystemCapability.Graphics.Drawing
4600
4601| 名称    | 类型   | 只读 | 可选 | 说明                                                         |
4602| ------- | ------ | ---- | ---- | ------------------------------------------------------------ |
4603| flags<sup>12+</sup>   | [FontMetricsFlags](#fontmetricsflags12) | 是   | 是   | 表明哪些字体度量标志有效。        |
4604| top     | number | 是   | 否   | 文字最高处到基线之间的最大距离,浮点数。                         |
4605| ascent  | number | 是   | 否   | 文字最高处到基线之间的距离,浮点数。                             |
4606| descent | number | 是   | 否   | 基线到文字最低处之间的距离,浮点数。                             |
4607| bottom  | number | 是   | 否   | 基线到文字最低处之间的最大距离,浮点数。                         |
4608| leading | number | 是   | 否   | 行间距,从上一行文字descent到下一行文字ascent之间的距离,浮点数。 |
4609| avgCharWidth<sup>12+</sup> | number | 是   | 是   | 平均字符宽度。                             |
4610| maxCharWidth<sup>12+</sup> | number | 是   | 是   | 最大字符宽度。                             |
4611| xMin<sup>12+</sup> | number | 是    | 是   | 字体中任意字形边界框最左边沿到原点的水平距离,这个值往往小于零,意味着字形在水平方向上的最小边界。                |
4612| xMax<sup>12+</sup> | number | 是   | 是   | 字体中任意字形边界框最右边沿到原点的水平距离,此值多为正数,指示了字形在水平方向上的最大延伸范围。        |
4613| xHeight<sup>12+</sup> | number | 是   | 是   | 小写字母x的高度,通常为负值。                     |
4614| capHeight<sup>12+</sup> | number | 是   | 是   | 大写字母的高度,通常为负值。                      |
4615| underlineThickness<sup>12+</sup> | number | 是   | 是   | 下划线的厚度。                                          |
4616| underlinePosition<sup>12+</sup>  | number | 是   | 是   | 文本基线到下划线顶部的垂直距离,通常是正数。             |
4617| strikethroughThickness<sup>12+</sup>  | number | 是   | 是   | 文本删除线的厚度,即贯穿文本字符的水平线的宽度。    |
4618| strikethroughPosition<sup>12+</sup>  | number | 是   | 是   | 文本基线到底部删除线的垂直距离,通常为负值。         |
4619
4620## ColorFilter
4621
4622颜色滤波器。
4623
4624### createBlendModeColorFilter
4625
4626createBlendModeColorFilter(color: common2D.Color, mode: BlendMode) : ColorFilter
4627
4628使用指定的颜色和混合模式创建颜色滤波器。
4629
4630**系统能力:** SystemCapability.Graphics.Drawing
4631
4632**参数:**
4633
4634| 参数名 | 类型                                                 | 必填 | 说明             |
4635| ------ | ---------------------------------------------------- | ---- | ---------------- |
4636| color  | [common2D.Color](js-apis-graphics-common2D.md#color) | 是   | ARGB格式的颜色,每个颜色通道是0到255之间的整数。 |
4637| mode   | [BlendMode](#blendmode)                              | 是   | 颜色的混合模式。 |
4638
4639**返回值:**
4640
4641| 类型                        | 说明               |
4642| --------------------------- | ------------------ |
4643| [ColorFilter](#colorfilter) | 返回一个颜色滤波器 |
4644
4645**错误码:**
4646
4647以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
4648
4649| 错误码ID | 错误信息 |
4650| ------- | --------------------------------------------|
4651| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types;3.Parameter verification failed. |
4652
4653**示例:**
4654
4655```ts
4656import { common2D, drawing } from '@kit.ArkGraphics2D';
4657const color : common2D.Color = { alpha: 255, red: 255, green: 0, blue: 0 };
4658let colorFilter = drawing.ColorFilter.createBlendModeColorFilter(color, drawing.BlendMode.SRC);
4659```
4660
4661### createComposeColorFilter
4662
4663createComposeColorFilter(outer: ColorFilter, inner: ColorFilter) : ColorFilter
4664
4665创建一个先应用inner进行滤波,再应用outer进行滤波的组合颜色滤波器。
4666
4667**系统能力:** SystemCapability.Graphics.Drawing
4668
4669**参数:**
4670
4671| 参数名 | 类型                        | 必填 | 说明                             |
4672| ------ | --------------------------- | ---- | -------------------------------- |
4673| outer  | [ColorFilter](#colorfilter) | 是   | 组合滤波器中后生效的颜色滤波器。 |
4674| inner  | [ColorFilter](#colorfilter) | 是   | 组合滤波器中先生效的颜色滤波器。 |
4675
4676**返回值:**
4677
4678| 类型                        | 说明               |
4679| --------------------------- | ------------------ |
4680| [ColorFilter](#colorfilter) | 返回一个颜色滤波器 |
4681
4682**错误码:**
4683
4684以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
4685
4686| 错误码ID | 错误信息 |
4687| ------- | --------------------------------------------|
4688| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. |
4689
4690**示例:**
4691
4692```ts
4693import { common2D, drawing } from '@kit.ArkGraphics2D';
4694const color : common2D.Color = { alpha: 255, red: 255, green: 0, blue: 0 };
4695let colorFilter1 = drawing.ColorFilter.createBlendModeColorFilter(color, drawing.BlendMode.SRC);
4696let colorFilter2 = drawing.ColorFilter.createBlendModeColorFilter(color, drawing.BlendMode.DST);
4697let colorFilter = drawing.ColorFilter.createComposeColorFilter(colorFilter1, colorFilter2);
4698```
4699
4700### createLinearToSRGBGamma
4701
4702createLinearToSRGBGamma() : ColorFilter
4703
4704创建一个从线性颜色空间转换到SRGB颜色空间的颜色滤波器。
4705
4706**系统能力:** SystemCapability.Graphics.Drawing
4707
4708**返回值:**
4709
4710| 类型                        | 说明               |
4711| --------------------------- | ------------------ |
4712| [ColorFilter](#colorfilter) | 返回一个颜色滤波器 |
4713
4714**示例:**
4715
4716```ts
4717import { drawing } from '@kit.ArkGraphics2D';
4718let colorFilter = drawing.ColorFilter.createLinearToSRGBGamma();
4719```
4720
4721### createSRGBGammaToLinear
4722
4723createSRGBGammaToLinear() : ColorFilter
4724
4725创建一个从SRGB颜色空间转换到线性颜色空间的颜色滤波器。
4726
4727**系统能力:** SystemCapability.Graphics.Drawing
4728
4729**返回值:**
4730
4731| 类型                        | 说明               |
4732| --------------------------- | ------------------ |
4733| [ColorFilter](#colorfilter) | 返回一个颜色滤波器 |
4734
4735**示例:**
4736
4737```ts
4738import { drawing } from '@kit.ArkGraphics2D';
4739let colorFilter = drawing.ColorFilter.createSRGBGammaToLinear();
4740```
4741
4742### createLumaColorFilter
4743
4744createLumaColorFilter() : ColorFilter
4745
4746创建一个将亮度与透明度相乘的颜色滤波器。
4747
4748**系统能力:** SystemCapability.Graphics.Drawing
4749
4750**返回值:**
4751
4752| 类型                        | 说明               |
4753| --------------------------- | ------------------ |
4754| [ColorFilter](#colorfilter) | 返回一个颜色滤波器 |
4755
4756**示例:**
4757
4758```ts
4759import { drawing } from '@kit.ArkGraphics2D';
4760let colorFilter = drawing.ColorFilter.createLumaColorFilter();
4761```
4762
4763### createMatrixColorFilter<sup>12+</sup>
4764
4765static createMatrixColorFilter(matrix: Array\<number>): ColorFilter
4766
4767创建颜色滤波器,通过4x5颜色矩阵变换颜色。
4768
4769**系统能力:** SystemCapability.Graphics.Drawing
4770
4771**参数:**
4772
4773| 参数名   | 类型                                         | 必填 | 说明                            |
4774| -------- | -------------------------------------------- | ---- | ------------------------------- |
4775| matrix | Array\<number> | 是   | 长度为20的数组,表示用于颜色变换的4*5矩阵。                 |
4776
4777**返回值:**
4778
4779| 类型                        | 说明               |
4780| --------------------------- | ------------------ |
4781| [ColorFilter](#colorfilter) | 返回一个颜色滤波器。 |
4782
4783**错误码:**
4784
4785以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
4786
4787| 错误码ID | 错误信息 |
4788| ------- | --------------------------------------------|
4789| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types;3.Parameter verification failed. |
4790
4791**示例:**
4792
4793```ts
4794import { drawing } from '@kit.ArkGraphics2D';
4795let matrix: Array<number> = [
4796  1, 0, 0, 0, 0,
4797  0, 1, 0, 0, 0,
4798  0, 0, 100, 0, 0,
4799  0, 0, 0, 1, 0
4800];
4801let colorFilter = drawing.ColorFilter.createMatrixColorFilter(matrix);
4802```
4803
4804## JoinStyle<sup>12+</sup>
4805
4806定义线条转角样式的枚举,即画笔在绘制折线段时,在折线转角处的样式。
4807
4808**系统能力:** SystemCapability.Graphics.Drawing
4809
4810| 名称        | 值   | 说明                                                         | 示意图   |
4811| ----------- | ---- | ----------------------------------------------------------- | -------- |
4812| MITER_JOIN | 0    | 转角类型为尖角,如果折线角度比较小,则尖角会很长,需要使用限制值(miter limit)进行限制。 | ![MITER_JOIN](./figures/zh-ch_image_JoinStyle_Miter_Join.png) |
4813| ROUND_JOIN | 1    | 转角类型为圆头。 | ![ROUND_JOIN](./figures/zh-ch_image_JoinStyle_Round_Join.png) |
4814| BEVEL_JOIN | 2    | 转角类型为平头。 | ![BEVEL_JOIN](./figures/zh-ch_image_JoinStyle_Bevel_Join.png) |
4815
4816## CapStyle<sup>12+</sup>
4817
4818定义线帽样式的枚举,即画笔在绘制线段时,在线段头尾端点的样式。
4819
4820**系统能力:** SystemCapability.Graphics.Drawing
4821
4822| 名称        | 值   | 说明                                                         | 示意图   |
4823| ---------- | ---- | ----------------------------------------------------------- | -------- |
4824| FLAT_CAP   | 0    | 没有线帽样式,线条头尾端点处横切。 | ![FLAT_CAP](./figures/zh-ch_image_CapStyle_Flat_Cap.png) |
4825| SQUARE_CAP | 1    | 线帽的样式为方框,线条的头尾端点处多出一个方框,方框宽度和线段一样宽,高度是线段宽度的一半。 | ![SQUARE_CAP](./figures/zh-ch_image_CapStyle_Square_Cap.png) |
4826| ROUND_CAP  | 2    | 线帽的样式为圆弧,线条的头尾端点处多出一个半圆弧,半圆的直径与线段宽度一致。 | ![ROUND_CAP](./figures/zh-ch_image_CapStyle_Round_Cap.png) |
4827
4828## BlurType<sup>12+</sup>
4829
4830定义蒙版滤镜模糊中操作类型的枚举。
4831
4832**系统能力:** SystemCapability.Graphics.Drawing
4833
4834| 名称   | 值 | 说明               | 示意图   |
4835| ------ | - | ------------------ | -------- |
4836| NORMAL | 0 | 内外模糊。          | ![NORMAL](./figures/zh-ch_image_BlueType_Normal.png) |
4837| SOLID  | 1 | 内部实体,外部模糊。 | ![SOLID](./figures/zh-ch_image_BlueType_Solid.png) |
4838| OUTER  | 2 | 内部空白,外部模糊。 | ![OUTER](./figures/zh-ch_image_BlueType_Outer.png) |
4839| INNER  | 3 | 内部模糊,外部空白。 | ![INNER](./figures/zh-ch_image_BlueType_Inner.png) |
4840
4841## SamplingOptions<sup>12+</sup>
4842
4843采样选项对象。
4844
4845### constructor<sup>12+</sup>
4846
4847constructor()
4848
4849用于构造一个新的采样选项对象。
4850
4851**系统能力:** SystemCapability.Graphics.Drawing
4852
4853**示例:**
4854
4855```ts
4856import { RenderNode } from '@kit.ArkUI';
4857import { common2D, drawing } from '@kit.ArkGraphics2D';
4858class DrawingRenderNode extends RenderNode {
4859  draw(context : DrawContext) {
4860    const canvas = context.canvas;
4861    const pen = new drawing.Pen();
4862    let samplingOptions = new drawing.SamplingOptions();
4863  }
4864}
4865```
4866
4867### constructor<sup>12+</sup>
4868
4869constructor(filterMode: FilterMode)
4870
4871用于构造一个新的采样选项对象。
4872
4873**系统能力:** SystemCapability.Graphics.Drawing
4874
4875**参数:**
4876
4877| 参数名     | 类型                   | 必填 | 说明                                 |
4878| ---------- | --------------------- | ---- | ----------------------------------- |
4879| filterMode | [FilterMode](#filtermode12)    | 是   | 过滤模式。                    |
4880
4881**错误码:**
4882
4883以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
4884
4885| 错误码ID | 错误信息 |
4886| ------- | --------------------------------------------|
4887| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. |
4888
4889**示例:**
4890
4891```ts
4892import { RenderNode } from '@kit.ArkUI';
4893import { common2D, drawing } from '@kit.ArkGraphics2D';
4894class DrawingRenderNode extends RenderNode {
4895  draw(context : DrawContext) {
4896    const canvas = context.canvas;
4897    let samplingOptions = new drawing.SamplingOptions(drawing.FilterMode.FILTER_MODE_NEAREST);
4898  }
4899}
4900```
4901
4902## Lattice<sup>12+</sup>
4903
4904矩形网格对象。该对象用于将图片按照矩形网格进行划分。
4905
4906### createImageLattice<sup>12+</sup>
4907
4908static 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
4909
4910创建矩形网格对象。将图像划分为矩形网格,同时处于偶数列和偶数行上的网格是固定的,如果目标网格足够大,则这些固定网格以其原始大小进行绘制。如果目标网格太小,无法容纳这些固定网格,则所有固定网格都会按比例缩小以适应目标网格。其余网格将进行缩放,来适应剩余的空间。
4911
4912**系统能力:** SystemCapability.Graphics.Drawing
4913
4914**参数:**
4915
4916| 参数名       | 类型                                                                | 必填 | 说明                                                                               |
4917| ------------ | ------------------------------------------------------------------ | ---- | --------------------------------------------------------------------------------- |
4918| xDivs        | Array\<number>                                                     | 是   | 用于划分图像的X坐标值数组。该参数为整数。                                             |
4919| yDivs        | Array\<number>                                                     | 是   | 用于划分图像的Y坐标值数组。该参数为整数。                                             |
4920| fXCount      | number                                                             | 是   | X坐标值数组的大小。基于功能和性能的考虑,取值范围为[0, 5]。                            |
4921| fYCount      | number                                                             | 是   | Y坐标值数组的大小。基于功能和性能的考虑,取值范围为[0, 5]。                            |
4922| fBounds      | [common2D.Rect](js-apis-graphics-common2D.md#rect)\|null           | 否   | 可选,要绘制的原始边界矩形,矩形参数须为整数,默认为原始图像矩形大小(若矩形参数为小数,会直接舍弃小数部分,转为整数)。 |
4923| fRectTypes   | Array\<[RectType](#recttype12)>\|null                              | 否   | 可选,填充网格类型的数组,默认为空。如果设置,大小必须为(fXCount + 1) * (fYCount + 1)。 |
4924| fColors      | Array\<[common2D.Color](js-apis-graphics-common2D.md#color)>\|null | 否   | 可选,填充网格的颜色数组,默认为空。如果设置,大小必须为(fXCount + 1) * (fYCount + 1)。 |
4925
4926**返回值:**
4927
4928| 类型                       | 说明                                |
4929| ------------------------- | ----------------------------------- |
4930| [Lattice](#lattice12)     | 返回创建的矩形网格对象。              |
4931
4932**错误码:**
4933
4934以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
4935
4936| 错误码ID | 错误信息 |
4937| ------- | --------------------------------------------|
4938| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types;3.Parameter verification failed. |
4939
4940**示例:**
4941
4942```ts
4943import { RenderNode } from '@kit.ArkUI';
4944import { drawing } from '@kit.ArkGraphics2D';
4945class DrawingRenderNode extends RenderNode {
4946  draw(context : DrawContext) {
4947    let xDivs : Array<number> = [1, 2, 4];
4948    let yDivs : Array<number> = [1, 2, 4];
4949    let lattice = drawing.Lattice.createImageLattice(xDivs, yDivs, 3, 3); // 划分(3+1)*(3+1)的网格,下图蓝色填充矩形为固定网格
4950  }
4951}
4952```
4953![zh-ch_Lattice.png](figures/zh-ch_Lattice.png)
4954
4955## RectType<sup>12+</sup>
4956
4957定义填充网格的矩形类型的枚举。仅在[Lattice](#lattice12)中使用。
4958
4959**系统能力:** SystemCapability.Graphics.Drawing
4960
4961| 名称         | 值   | 说明                                                             |
4962| ------------ | ---- | --------------------------------------------------------------- |
4963| DEFAULT      | 0    | 将图像绘制到矩形网格中。                                          |
4964| TRANSPARENT  | 1    | 将矩形网格设置为透明的。                                          |
4965| FIXEDCOLOR   | 2    | 将[Lattice](#lattice12)中fColors数组的颜色绘制到矩形网格中。       |
4966
4967## MaskFilter<sup>12+</sup>
4968
4969蒙版滤镜对象。
4970
4971### createBlurMaskFilter<sup>12+</sup>
4972
4973static createBlurMaskFilter(blurType: BlurType, sigma: number): MaskFilter
4974
4975用于创建具有模糊效果的蒙版滤镜。
4976
4977**系统能力:** SystemCapability.Graphics.Drawing
4978
4979**参数:**
4980
4981| 参数名     | 类型                   | 必填 | 说明                                 |
4982| ---------- | --------------------- | ---- | ----------------------------------- |
4983| blurType   | [BlurType](#blurtype12) | 是   | 模糊类型。                           |
4984| sigma      | number                | 是   | 要应用的高斯模糊的标准偏差,必须为大于0的浮点数。 |
4985
4986**返回值:**
4987
4988| 类型                      | 说明                |
4989| ------------------------- | ------------------ |
4990| [MaskFilter](#maskfilter12) | 返回创建的蒙版滤镜对象。 |
4991
4992**错误码:**
4993
4994以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
4995
4996| 错误码ID | 错误信息 |
4997| ------- | --------------------------------------------|
4998| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types;3.Parameter verification failed. |
4999
5000**示例:**
5001
5002```ts
5003import { RenderNode } from '@kit.ArkUI';
5004import { common2D, drawing } from '@kit.ArkGraphics2D';
5005class DrawingRenderNode extends RenderNode {
5006  draw(context : DrawContext) {
5007    const canvas = context.canvas;
5008    let maskFilter = drawing.MaskFilter.createBlurMaskFilter(drawing.BlurType.OUTER, 10);
5009  }
5010}
5011```
5012
5013## PathEffect<sup>12+</sup>
5014
5015路径效果对象。
5016
5017### createDashPathEffect<sup>12+</sup>
5018
5019static createDashPathEffect(intervals:  Array\<number>, phase: number): PathEffect
5020
5021用于创建将路径变为虚线的路径效果对象。
5022
5023**系统能力:** SystemCapability.Graphics.Drawing
5024
5025**参数:**
5026
5027| 参数名     | 类型           | 必填    | 说明                                               |
5028| ---------- | ------------- | ------- | -------------------------------------------------- |
5029| intervals  | Array\<number> | 是      | 表示虚线的ON和OFF长度的数组,数组个数必须是偶数,且>=2,该参数为正整数。|
5030| phase      | number         | 是      | 绘制时的偏移量,该参数为浮点数。                                     |
5031
5032**返回值:**
5033
5034| 类型                      | 说明                   |
5035| ------------------------- | --------------------- |
5036| [PathEffect](#patheffect12) | 返回创建的路径效果对象。 |
5037
5038**错误码:**
5039
5040以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
5041
5042| 错误码ID | 错误信息 |
5043| ------- | --------------------------------------------|
5044| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types;3.Parameter verification failed. |
5045
5046**示例:**
5047
5048```ts
5049import { RenderNode } from '@kit.ArkUI';
5050import { common2D, drawing } from '@kit.ArkGraphics2D';
5051class DrawingRenderNode extends RenderNode {
5052  draw(context : DrawContext) {
5053    const canvas = context.canvas;
5054    let intervals = [10, 5];
5055    let effect = drawing.PathEffect.createDashPathEffect(intervals, 5);
5056  }
5057}
5058```
5059
5060### createCornerPathEffect<sup>12+</sup>
5061
5062static createCornerPathEffect(radius: number): PathEffect
5063
5064用于创建将路径的夹角变成指定半径的圆角的路径效果对象。
5065
5066**系统能力:** SystemCapability.Graphics.Drawing
5067
5068**参数:**
5069
5070| 参数名     | 类型           | 必填    | 说明                                               |
5071| ---------- | ------------- | ------- | -------------------------------------------------- |
5072| radius     | number        | 是      | 圆角的半径,必须大于0,该参数为浮点数。                |
5073
5074**返回值:**
5075
5076| 类型                      | 说明                   |
5077| ------------------------- | --------------------- |
5078| [PathEffect](#patheffect12) | 返回创建的路径效果对象。 |
5079
5080**错误码:**
5081
5082以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
5083
5084| 错误码ID | 错误信息 |
5085| ------- | --------------------------------------------|
5086| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types;3.Parameter verification failed. |
5087
5088**示例:**
5089
5090```ts
5091import { RenderNode } from '@kit.ArkUI';
5092import { drawing } from '@kit.ArkGraphics2D';
5093class DrawingRenderNode extends RenderNode {
5094  draw(context : DrawContext) {
5095    const canvas = context.canvas;
5096    let effect = drawing.PathEffect.createCornerPathEffect(30);
5097  }
5098}
5099```
5100
5101## ShadowLayer<sup>12+</sup>
5102
5103阴影层对象。
5104
5105### create<sup>12+</sup>
5106
5107static create(blurRadius: number, x: number, y: number, color: common2D.Color): ShadowLayer
5108
5109用于创建一个阴影层对象。
5110
5111**系统能力:** SystemCapability.Graphics.Drawing
5112
5113**参数:**
5114
5115| 参数名     | 类型      | 必填 | 说明                                 |
5116| ---------- | -------- | ---- | ----------------------------------- |
5117| blurRadius  | number   | 是   | 阴影的半径,必须为大于零的浮点数。     |
5118| x           | number   | 是   | x轴上的偏移点,该参数为浮点数。        |
5119| y           | number   | 是   | Y轴上的偏移点,该参数为浮点数。        |
5120| color       | [common2D.Color](js-apis-graphics-common2D.md#color) | 是   | ARGB格式的颜色,每个颜色通道是0到255之间的整数。 |
5121
5122**返回值:**
5123
5124| 类型                        | 说明                  |
5125| --------------------------- | -------------------- |
5126| [ShadowLayer](#shadowlayer12) | 返回创建的阴影层对象。 |
5127
5128**错误码:**
5129
5130以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
5131
5132| 错误码ID | 错误信息 |
5133| ------- | --------------------------------------------|
5134| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types;3.Parameter verification failed. |
5135
5136**示例:**
5137
5138```ts
5139import { RenderNode } from '@kit.ArkUI';
5140import { common2D, drawing } from '@kit.ArkGraphics2D';
5141class DrawingRenderNode extends RenderNode {
5142  draw(context : DrawContext) {
5143    const canvas = context.canvas;
5144    let color : common2D.Color = {alpha: 0xFF, red: 0x00, green: 0xFF, blue: 0x00};
5145    let shadowLayer = drawing.ShadowLayer.create(3, -3, 3, color);
5146  }
5147}
5148```
5149
5150## Pen
5151
5152画笔对象,描述所绘制图形形状的轮廓信息。
5153
5154### constructor<sup>12+</sup>
5155
5156constructor()
5157
5158构造一个新的画笔对象。
5159
5160**系统能力:** SystemCapability.Graphics.Drawing
5161
5162**示例:**
5163
5164```ts
5165import { drawing } from '@kit.ArkGraphics2D';
5166
5167const pen = new drawing.Pen();
5168```
5169
5170### constructor<sup>12+</sup>
5171
5172constructor(pen: Pen)
5173
5174复制构造一个新的画笔对象。
5175
5176**系统能力:** SystemCapability.Graphics.Drawing
5177
5178**参数:**
5179
5180| 参数名 | 类型        | 必填 | 说明              |
5181| ------| ----------- | ---- | ---------------- |
5182| pen     | [Pen](#pen) | 是   | 待复制的画笔对象。 |
5183
5184**错误码:**
5185
5186以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
5187
5188| 错误码ID | 错误信息 |
5189| ------- | --------------------------------------------|
5190| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. |
5191
5192**示例:**
5193
5194```ts
5195import { common2D, drawing } from '@kit.ArkGraphics2D';
5196
5197const pen = new drawing.Pen();
5198const penColor: common2D.Color = { alpha: 255, red: 0, green: 255, blue: 0 };
5199pen.setColor(penColor);
5200pen.setStrokeWidth(10);
5201const newPen = new drawing.Pen(pen);
5202```
5203
5204### setMiterLimit<sup>12+</sup>
5205
5206setMiterLimit(miter: number): void
5207
5208设置折线尖角长度与线宽的最大比值,当画笔绘制一条折线,并且[JoinStyle](#joinstyle12)为MITER_JOIN时,若尖角长度与线宽的比值大于限制值,则该折角使用BEVEL_JOIN绘制。
5209
5210**系统能力:** SystemCapability.Graphics.Drawing
5211
5212**参数:**
5213
5214| 参数名 | 类型    | 必填 | 说明              |
5215| ------ | ------ | ---- | ---------------- |
5216| miter  | number | 是   | 折线尖角长度与线宽的最大比值,负数在绘制时会被视作4.0处理,非负数正常生效,该参数为浮点数。 |
5217
5218**错误码:**
5219
5220以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
5221
5222| 错误码ID | 错误信息 |
5223| ------- | --------------------------------------------|
5224| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. |
5225
5226**示例:**
5227
5228```ts
5229import { drawing } from '@kit.ArkGraphics2D';
5230
5231const pen = new drawing.Pen();
5232pen.setMiterLimit(5);
5233```
5234
5235### getMiterLimit<sup>12+</sup>
5236
5237getMiterLimit(): number
5238
5239获取折线尖角的限制值。
5240
5241**系统能力:** SystemCapability.Graphics.Drawing
5242
5243**返回值:**
5244
5245| 类型   | 说明                 |
5246| -------| -------------------- |
5247| number | 返回折线尖角长度与线宽的最大比值。 |
5248
5249**示例:**
5250
5251```ts
5252import { drawing } from '@kit.ArkGraphics2D';
5253
5254const pen = new drawing.Pen();
5255let miter = pen.getMiterLimit();
5256```
5257
5258### setImageFilter<sup>12+</sup>
5259
5260setImageFilter(filter: ImageFilter | null): void
5261
5262为画笔设置图像滤波器。
5263
5264**系统能力:** SystemCapability.Graphics.Drawing
5265
5266**参数:**
5267
5268| 参数名 | 类型   | 必填 | 说明                    |
5269| ------ | ------ | ---- | ----------------------- |
5270| filter    | [ImageFilter](#imagefilter12) \| null | 是   |  图像滤波器,为null表示清空画笔的图像滤波器效果。 |
5271
5272**错误码:**
5273
5274以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
5275
5276| 错误码ID | 错误信息 |
5277| ------- | --------------------------------------------|
5278| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified;2. Incorrect parameter types. |
5279
5280**示例:**
5281
5282```ts
5283import {drawing} from '@kit.ArkGraphics2D';
5284let colorfilter = drawing.ColorFilter.createSRGBGammaToLinear();
5285let imgFilter = drawing.ImageFilter.createFromColorFilter(colorfilter);
5286let pen = new drawing.Pen();
5287pen.setImageFilter(imgFilter);
5288pen.setImageFilter(null);
5289```
5290
5291### getColorFilter<sup>12+</sup>
5292
5293getColorFilter(): ColorFilter
5294
5295获取画笔的颜色滤波器。
5296
5297**系统能力:** SystemCapability.Graphics.Drawing
5298
5299**返回值:**
5300
5301| 类型                        | 说明               |
5302| --------------------------- | ------------------ |
5303| [ColorFilter](#colorfilter) | 返回一个颜色滤波器。 |
5304
5305**示例:**
5306
5307```ts
5308import {drawing} from '@kit.ArkGraphics2D';
5309let pen = new drawing.Pen();
5310let colorfilter = drawing.ColorFilter.createLumaColorFilter();
5311pen.setColorFilter(colorfilter);
5312let filter = pen.getColorFilter();
5313```
5314
5315### setColor
5316
5317setColor(color: common2D.Color) : void
5318
5319用于设置画笔的颜色。
5320
5321**系统能力:** SystemCapability.Graphics.Drawing
5322
5323**参数:**
5324
5325| 参数名 | 类型                                                 | 必填 | 说明             |
5326| ------ | ---------------------------------------------------- | ---- | ---------------- |
5327| color  | [common2D.Color](js-apis-graphics-common2D.md#color) | 是   | ARGB格式的颜色,每个颜色通道是0到255之间的整数。 |
5328
5329**错误码:**
5330
5331以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
5332
5333| 错误码ID | 错误信息 |
5334| ------- | --------------------------------------------|
5335| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types;3.Parameter verification failed. |
5336
5337**示例:**
5338
5339```ts
5340import { common2D, drawing } from '@kit.ArkGraphics2D';
5341const color : common2D.Color = { alpha: 255, red: 255, green: 0, blue: 0 };
5342const pen = new drawing.Pen();
5343pen.setColor(color);
5344```
5345
5346### setColor<sup>12+</sup>
5347
5348setColor(alpha: number, red: number, green: number, blue: number): void
5349
5350用于设置画笔的颜色。性能优于[setColor](#setcolor)接口,推荐使用本接口。
5351
5352**系统能力:** SystemCapability.Graphics.Drawing
5353
5354**参数:**
5355
5356| 参数名 | 类型    | 必填 | 说明                                                |
5357| ------ | ------ | ---- | -------------------------------------------------- |
5358| alpha  | number | 是   | ARGB格式颜色的透明度通道值,该参数是0到255之间的整数,传入范围内的浮点数会向下取整。 |
5359| red    | number | 是   | ARGB格式颜色的红色通道值,该参数是0到255之间的整数,传入范围内的浮点数会向下取整。   |
5360| green  | number | 是   | ARGB格式颜色的绿色通道值,该参数是0到255之间的整数,传入范围内的浮点数会向下取整。   |
5361| blue   | number | 是   | ARGB格式颜色的蓝色通道值,该参数是0到255之间的整数,传入范围内的浮点数会向下取整。   |
5362
5363**错误码:**
5364
5365以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
5366
5367| 错误码ID | 错误信息 |
5368| ------- | --------------------------------------------|
5369| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. |
5370
5371**示例:**
5372
5373```ts
5374import { drawing } from '@kit.ArkGraphics2D';
5375const pen = new drawing.Pen();
5376pen.setColor(255, 255, 0, 0);
5377```
5378
5379### getColor<sup>12+</sup>
5380
5381getColor(): common2D.Color
5382
5383获取画笔的颜色。
5384
5385**系统能力:** SystemCapability.Graphics.Drawing
5386
5387**返回值:**
5388
5389| 类型           | 说明            |
5390| -------------- | -------------- |
5391| common2D.Color | 返回画笔的颜色。 |
5392
5393**示例:**
5394
5395```ts
5396import { common2D, drawing } from '@kit.ArkGraphics2D';
5397
5398const color : common2D.Color = { alpha: 255, red: 255, green: 0, blue: 0 };
5399const pen = new drawing.Pen();
5400pen.setColor(color);
5401let colorGet = pen.getColor();
5402```
5403
5404### setStrokeWidth
5405
5406setStrokeWidth(width: number) : void
5407
5408用于设置画笔的线宽。0线宽被视作特殊的极细线宽,在绘制时始终会被绘制为1像素,不随画布的缩放而改变;负数线宽在实际绘制时会被视作0线宽。
5409
5410**系统能力:** SystemCapability.Graphics.Drawing
5411
5412**参数:**
5413
5414| 参数名 | 类型   | 必填 | 说明             |
5415| ------ | ------ | ---- | ---------------- |
5416| width  | number | 是   | 表示线宽,该参数为浮点数。 |
5417
5418**错误码:**
5419
5420以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
5421
5422| 错误码ID | 错误信息 |
5423| ------- | --------------------------------------------|
5424| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. |
5425
5426**示例:**
5427
5428```ts
5429import { drawing } from '@kit.ArkGraphics2D';
5430const pen = new drawing.Pen();
5431pen.setStrokeWidth(5);
5432```
5433
5434### getWidth<sup>12+</sup>
5435
5436getWidth(): number
5437
5438获取画笔的线宽属性,线宽描述了画笔绘制图形轮廓的宽度。
5439
5440**系统能力:** SystemCapability.Graphics.Drawing
5441
5442**返回值:**
5443
5444| 类型   | 说明            |
5445| ------ | -------------- |
5446| number | 返回画笔的线宽。 |
5447
5448**示例:**
5449
5450```ts
5451import { drawing } from '@kit.ArkGraphics2D';
5452
5453const pen = new drawing.Pen();
5454let width = pen.getWidth();
5455```
5456
5457### setAntiAlias
5458
5459setAntiAlias(aa: boolean) : void
5460
5461用于设置画笔是否开启抗锯齿。开启后,可以使得图形的边缘在显示时更平滑。
5462
5463**系统能力:** SystemCapability.Graphics.Drawing
5464
5465**参数:**
5466
5467| 参数名 | 类型    | 必填 | 说明                                              |
5468| ------ | ------- | ---- | ------------------------------------------------- |
5469| aa     | boolean | 是   | 表示是否开启抗锯齿。true表示开启,false表示关闭。 |
5470
5471**错误码:**
5472
5473以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
5474
5475| 错误码ID | 错误信息 |
5476| ------- | --------------------------------------------|
5477| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. |
5478
5479**示例:**
5480
5481```ts
5482import { drawing } from '@kit.ArkGraphics2D';
5483const pen = new drawing.Pen();
5484pen.setAntiAlias(true);
5485```
5486
5487### isAntiAlias<sup>12+</sup>
5488
5489isAntiAlias(): boolean
5490
5491获取画笔是否开启抗锯齿属性。
5492
5493**系统能力:** SystemCapability.Graphics.Drawing
5494
5495**返回值:**
5496
5497| 类型    | 说明                       |
5498| ------- | ------------------------- |
5499| boolean | 返回画笔是否开启抗锯齿属性,true表示开启抗锯齿属性,false表示关闭抗锯齿属性。 |
5500
5501**示例:**
5502
5503```ts
5504import { drawing } from '@kit.ArkGraphics2D';
5505
5506const pen = new drawing.Pen();
5507let isAntiAlias = pen.isAntiAlias();
5508```
5509
5510### setAlpha
5511
5512setAlpha(alpha: number) : void
5513
5514用于设置画笔的透明度。
5515
5516**系统能力:** SystemCapability.Graphics.Drawing
5517
5518**参数:**
5519
5520| 参数名 | 类型   | 必填 | 说明                                     |
5521| ------ | ------ | ---- | ---------------------------------------- |
5522| alpha  | number | 是   | 用于表示透明度的[0, 255]区间内的整数值,传入浮点类型时向下取整。 |
5523
5524**错误码:**
5525
5526以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
5527
5528| 错误码ID | 错误信息 |
5529| ------- | --------------------------------------------|
5530| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types;3.Parameter verification failed. |
5531
5532**示例:**
5533
5534```ts
5535import { drawing } from '@kit.ArkGraphics2D';
5536const pen = new drawing.Pen();
5537pen.setAlpha(128);
5538```
5539
5540### getAlpha<sup>12+</sup>
5541
5542getAlpha(): number
5543
5544获取画笔的透明度。
5545
5546**系统能力:** SystemCapability.Graphics.Drawing
5547
5548**返回值:**
5549
5550| 类型   | 说明              |
5551| ------ | ---------------- |
5552| number | 返回画笔的透明度,该返回值为0到255之间的整数。 |
5553
5554**示例:**
5555
5556```ts
5557import { drawing } from '@kit.ArkGraphics2D';
5558
5559const pen = new drawing.Pen();
5560let alpha = pen.getAlpha();
5561```
5562
5563### setColorFilter
5564
5565setColorFilter(filter: ColorFilter) : void
5566
5567用于给画笔添加额外的颜色滤波器。
5568
5569**系统能力:** SystemCapability.Graphics.Drawing
5570
5571**参数:**
5572
5573| 参数名 | 类型                        | 必填 | 说明         |
5574| ------ | --------------------------- | ---- | ------------ |
5575| filter | [ColorFilter](#colorfilter) | 是   | 颜色滤波器。为null时表示清空颜色滤波器。 |
5576
5577**错误码:**
5578
5579以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
5580
5581| 错误码ID | 错误信息 |
5582| ------- | --------------------------------------------|
5583| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. |
5584
5585**示例:**
5586
5587```ts
5588import { drawing } from '@kit.ArkGraphics2D';
5589const pen = new drawing.Pen();
5590let colorFilter = drawing.ColorFilter.createLinearToSRGBGamma();
5591pen.setColorFilter(colorFilter);
5592```
5593
5594### setMaskFilter<sup>12+</sup>
5595
5596setMaskFilter(filter: MaskFilter): void
5597
5598用于给画笔添加额外的蒙版滤镜。
5599
5600**系统能力:** SystemCapability.Graphics.Drawing
5601
5602**参数:**
5603
5604| 参数名 | 类型                       | 必填 | 说明      |
5605| ------ | ------------------------- | ---- | --------- |
5606| filter | [MaskFilter](#maskfilter12) | 是   | 蒙版滤镜。为null时表示清空蒙版滤镜。 |
5607
5608**错误码:**
5609
5610以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
5611
5612| 错误码ID | 错误信息 |
5613| ------- | --------------------------------------------|
5614| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. |
5615
5616**示例:**
5617
5618```ts
5619import { RenderNode } from '@kit.ArkUI';
5620import { common2D, drawing } from '@kit.ArkGraphics2D';
5621class DrawingRenderNode extends RenderNode {
5622  draw(context : DrawContext) {
5623    const canvas = context.canvas;
5624    const pen = new drawing.Pen();
5625    pen.setStrokeWidth(5);
5626    pen.setColor({alpha: 255, red: 255, green: 0, blue: 0});
5627    let maskFilter = drawing.MaskFilter.createBlurMaskFilter(drawing.BlurType.OUTER, 10);
5628    pen.setMaskFilter(maskFilter);
5629  }
5630}
5631```
5632
5633### setPathEffect<sup>12+</sup>
5634
5635setPathEffect(effect: PathEffect): void
5636
5637设置画笔路径效果。
5638
5639**系统能力:** SystemCapability.Graphics.Drawing
5640
5641**参数:**
5642
5643| 参数名  | 类型                       | 必填 | 说明         |
5644| ------- | ------------------------- | ---- | ------------ |
5645| effect  | [PathEffect](#patheffect12) | 是   | 路径效果对象。为null时表示清空路径效果。 |
5646
5647**错误码:**
5648
5649以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
5650
5651| 错误码ID | 错误信息 |
5652| ------- | --------------------------------------------|
5653| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. |
5654
5655**示例:**
5656
5657```ts
5658import { RenderNode } from '@kit.ArkUI';
5659import { common2D, drawing } from '@kit.ArkGraphics2D';
5660class DrawingRenderNode extends RenderNode {
5661  draw(context : DrawContext) {
5662    const canvas = context.canvas;
5663    const pen = new drawing.Pen();
5664    pen.setStrokeWidth(5);
5665    pen.setColor({alpha: 255, red: 255, green: 0, blue: 0});
5666    let pathEffect = drawing.PathEffect.createDashPathEffect([30, 10], 0);
5667    pen.setPathEffect(pathEffect);
5668  }
5669}
5670```
5671
5672### setShaderEffect<sup>12+</sup>
5673
5674setShaderEffect(shaderEffect: ShaderEffect): void
5675
5676设置画笔着色器效果。
5677
5678**系统能力:** SystemCapability.Graphics.Drawing
5679
5680**参数:**
5681
5682| 参数名  | 类型                       | 必填 | 说明         |
5683| ------- | ------------------------- | ---- | ------------ |
5684| shaderEffect  | [ShaderEffect](#shadereffect12) | 是   | 着色器对象。为null时表示清空着色器效果。 |
5685
5686**错误码:**
5687
5688以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
5689
5690| 错误码ID | 错误信息 |
5691| ------- | --------------------------------------------|
5692| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. |
5693
5694**示例:**
5695
5696```ts
5697import { drawing } from '@kit.ArkGraphics2D';
5698
5699const pen = new drawing.Pen();
5700let shaderEffect = drawing.ShaderEffect.createLinearGradient({x: 100, y: 100}, {x: 300, y: 300}, [0xFF00FF00, 0xFFFF0000], drawing.TileMode.REPEAT);
5701pen.setShaderEffect(shaderEffect);
5702```
5703
5704### setShadowLayer<sup>12+</sup>
5705
5706setShadowLayer(shadowLayer: ShadowLayer): void
5707
5708设置画笔阴影层效果。当前仅在绘制文字时生效。
5709
5710**系统能力:** SystemCapability.Graphics.Drawing
5711
5712**参数:**
5713
5714| 参数名  | 类型                       | 必填 | 说明      |
5715| ------- | ------------------------- | ---- | --------- |
5716| shadowLayer  | [ShadowLayer](#shadowlayer12) | 是   | 阴影层对象。为null时表示清空阴影层效果。 |
5717
5718**错误码:**
5719
5720以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
5721
5722| 错误码ID | 错误信息 |
5723| ------- | --------------------------------------------|
5724| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. |
5725
5726**示例:**
5727
5728```ts
5729import { RenderNode } from '@kit.ArkUI';
5730import { common2D, drawing } from '@kit.ArkGraphics2D';
5731class DrawingRenderNode extends RenderNode {
5732  draw(context : DrawContext) {
5733    const canvas = context.canvas;
5734    let font = new drawing.Font();
5735    font.setSize(60);
5736    let textBlob = drawing.TextBlob.makeFromString("hello", font, drawing.TextEncoding.TEXT_ENCODING_UTF8);
5737    let pen = new drawing.Pen();
5738    pen.setStrokeWidth(2.0);
5739    let pen_color : common2D.Color = {alpha: 0xFF, red: 0xFF, green: 0x00, blue: 0x00};
5740    pen.setColor(pen_color);
5741    canvas.attachPen(pen);
5742    canvas.drawTextBlob(textBlob, 100, 100);
5743    canvas.detachPen();
5744    let color : common2D.Color = {alpha: 0xFF, red: 0x00, green: 0xFF, blue: 0x00};
5745    let shadowLayer = drawing.ShadowLayer.create(3, -3, 3, color);
5746    pen.setShadowLayer(shadowLayer);
5747    canvas.attachPen(pen);
5748    canvas.drawTextBlob(textBlob, 100, 200);
5749    canvas.detachPen();
5750  }
5751}
5752```
5753
5754### setBlendMode
5755
5756setBlendMode(mode: BlendMode) : void
5757
5758用于设置画笔的混合模式。
5759
5760**系统能力:** SystemCapability.Graphics.Drawing
5761
5762**参数:**
5763
5764| 参数名 | 类型                    | 必填 | 说明             |
5765| ------ | ----------------------- | ---- | ---------------- |
5766| mode   | [BlendMode](#blendmode) | 是   | 颜色的混合模式。 |
5767
5768**错误码:**
5769
5770以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
5771
5772| 错误码ID | 错误信息 |
5773| ------- | --------------------------------------------|
5774| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types;3.Parameter verification failed. |
5775
5776**示例:**
5777
5778```ts
5779import { drawing } from '@kit.ArkGraphics2D';
5780const pen = new drawing.Pen();
5781pen.setBlendMode(drawing.BlendMode.SRC);
5782```
5783
5784### setJoinStyle<sup>12+</sup>
5785
5786setJoinStyle(style: JoinStyle): void
5787
5788用于设置画笔绘制转角的样式。
5789
5790**系统能力:** SystemCapability.Graphics.Drawing
5791
5792**参数:**
5793
5794| 参数名 | 类型                     | 必填 | 说明             |
5795| ------ | ----------------------- | ---- | --------------- |
5796| style  | [JoinStyle](#joinstyle12) | 是   | 折线转角样式     |
5797
5798**错误码:**
5799
5800以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
5801
5802| 错误码ID | 错误信息 |
5803| ------- | --------------------------------------------|
5804| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types;3.Parameter verification failed. |
5805
5806**示例:**
5807
5808```ts
5809import { RenderNode } from '@kit.ArkUI';
5810import { common2D, drawing } from '@kit.ArkGraphics2D';
5811class DrawingRenderNode extends RenderNode {
5812  draw(context : DrawContext) {
5813    const canvas = context.canvas;
5814    const pen = new drawing.Pen();
5815    pen.setStrokeWidth(5);
5816    pen.setColor({alpha: 255, red: 255, green: 0, blue: 0});
5817    pen.setJoinStyle(drawing.JoinStyle.ROUND_JOIN);
5818  }
5819}
5820```
5821
5822### getJoinStyle<sup>12+</sup>
5823
5824getJoinStyle(): JoinStyle
5825
5826用于获取画笔绘制转角的样式。
5827
5828**系统能力:** SystemCapability.Graphics.Drawing
5829
5830**返回值:**
5831
5832| 类型          | 说明                    |
5833| ------------- | ---------------------- |
5834| JoinStyle | 返回折线转角的样式。         |
5835
5836**示例:**
5837
5838```ts
5839import { RenderNode } from '@kit.ArkUI';
5840import { common2D, drawing } from '@kit.ArkGraphics2D';
5841class DrawingRenderNode extends RenderNode {
5842  draw(context : DrawContext) {
5843    const canvas = context.canvas;
5844    const pen = new drawing.Pen();
5845    pen.setStrokeWidth(5);
5846    pen.setColor({alpha: 255, red: 255, green: 0, blue: 0});
5847    pen.setJoinStyle(drawing.JoinStyle.ROUND_JOIN);
5848    let joinStyle = pen.getJoinStyle();
5849  }
5850}
5851```
5852
5853### setCapStyle<sup>12+</sup>
5854
5855setCapStyle(style: CapStyle): void
5856
5857用于设置线帽样式。
5858
5859**系统能力:** SystemCapability.Graphics.Drawing
5860
5861**参数:**
5862
5863| 参数名 | 类型                     | 必填 | 说明                   |
5864| ------ | ----------------------- | ---- | --------------------- |
5865| style  | [CapStyle](#capstyle12)   | 是   | 描述线帽样式的变量。    |
5866
5867**错误码:**
5868
5869以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
5870
5871| 错误码ID | 错误信息 |
5872| ------- | --------------------------------------------|
5873| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types;3.Parameter verification failed. |
5874
5875**示例:**
5876
5877```ts
5878import { RenderNode } from '@kit.ArkUI';
5879import { common2D, drawing } from '@kit.ArkGraphics2D';
5880class DrawingRenderNode extends RenderNode {
5881  draw(context : DrawContext) {
5882    const canvas = context.canvas;
5883    const pen = new drawing.Pen();
5884    pen.setStrokeWidth(5);
5885    pen.setColor({alpha: 255, red: 255, green: 0, blue: 0});
5886    pen.setCapStyle(drawing.CapStyle.SQUARE_CAP);
5887  }
5888}
5889```
5890
5891### getCapStyle<sup>12+</sup>
5892
5893getCapStyle(): CapStyle
5894
5895用于获取画笔的线帽样式。
5896
5897**系统能力:** SystemCapability.Graphics.Drawing
5898
5899**返回值:**
5900
5901| 类型         | 说明                |
5902| ------------ | ------------------ |
5903| CapStyle     | 返回画笔的线帽样式。 |
5904
5905**示例:**
5906
5907```ts
5908import { RenderNode } from '@kit.ArkUI';
5909import { common2D, drawing } from '@kit.ArkGraphics2D';
5910class DrawingRenderNode extends RenderNode {
5911  draw(context : DrawContext) {
5912    const canvas = context.canvas;
5913    const pen = new drawing.Pen();
5914    pen.setStrokeWidth(5);
5915    pen.setColor({alpha: 255, red: 255, green: 0, blue: 0});
5916    pen.setCapStyle(drawing.CapStyle.SQUARE_CAP);
5917    let capStyle = pen.getCapStyle();
5918  }
5919}
5920```
5921
5922### setDither
5923
5924setDither(dither: boolean) : void
5925
5926开启画笔的抖动绘制效果。抖动绘制可以使得绘制出的颜色更加真实。
5927
5928**系统能力:** SystemCapability.Graphics.Drawing
5929
5930**参数:**
5931
5932| 参数名 | 类型    | 必填 | 说明                                                      |
5933| ------ | ------- | ---- | --------------------------------------------------------- |
5934| dither | boolean | 是   | 是否开启画笔的抖动绘制效果。true表示开启,false表示关闭。 |
5935
5936**错误码:**
5937
5938以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
5939
5940| 错误码ID | 错误信息 |
5941| ------- | --------------------------------------------|
5942| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. |
5943
5944**示例:**
5945
5946```ts
5947import { drawing } from '@kit.ArkGraphics2D';
5948const pen = new drawing.Pen();
5949pen.setDither(true);
5950```
5951
5952### getFillPath<sup>12+</sup>
5953
5954getFillPath(src: Path, dst: Path): boolean
5955
5956获取使用画笔绘制的源路径轮廓,并用目标路径表示。
5957
5958**系统能力:** SystemCapability.Graphics.Drawing
5959
5960**参数:**
5961
5962| 参数名   | 类型                                         | 必填 | 说明                            |
5963| -------- | -------------------------------------------- | ---- | ------------------------------- |
5964| src | [Path](#path) | 是   | 源路径对象。                 |
5965| dst     | [Path](#path)                | 是   | 目标路径对象。 |
5966
5967**返回值:**
5968
5969| 类型                  | 说明           |
5970| --------------------- | -------------- |
5971| boolean | 返回获取源路径轮廓是否成功的结果,true表示获取成功,false表示获取失败。 |
5972
5973**错误码:**
5974
5975以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
5976
5977| 错误码ID | 错误信息 |
5978| ------- | --------------------------------------------|
5979| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. |
5980
5981**示例:**
5982
5983```ts
5984import { drawing } from '@kit.ArkGraphics2D';
5985let pen = new drawing.Pen();
5986let pathSrc: drawing.Path = new drawing.Path();
5987let pathDst: drawing.Path = new drawing.Path();
5988pathSrc.moveTo(0, 0);
5989pathSrc.lineTo(700, 700);
5990let value = pen.getFillPath(pathSrc, pathDst);
5991```
5992
5993### reset<sup>12+</sup>
5994
5995reset(): void
5996
5997重置当前画笔为初始状态。
5998
5999**系统能力:** SystemCapability.Graphics.Drawing
6000
6001**示例:**
6002
6003```ts
6004import { drawing } from '@kit.ArkGraphics2D';
6005
6006const pen = new drawing.Pen();
6007pen.reset();
6008```
6009
6010## Brush
6011
6012画刷对象,描述所绘制图形的填充信息。
6013
6014### constructor<sup>12+</sup>
6015
6016constructor()
6017
6018构造一个新的画刷对象。
6019
6020**系统能力:** SystemCapability.Graphics.Drawing
6021
6022**示例:**
6023
6024```ts
6025import { drawing } from '@kit.ArkGraphics2D';
6026
6027const brush = new drawing.Brush();
6028```
6029
6030### constructor<sup>12+</sup>
6031
6032constructor(brush: Brush)
6033
6034复制构造一个新的画刷对象。
6035
6036**系统能力:** SystemCapability.Graphics.Drawing
6037
6038**参数:**
6039
6040| 参数名 | 类型        | 必填 | 说明              |
6041| ------| ----------- | ---- | ---------------- |
6042| brush     | [Brush](#brush) | 是   | 待复制的画刷对象。 |
6043
6044**错误码:**
6045
6046以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
6047
6048| 错误码ID | 错误信息 |
6049| ------- | --------------------------------------------|
6050| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. |
6051
6052**示例:**
6053
6054```ts
6055import { common2D, drawing } from '@kit.ArkGraphics2D';
6056
6057const brush = new drawing.Brush();
6058const brushColor: common2D.Color = { alpha: 255, red: 0, green: 255, blue: 0 };
6059brush.setColor(brushColor);
6060const newBrush = new drawing.Brush(brush);
6061```
6062
6063### setColor
6064
6065setColor(color: common2D.Color) : void
6066
6067用于设置画刷的颜色。
6068
6069**系统能力:** SystemCapability.Graphics.Drawing
6070
6071**参数:**
6072
6073| 参数名 | 类型                                                 | 必填 | 说明             |
6074| ------ | ---------------------------------------------------- | ---- | ---------------- |
6075| color  | [common2D.Color](js-apis-graphics-common2D.md#color) | 是   | ARGB格式的颜色,每个颜色通道是0到255之间的整数。 |
6076
6077**错误码:**
6078
6079以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
6080
6081| 错误码ID | 错误信息 |
6082| ------- | --------------------------------------------|
6083| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types;3.Parameter verification failed. |
6084
6085**示例:**
6086
6087```ts
6088import { common2D, drawing } from '@kit.ArkGraphics2D';
6089const color : common2D.Color = { alpha: 255, red: 255, green: 0, blue: 0 };
6090const brush = new drawing.Brush();
6091brush.setColor(color);
6092```
6093
6094### setColor<sup>12+</sup>
6095
6096setColor(alpha: number, red: number, green: number, blue: number): void
6097
6098用于设置画刷的颜色。性能优于[setColor](#setcolor-1)接口,推荐使用本接口。
6099
6100**系统能力:** SystemCapability.Graphics.Drawing
6101
6102**参数:**
6103
6104| 参数名 | 类型    | 必填 | 说明                                               |
6105| ------ | ------ | ---- | -------------------------------------------------- |
6106| alpha  | number | 是   | ARGB格式颜色的透明度通道值,该参数是0到255之间的整数,传入范围内的浮点数会向下取整。 |
6107| red    | number | 是   | ARGB格式颜色的红色通道值,该参数是0到255之间的整数,传入范围内的浮点数会向下取整。   |
6108| green  | number | 是   | ARGB格式颜色的绿色通道值,该参数是0到255之间的整数,传入范围内的浮点数会向下取整。   |
6109| blue   | number | 是   | ARGB格式颜色的蓝色通道值,该参数是0到255之间的整数,传入范围内的浮点数会向下取整。   |
6110
6111**错误码:**
6112
6113以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
6114
6115| 错误码ID | 错误信息 |
6116| ------- | --------------------------------------------|
6117| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types;3.Parameter verification failed. |
6118
6119**示例:**
6120
6121```ts
6122import { drawing } from '@kit.ArkGraphics2D';
6123const brush = new drawing.Brush();
6124brush.setColor(255, 255, 0, 0);
6125```
6126
6127### getColor<sup>12+</sup>
6128
6129getColor(): common2D.Color
6130
6131获取画刷的颜色。
6132
6133**系统能力:** SystemCapability.Graphics.Drawing
6134
6135**返回值:**
6136
6137| 类型           | 说明            |
6138| -------------- | -------------- |
6139| common2D.Color | 返回画刷的颜色。 |
6140
6141**示例:**
6142
6143```ts
6144import { common2D, drawing } from '@kit.ArkGraphics2D';
6145
6146const color : common2D.Color = { alpha: 255, red: 255, green: 0, blue: 0 };
6147const brush = new drawing.Brush();
6148brush.setColor(color);
6149let colorGet = brush.getColor();
6150```
6151
6152### setAntiAlias
6153
6154setAntiAlias(aa: boolean) : void
6155
6156用于设置画刷是否开启抗锯齿。开启后,可以使得图形的边缘在显示时更平滑。
6157
6158**系统能力:** SystemCapability.Graphics.Drawing
6159
6160**参数:**
6161
6162| 参数名 | 类型    | 必填 | 说明                                              |
6163| ------ | ------- | ---- | ------------------------------------------------- |
6164| aa     | boolean | 是   | 表示是否开启抗锯齿。true表示开启,false表示关闭。 |
6165
6166**错误码:**
6167
6168以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
6169
6170| 错误码ID | 错误信息 |
6171| ------- | --------------------------------------------|
6172| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. |
6173
6174**示例:**
6175
6176```ts
6177import { drawing } from '@kit.ArkGraphics2D';
6178const brush = new drawing.Brush();
6179brush.setAntiAlias(true);
6180```
6181
6182### isAntiAlias<sup>12+</sup>
6183
6184isAntiAlias(): boolean
6185
6186获取画刷是否开启抗锯齿属性。
6187
6188**系统能力:** SystemCapability.Graphics.Drawing
6189
6190**返回值:**
6191
6192| 类型    | 说明                       |
6193| ------- | ------------------------- |
6194| boolean | 返回画刷是否开启抗锯齿属性,true表示开启抗锯齿属性,false表示关闭抗锯齿属性。 |
6195
6196**示例:**
6197
6198```ts
6199import { drawing } from '@kit.ArkGraphics2D';
6200
6201const brush = new drawing.Brush();
6202let isAntiAlias = brush.isAntiAlias();
6203```
6204
6205### setAlpha
6206
6207setAlpha(alpha: number) : void
6208
6209用于设置画刷的透明度。
6210
6211**系统能力:** SystemCapability.Graphics.Drawing
6212
6213**参数:**
6214
6215| 参数名 | 类型   | 必填 | 说明                                     |
6216| ------ | ------ | ---- | ---------------------------------------- |
6217| alpha  | number | 是   | 用于表示透明度的[0, 255]区间内的整数值,传入浮点类型时向下取整。 |
6218
6219**错误码:**
6220
6221以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
6222
6223| 错误码ID | 错误信息 |
6224| ------- | --------------------------------------------|
6225| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types;3.Parameter verification failed. |
6226
6227**示例:**
6228
6229```ts
6230import { drawing } from '@kit.ArkGraphics2D';
6231const brush = new drawing.Brush();
6232brush.setAlpha(128);
6233```
6234
6235### getAlpha<sup>12+</sup>
6236
6237getAlpha(): number
6238
6239获取画刷的透明度。
6240
6241**系统能力:** SystemCapability.Graphics.Drawing
6242
6243**返回值:**
6244
6245| 类型   | 说明              |
6246| ------ | ---------------- |
6247| number | 返回画刷的透明度,该返回值为0到255之间的整数。 |
6248
6249**示例:**
6250
6251```ts
6252import { drawing } from '@kit.ArkGraphics2D';
6253
6254const brush = new drawing.Brush();
6255let alpha = brush.getAlpha();
6256```
6257
6258### setColorFilter
6259
6260setColorFilter(filter: ColorFilter) : void
6261
6262用于给画刷添加额外的颜色滤波器。
6263
6264**系统能力:** SystemCapability.Graphics.Drawing
6265
6266**参数:**
6267
6268| 参数名 | 类型                        | 必填 | 说明         |
6269| ------ | --------------------------- | ---- | ------------ |
6270| filter | [ColorFilter](#colorfilter) | 是   | 颜色滤波器。为null时表示清空颜色滤波器。 |
6271
6272**错误码:**
6273
6274以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
6275
6276| 错误码ID | 错误信息 |
6277| ------- | --------------------------------------------|
6278| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. |
6279
6280**示例:**
6281
6282```ts
6283import { drawing } from '@kit.ArkGraphics2D';
6284const brush = new drawing.Brush();
6285let colorFilter = drawing.ColorFilter.createLinearToSRGBGamma();
6286brush.setColorFilter(colorFilter);
6287```
6288
6289### setMaskFilter<sup>12+</sup>
6290
6291setMaskFilter(filter: MaskFilter): void
6292
6293用于给画刷添加额外的蒙版滤镜。
6294
6295**系统能力:** SystemCapability.Graphics.Drawing
6296
6297**参数:**
6298
6299| 参数名 | 类型                       | 必填 | 说明      |
6300| ------ | ------------------------- | ---- | --------- |
6301| filter | [MaskFilter](#maskfilter12) | 是   | 蒙版滤镜。为null时表示清空蒙版滤镜。 |
6302
6303**错误码:**
6304
6305以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
6306
6307| 错误码ID | 错误信息 |
6308| ------- | --------------------------------------------|
6309| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. |
6310
6311**示例:**
6312
6313```ts
6314import { RenderNode } from '@kit.ArkUI';
6315import { common2D, drawing } from '@kit.ArkGraphics2D';
6316class DrawingRenderNode extends RenderNode {
6317  draw(context : DrawContext) {
6318    const canvas = context.canvas;
6319    const brush = new drawing.Brush();
6320    let maskFilter = drawing.MaskFilter.createBlurMaskFilter(drawing.BlurType.OUTER, 10);
6321    brush.setMaskFilter(maskFilter);
6322  }
6323}
6324```
6325
6326### setShaderEffect<sup>12+</sup>
6327
6328setShaderEffect(shaderEffect: ShaderEffect): void
6329
6330设置画刷着色器效果。
6331
6332**系统能力:** SystemCapability.Graphics.Drawing
6333
6334**参数:**
6335
6336| 参数名  | 类型                       | 必填 | 说明         |
6337| ------- | ------------------------- | ---- | ------------ |
6338| shaderEffect  | [ShaderEffect](#shadereffect12) | 是   | 着色器对象。为null时表示清空着色器效果。 |
6339
6340**错误码:**
6341
6342以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
6343
6344| 错误码ID | 错误信息 |
6345| ------- | --------------------------------------------|
6346| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. |
6347
6348**示例:**
6349
6350```ts
6351import { drawing } from '@kit.ArkGraphics2D';
6352
6353const brush = new drawing.Brush();
6354let shaderEffect = drawing.ShaderEffect.createLinearGradient({x: 100, y: 100}, {x: 300, y: 300}, [0xFF00FF00, 0xFFFF0000], drawing.TileMode.REPEAT);
6355brush.setShaderEffect(shaderEffect);
6356```
6357
6358### setShadowLayer<sup>12+</sup>
6359
6360setShadowLayer(shadowLayer: ShadowLayer): void
6361
6362设置画刷阴影层效果。当前仅在绘制文字时生效。
6363
6364**系统能力:** SystemCapability.Graphics.Drawing
6365
6366**参数:**
6367
6368| 参数名  | 类型                       | 必填 | 说明      |
6369| ------- | ------------------------- | ---- | --------- |
6370| shadowLayer  | [ShadowLayer](#shadowlayer12) | 是   | 阴影层对象。为null时表示清空阴影层效果 |
6371
6372**错误码:**
6373
6374以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
6375
6376| 错误码ID | 错误信息 |
6377| ------- | --------------------------------------------|
6378| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. |
6379
6380**示例:**
6381
6382```ts
6383import { RenderNode } from '@kit.ArkUI';
6384import { common2D, drawing } from '@kit.ArkGraphics2D';
6385class DrawingRenderNode extends RenderNode {
6386  draw(context : DrawContext) {
6387    const canvas = context.canvas;
6388    let font = new drawing.Font();
6389    font.setSize(60);
6390
6391    let textBlob = drawing.TextBlob.makeFromString("hello", font, drawing.TextEncoding.TEXT_ENCODING_UTF8);
6392    let pen = new drawing.Pen();
6393    pen.setStrokeWidth(2.0);
6394
6395    let pen_color : common2D.Color = {alpha: 0xFF, red: 0xFF, green: 0x00, blue: 0x00};
6396    pen.setColor(pen_color);
6397    canvas.attachPen(pen);
6398    canvas.drawTextBlob(textBlob, 100, 100);
6399    canvas.detachPen();
6400
6401    let color : common2D.Color = {alpha: 0xFF, red: 0x00, green: 0xFF, blue: 0x00};
6402    let shadowLayer = drawing.ShadowLayer.create(3, -3, 3, color);
6403    pen.setShadowLayer(shadowLayer);
6404    canvas.attachPen(pen);
6405    canvas.drawTextBlob(textBlob, 100, 200);
6406    canvas.detachPen();
6407
6408    let brush = new drawing.Brush();
6409    let brush_color : common2D.Color = {alpha: 0xFF, red: 0xFF, green: 0x00, blue: 0x00};
6410    brush.setColor(brush_color);
6411    canvas.attachBrush(brush);
6412    canvas.drawTextBlob(textBlob, 300, 100);
6413    canvas.detachBrush();
6414
6415    brush.setShadowLayer(shadowLayer);
6416    canvas.attachBrush(brush);
6417    canvas.drawTextBlob(textBlob, 300, 200);
6418    canvas.detachBrush();
6419  }
6420}
6421```
6422
6423### setBlendMode
6424
6425setBlendMode(mode: BlendMode) : void
6426
6427用于设置画刷的混合模式。
6428
6429**系统能力:** SystemCapability.Graphics.Drawing
6430
6431**参数:**
6432
6433| 参数名 | 类型                    | 必填 | 说明             |
6434| ------ | ----------------------- | ---- | ---------------- |
6435| mode   | [BlendMode](#blendmode) | 是   | 颜色的混合模式。 |
6436
6437**错误码:**
6438
6439以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
6440
6441| 错误码ID | 错误信息 |
6442| ------- | --------------------------------------------|
6443| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types;3.Parameter verification failed. |
6444
6445**示例:**
6446
6447```ts
6448import { drawing } from '@kit.ArkGraphics2D';
6449const brush = new drawing.Brush();
6450brush.setBlendMode(drawing.BlendMode.SRC);
6451```
6452
6453### setImageFilter<sup>12+</sup>
6454
6455setImageFilter(filter: ImageFilter | null): void
6456
6457为画刷设置图像滤波器。
6458
6459**系统能力:** SystemCapability.Graphics.Drawing
6460
6461**参数:**
6462
6463| 参数名 | 类型   | 必填 | 说明                    |
6464| ------ | ------ | ---- | ----------------------- |
6465| filter    | [ImageFilter](#imagefilter12) \| null | 是   | 图像滤波器,为null表示清空图像滤波器效果。 |
6466
6467**错误码:**
6468
6469以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
6470
6471| 错误码ID | 错误信息 |
6472| ------- | --------------------------------------------|
6473| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified;2. Incorrect parameter types. |
6474
6475**示例:**
6476
6477```ts
6478import {drawing} from '@kit.ArkGraphics2D';
6479let brush = new drawing.Brush();
6480let imgFilter = drawing.ImageFilter.createBlurImageFilter(5, 10, drawing.TileMode.DECAL);
6481brush.setImageFilter(imgFilter);
6482brush.setImageFilter(null);
6483```
6484
6485### getColorFilter<sup>12+</sup>
6486
6487getColorFilter(): ColorFilter
6488
6489获取画刷的颜色滤波器。
6490
6491**系统能力:** SystemCapability.Graphics.Drawing
6492
6493**返回值:**
6494
6495| 类型                        | 说明               |
6496| --------------------------- | ------------------ |
6497| [ColorFilter](#colorfilter) | 返回一个颜色滤波器。 |
6498
6499**示例:**
6500
6501```ts
6502import {drawing} from '@kit.ArkGraphics2D';
6503let brush = new drawing.Brush();
6504let setColorFilter = drawing.ColorFilter.createSRGBGammaToLinear();
6505brush.setColorFilter(setColorFilter);
6506let filter = brush.getColorFilter();
6507```
6508
6509### reset<sup>12+</sup>
6510
6511reset(): void
6512
6513重置当前画刷为初始状态。
6514
6515**系统能力:** SystemCapability.Graphics.Drawing
6516
6517**示例:**
6518
6519```ts
6520import { drawing } from '@kit.ArkGraphics2D';
6521
6522const brush = new drawing.Brush();
6523brush.reset();
6524```
6525
6526## ScaleToFit<sup>12+</sup>
6527
6528源矩形到目标矩形的缩放方式枚举。
6529
6530**系统能力**:SystemCapability.Graphics.Drawing
6531
6532| 名称                   | 值   | 说明                           |
6533| ---------------------- | ---- | ------------------------------ |
6534| FILL_SCALE_TO_FIT     | 0    | 将源矩形缩放以填充满整个目标矩形,可能会改变源矩形的长宽比。  |
6535| START_SCALE_TO_FIT    | 1    | 保持源矩形的长宽比进行缩放,并对齐到目标矩形的左上方。 |
6536| CENTER_SCALE_TO_FIT    | 2    | 保持源矩形的长宽比进行缩放,并居中对齐到目标矩形。   |
6537| END_SCALE_TO_FIT | 3    | 保持源矩形的长宽比进行缩放,并对齐到目标矩形的右下方。   |
6538
6539## Matrix<sup>12+</sup>
6540
6541矩阵对象。
6542
6543表示为3*3的矩阵,如下图所示:
6544
6545![matrix_3x3](figures/matrix3X3.PNG)
6546
6547矩阵中的元素从左到右,从上到下分别表示水平缩放系数、水平倾斜系数、水平位移系数、垂直倾斜系数、垂直缩放系数、垂直位移系数、X轴透视系数、Y轴透视系数、透视缩放系数。
6548设(x<sub>1</sub>, y<sub>1</sub>)为源坐标点,(x<sub>2</sub>, y<sub>2</sub>)为源坐标点通过矩阵变换后的坐标点,则两个坐标点的关系如下:
6549
6550![matrix_xy](figures/matrix_xy.PNG)
6551
6552### constructor<sup>12+</sup>
6553
6554constructor()
6555
6556用于构造一个矩阵对象。
6557
6558**系统能力:** SystemCapability.Graphics.Drawing
6559
6560**示例:**
6561
6562```ts
6563import { drawing } from '@kit.ArkGraphics2D';
6564
6565let matrix = new drawing.Matrix();
6566```
6567
6568### setRotation<sup>12+</sup>
6569
6570setRotation(degree: number, px: number, py: number): void
6571
6572设置矩阵为单位矩阵,并围绕位于(px, py)的旋转轴点进行旋转。
6573
6574**系统能力:** SystemCapability.Graphics.Drawing
6575
6576**参数:**
6577
6578| 参数名         | 类型                                       | 必填   | 说明                  |
6579| ----------- | ---------------------------------------- | ---- | ------------------- |
6580| degree      | number                  | 是    | 角度,单位为度。正数表示顺时针旋转,负数表示逆时针旋转,该参数为浮点数。|
6581| px          | number                  | 是    | 旋转轴点的横坐标,该参数为浮点数。     |
6582| py          | number                  | 是    | 旋转轴点的纵坐标,该参数为浮点数。     |
6583
6584**错误码:**
6585
6586以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
6587
6588| 错误码ID | 错误信息 |
6589| ------- | --------------------------------------------|
6590| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. |
6591
6592**示例:**
6593
6594```ts
6595import { drawing } from '@kit.ArkGraphics2D';
6596
6597let matrix = new drawing.Matrix();
6598matrix.setRotation(90, 100, 100);
6599```
6600
6601### setScale<sup>12+</sup>
6602
6603setScale(sx: number, sy: number, px: number, py: number): void
6604
6605设置矩阵为单位矩阵围绕位于(px, py)的中心点,以sx和sy进行缩放后的结果。
6606
6607**系统能力:** SystemCapability.Graphics.Drawing
6608
6609**参数:**
6610
6611| 参数名         | 类型                                       | 必填   | 说明                  |
6612| ----------- | ---------------------------------------- | ---- | ------------------- |
6613| sx          | number                  | 是    | x轴方向缩放系数,为负数时可看作是先关于y = px作镜像翻转后再进行缩放,该参数为浮点数。     |
6614| sy          | number                  | 是    | y轴方向缩放系数,为负数时可看作是先关于x = py作镜像翻转后再进行缩放,该参数为浮点数。     |
6615| px          | number                  | 是    |  缩放中心点的横坐标,该参数为浮点数。      |
6616| py          | number                  | 是    |  缩放中心点的纵坐标,该参数为浮点数。      |
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. |
6625
6626**示例:**
6627
6628```ts
6629import { drawing } from '@kit.ArkGraphics2D';
6630
6631let matrix = new drawing.Matrix();
6632matrix.setScale(100, 100, 150, 150);
6633```
6634
6635### setTranslation<sup>12+</sup>
6636
6637setTranslation(dx: number, dy: number): void
6638
6639设置矩阵为单位矩阵平移(dx, dy)后的结果。
6640
6641**系统能力:** SystemCapability.Graphics.Drawing
6642
6643**参数:**
6644
6645| 参数名         | 类型                                       | 必填   | 说明                  |
6646| ----------- | ---------------------------------------- | ---- | ------------------- |
6647| dx          | number                  | 是    | x轴方向平移距离,正数表示往x轴正方向平移,负数表示往x轴负方向平移,该参数为浮点数。     |
6648| dy          | number                  | 是    | y轴方向平移距离,正数表示往y轴正方向平移,负数表示往y轴负方向平移,该参数为浮点数。     |
6649
6650**错误码:**
6651
6652以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
6653
6654| 错误码ID | 错误信息 |
6655| ------- | --------------------------------------------|
6656| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. |
6657
6658**示例:**
6659
6660```ts
6661import { drawing } from '@kit.ArkGraphics2D';
6662
6663let matrix = new drawing.Matrix();
6664matrix.setTranslation(100, 100);
6665```
6666
6667### setMatrix<sup>12+</sup>
6668
6669setMatrix(values: Array\<number>): void
6670
6671用于设置矩阵对象的各项参数。
6672
6673**系统能力:** SystemCapability.Graphics.Drawing
6674
6675**参数:**
6676
6677| 参数名 | 类型                                                 | 必填 | 说明             |
6678| ------ | ---------------------------------------------------- | ---- | ---------------- |
6679| values  | Array\<number> | 是   | 长度为9的浮点数组,表示矩阵对象参数。数组中的值按下标从小,到大分别表示水平缩放系数、水平倾斜系数、水平位移系数、垂直倾斜系数、垂直缩放系数、垂直位移系数、X轴透视系数、Y轴透视系数、透视缩放系数。 |
6680
6681**错误码:**
6682
6683以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
6684
6685| 错误码ID | 错误信息 |
6686| ------- | --------------------------------------------|
6687| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types; 3. Parameter verification failed. |
6688
6689**示例:**
6690
6691```ts
6692import { drawing } from '@kit.ArkGraphics2D';
6693
6694let matrix = new drawing.Matrix();
6695let value : Array<number> = [2, 2, 2, 2, 2, 2, 2, 2, 2];
6696matrix.setMatrix(value);
6697```
6698
6699### preConcat<sup>12+</sup>
6700
6701preConcat(matrix: Matrix): void
6702
6703将当前矩阵设置为当前矩阵左乘matrix的结果。
6704
6705**系统能力:** SystemCapability.Graphics.Drawing
6706
6707**参数:**
6708
6709| 参数名 | 类型                                                 | 必填 | 说明             |
6710| ------ | ---------------------------------------------------- | ---- | ---------------- |
6711| matrix  | [Matrix](#matrix12) | 是   | 表示矩阵对象,位于乘法表达式右侧。 |
6712
6713**错误码:**
6714
6715以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
6716
6717| 错误码ID | 错误信息 |
6718| ------- | --------------------------------------------|
6719| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. |
6720
6721**示例:**
6722
6723```ts
6724import { drawing } from '@kit.ArkGraphics2D';
6725
6726let matrix1 = new drawing.Matrix();
6727matrix1.setMatrix([2, 1, 3, 1, 2, 1, 3, 1, 2]);
6728let matrix2 = new drawing.Matrix();
6729matrix2.setMatrix([-2, 1, 3, 1, 0, -1, 3, -1, 2]);
6730matrix1.preConcat(matrix2);
6731```
6732
6733### isEqual<sup>12+</sup>
6734
6735isEqual(matrix: Matrix): Boolean
6736
6737判断两个矩阵是否相等。
6738
6739**系统能力:** SystemCapability.Graphics.Drawing
6740
6741**参数:**
6742
6743| 参数名 | 类型                                                 | 必填 | 说明             |
6744| ------ | ---------------------------------------------------- | ---- | ---------------- |
6745| matrix  | [Matrix](#matrix12) | 是   | 另一个矩阵。 |
6746
6747**返回值:**
6748
6749| 类型                        | 说明                  |
6750| --------------------------- | -------------------- |
6751| Boolean | 返回两个矩阵的比较结果。true表示两个矩阵相等,false表示两个矩阵不相等。 |
6752
6753**错误码:**
6754
6755以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
6756
6757| 错误码ID | 错误信息 |
6758| ------- | --------------------------------------------|
6759| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. |
6760
6761**示例:**
6762
6763```ts
6764import { drawing } from '@kit.ArkGraphics2D';
6765
6766let matrix1 = new drawing.Matrix();
6767matrix1.setMatrix([2, 1, 3, 1, 2, 1, 3, 1, 2]);
6768let matrix2 = new drawing.Matrix();
6769matrix2.setMatrix([-2, 1, 3, 1, 0, -1, 3, -1, 2]);
6770if (matrix1.isEqual(matrix2)) {
6771  console.info("matrix1 and matrix2 are equal.");
6772} else {
6773  console.info("matrix1 and matrix2 are not equal.");
6774}
6775```
6776
6777### invert<sup>12+</sup>
6778
6779invert(matrix: Matrix): Boolean
6780
6781将矩阵matrix设置为当前矩阵的逆矩阵,并返回是否设置成功的结果。
6782
6783**系统能力:** SystemCapability.Graphics.Drawing
6784
6785**参数:**
6786
6787| 参数名 | 类型                                                 | 必填 | 说明             |
6788| ------ | ---------------------------------------------------- | ---- | ---------------- |
6789| matrix  | [Matrix](#matrix12) | 是   | 矩阵对象,用于存储获取到的逆矩阵。 |
6790
6791**返回值:**
6792
6793| 类型                        | 说明                  |
6794| --------------------------- | -------------------- |
6795| Boolean | 返回matrix是否被设置为逆矩阵的结果。true表示当前矩阵可逆,matrix被填充为逆矩阵,false表示当前矩阵不可逆,matrix不被改变。 |
6796
6797**错误码:**
6798
6799以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
6800
6801| 错误码ID | 错误信息 |
6802| ------- | --------------------------------------------|
6803| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. |
6804
6805**示例:**
6806
6807```ts
6808import { drawing } from '@kit.ArkGraphics2D';
6809
6810let matrix1 = new drawing.Matrix();
6811matrix1.setMatrix([2, 1, 3, 1, 2, 1, 3, 1, 2]);
6812let matrix2 = new drawing.Matrix();
6813matrix2.setMatrix([-2, 1, 3, 1, 0, -1, 3, -1, 2]);
6814if (matrix1.invert(matrix2)) {
6815  console.info("matrix1 is invertible and matrix2 is set as an inverse matrix of the matrix1.");
6816} else {
6817  console.info("matrix1 is not invertible and matrix2 is not changed.");
6818}
6819```
6820
6821### isIdentity<sup>12+</sup>
6822
6823isIdentity(): Boolean
6824
6825判断矩阵是否是单位矩阵。
6826
6827**系统能力:** SystemCapability.Graphics.Drawing
6828
6829**返回值:**
6830
6831| 类型                        | 说明                  |
6832| --------------------------- | -------------------- |
6833| Boolean | 返回矩阵是否是单位矩阵。true表示矩阵是单位矩阵,false表示矩阵不是单位矩阵。 |
6834
6835**示例:**
6836
6837```ts
6838import { drawing } from '@kit.ArkGraphics2D';
6839
6840let matrix = new drawing.Matrix();
6841if (matrix.isIdentity()) {
6842  console.info("matrix is identity.");
6843} else {
6844  console.info("matrix is not identity.");
6845}
6846```
6847
6848### getValue<sup>12+</sup>
6849
6850getValue(index: number): number
6851
6852获取矩阵给定索引位的值。索引范围0-8。
6853
6854**系统能力**:SystemCapability.Graphics.Drawing
6855
6856**参数:**
6857
6858| 参数名          | 类型    | 必填 | 说明                                                        |
6859| --------------- | ------- | ---- | ----------------------------------------------------------- |
6860| index | number | 是   | 索引位置,范围0-8,该参数为整数。 |
6861
6862**返回值:**
6863
6864| 类型                  | 说明           |
6865| --------------------- | -------------- |
6866| number | 函数返回矩阵给定索引位对应的值,该返回值为整数。 |
6867
6868**错误码:**
6869
6870以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
6871
6872| 错误码ID | 错误信息 |
6873| ------- | --------------------------------------------|
6874| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified;2. Incorrect parameter types;3. Parameter verification failed.|
6875
6876**示例:**
6877
6878```ts
6879import {drawing} from "@kit.ArkGraphics2D"
6880let matrix = new drawing.Matrix();
6881for (let i = 0; i < 9; i++) {
6882    console.info("matrix "+matrix.getValue(i).toString());
6883}
6884```
6885
6886### postRotate<sup>12+</sup>
6887
6888postRotate(degree: number, px: number, py: number): void
6889
6890将矩阵设置为矩阵右乘围绕轴心点旋转一定角度的单位矩阵后得到的矩阵。
6891
6892**系统能力**:SystemCapability.Graphics.Drawing
6893
6894**参数:**
6895
6896| 参数名          | 类型    | 必填 | 说明                                                        |
6897| --------------- | ------- | ---- | ----------------------------------------------------------- |
6898| degree | number | 是   | 旋转角度,单位为度。正数表示顺时针旋转,负数表示逆时针旋转,该参数为浮点数。 |
6899| px | number | 是   | 旋转中心点的横坐标,该参数为浮点数。 |
6900| py | number | 是   | 旋转中心点的纵坐标,该参数为浮点数。 |
6901
6902**错误码:**
6903
6904以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
6905
6906| 错误码ID | 错误信息 |
6907| ------- | --------------------------------------------|
6908| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. |
6909
6910**示例:**
6911
6912```ts
6913import {drawing} from "@kit.ArkGraphics2D"
6914let matrix = new drawing.Matrix();
6915let degree: number = 2;
6916let px: number = 3;
6917let py: number = 4;
6918matrix.postRotate(degree, px, py);
6919console.info("matrix= "+matrix.getAll().toString());
6920```
6921
6922### postScale<sup>12+</sup>
6923
6924postScale(sx: number, sy: number, px: number, py: number): void
6925
6926将矩阵设置为矩阵右乘围绕轴心点按一定缩放系数缩放后的单位矩阵后得到的矩阵。
6927
6928**系统能力**:SystemCapability.Graphics.Drawing
6929
6930**参数:**
6931
6932| 参数名          | 类型    | 必填 | 说明                                                        |
6933| --------------- | ------- | ---- | ----------------------------------------------------------- |
6934| sx | number | 是   | x轴方向缩放系数,为负数时可看作是先关于y = px作镜像翻转后再进行缩放,该参数为浮点数。 |
6935| sy | number | 是   | y轴方向缩放系数,为负数时可看作是先关于x = py作镜像翻转后再进行缩放,该参数为浮点数。 |
6936| px | number | 是   | 缩放中心点的横坐标,该参数为浮点数。 |
6937| py | number | 是   | 缩放中心点的纵坐标,该参数为浮点数。 |
6938
6939**错误码:**
6940
6941以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
6942
6943| 错误码ID | 错误信息 |
6944| ------- | --------------------------------------------|
6945| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. |
6946
6947**示例:**
6948
6949```ts
6950import {drawing} from "@kit.ArkGraphics2D"
6951let matrix = new drawing.Matrix();
6952let sx: number = 2;
6953let sy: number = 0.5;
6954let px: number = 1;
6955let py: number = 1;
6956matrix.postScale(sx, sy, px, py);
6957console.info("matrix= "+matrix.getAll().toString());
6958```
6959
6960### postTranslate<sup>12+</sup>
6961
6962postTranslate(dx: number, dy: number): void
6963
6964将矩阵设置为矩阵右乘平移一定距离后的单位矩阵后得到的矩阵。
6965
6966**系统能力**:SystemCapability.Graphics.Drawing
6967
6968**参数:**
6969
6970| 参数名          | 类型    | 必填 | 说明                                                        |
6971| --------------- | ------- | ---- | ----------------------------------------------------------- |
6972| dx | number | 是   | x轴方向平移距离,正数表示往x轴正方向平移,负数表示往x轴负方向平移,该参数为浮点数。 |
6973| dy | number | 是   | y轴方向平移距离,正数表示往y轴正方向平移,负数表示往y轴负方向平移,该参数为浮点数。 |
6974
6975**错误码:**
6976
6977以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
6978
6979| 错误码ID | 错误信息 |
6980| ------- | --------------------------------------------|
6981| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. |
6982
6983**示例:**
6984
6985```ts
6986import {drawing} from "@kit.ArkGraphics2D"
6987let matrix = new drawing.Matrix();
6988let dx: number = 3;
6989let dy: number = 4;
6990matrix.postTranslate(dx, dy);
6991console.info("matrix= "+matrix.getAll().toString());
6992```
6993
6994### preRotate<sup>12+</sup>
6995
6996preRotate(degree: number, px: number, py: number): void
6997
6998将矩阵设置为矩阵左乘围绕轴心点旋转一定角度的单位矩阵后得到的矩阵。
6999
7000**系统能力**:SystemCapability.Graphics.Drawing
7001
7002**参数:**
7003
7004| 参数名          | 类型    | 必填 | 说明                                                        |
7005| --------------- | ------- | ---- | ----------------------------------------------------------- |
7006| degree | number | 是   | 旋转角度,单位为度。正数表示顺时针旋转,负数表示逆时针旋转,该参数为浮点数。 |
7007| px | number | 是   | 旋转中心点的横坐标,该参数为浮点数。 |
7008| py | number | 是   | 旋转中心点的纵坐标,该参数为浮点数。 |
7009
7010**错误码:**
7011
7012以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
7013
7014| 错误码ID | 错误信息 |
7015| ------- | --------------------------------------------|
7016| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. |
7017
7018**示例:**
7019
7020```ts
7021import {drawing} from "@kit.ArkGraphics2D"
7022let matrix = new drawing.Matrix();
7023let degree: number = 2;
7024let px: number = 3;
7025let py: number = 4;
7026matrix.preRotate(degree, px, py);
7027console.info("matrix= "+matrix.getAll().toString());
7028```
7029
7030### preScale<sup>12+</sup>
7031
7032preScale(sx: number, sy: number, px: number, py: number): void
7033
7034将矩阵设置为矩阵左乘围绕轴心点按一定缩放系数缩放后的单位矩阵后得到的矩阵。
7035
7036**系统能力**:SystemCapability.Graphics.Drawing
7037
7038**参数:**
7039
7040| 参数名          | 类型    | 必填 | 说明                                                        |
7041| --------------- | ------- | ---- | ----------------------------------------------------------- |
7042| sx | number | 是   | x轴方向缩放系数,为负数时可看作是先关于y = px作镜像翻转后再进行缩放,该参数为浮点数。 |
7043| sy | number | 是   | y轴方向缩放系数,为负数时可看作是先关于x = py作镜像翻转后再进行缩放,该参数为浮点数。 |
7044| px | number | 是   | 轴心点横坐标,该参数为浮点数。 |
7045| py | number | 是   | 轴心点纵坐标,该参数为浮点数。 |
7046
7047**错误码:**
7048
7049以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
7050
7051| 错误码ID | 错误信息 |
7052| ------- | --------------------------------------------|
7053| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. |
7054
7055**示例:**
7056
7057```ts
7058import {drawing} from "@kit.ArkGraphics2D"
7059let matrix = new drawing.Matrix();
7060let sx: number = 2;
7061let sy: number = 0.5;
7062let px: number = 1;
7063let py: number = 1;
7064matrix.preScale(sx, sy, px, py);
7065console.info("matrix"+matrix.getAll().toString());
7066```
7067
7068### preTranslate<sup>12+</sup>
7069
7070preTranslate(dx: number, dy: number): void
7071
7072将矩阵设置为矩阵左乘平移一定距离后的单位矩阵后得到的矩阵。
7073
7074**系统能力**:SystemCapability.Graphics.Drawing
7075
7076**参数:**
7077
7078| 参数名          | 类型    | 必填 | 说明                                                        |
7079| --------------- | ------- | ---- | ----------------------------------------------------------- |
7080| dx | number | 是   | x轴方向平移距离,正数表示往x轴正方向平移,负数表示往x轴负方向平移,该参数为浮点数。 |
7081| dy | number | 是   | y轴方向平移距离,正数表示往y轴正方向平移,负数表示往y轴负方向平移,该参数为浮点数。 |
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 dx: number = 3;
7097let dy: number = 4;
7098matrix.preTranslate(dx, dy);
7099console.info("matrix"+matrix.getAll().toString());
7100```
7101
7102### reset<sup>12+</sup>
7103
7104reset(): void
7105
7106重置当前矩阵为单位矩阵。
7107
7108**系统能力**:SystemCapability.Graphics.Drawing
7109
7110**示例:**
7111
7112```ts
7113import {drawing} from "@kit.ArkGraphics2D"
7114let matrix = new drawing.Matrix();
7115matrix.postScale(2, 3, 4, 5);
7116matrix.reset();
7117console.info("matrix= "+matrix.getAll().toString());
7118```
7119
7120### mapPoints<sup>12+</sup>
7121
7122mapPoints(src: Array\<common2D.Point>): Array\<common2D.Point>
7123
7124通过矩阵变换将源点数组映射到目标点数组。
7125
7126**系统能力**:SystemCapability.Graphics.Drawing
7127
7128**参数:**
7129
7130| 参数名          | 类型    | 必填 | 说明                                                        |
7131| --------------- | ------- | ---- | ----------------------------------------------------------- |
7132| src | Array\<[common2D.Point](js-apis-graphics-common2D.md#point)> | 是   | 源点数组。 |
7133
7134**返回值:**
7135
7136| 类型                  | 说明           |
7137| --------------------- | -------------- |
7138| Array\<[common2D.Point](js-apis-graphics-common2D.md#point)> | 源点数组经矩阵变换后的点数组。 |
7139
7140**错误码:**
7141
7142以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
7143
7144| 错误码ID | 错误信息 |
7145| ------- | --------------------------------------------|
7146| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. |
7147
7148**示例:**
7149
7150```ts
7151import {drawing,common2D} from "@kit.ArkGraphics2D"
7152let src: Array<common2D.Point> = [];
7153src.push({x: 15, y: 20});
7154src.push({x: 20, y: 15});
7155src.push({x: 30, y: 10});
7156let matrix = new drawing.Matrix();
7157let dst: Array<common2D.Point> = matrix.mapPoints(src);
7158console.info("matrix= src: "+JSON.stringify(src));
7159console.info("matrix= dst: "+JSON.stringify(dst));
7160```
7161
7162### getAll<sup>12+</sup>
7163
7164getAll(): Array\<number>
7165
7166获取矩阵所有元素值。
7167
7168**系统能力**:SystemCapability.Graphics.Drawing
7169
7170**返回值:**
7171
7172| 类型                  | 说明           |
7173| --------------------- | -------------- |
7174| Array\<number> | 存储矩阵元素值的浮点数组,长度为9。 |
7175
7176**示例:**
7177
7178```ts
7179import {drawing} from "@kit.ArkGraphics2D"
7180let matrix = new drawing.Matrix();
7181console.info("matrix "+ matrix.getAll());
7182```
7183
7184### mapRect<sup>12+</sup>
7185
7186mapRect(dst: common2D.Rect, src: common2D.Rect): boolean
7187
7188将目标矩形设置为源矩形通过矩阵变换后的图形的外接矩形。如下图所示,蓝色矩形为源矩形,假设黄色矩形为源矩形通过矩阵变换形成的图形,此时黄色矩形的边不与坐标轴平行,无法使用矩形对象表示,因此,将目标矩形设置为黄色矩形的外接矩形,即黑色矩形。
7189
7190![mapRect](./figures/zh-ch_matrix_mapRect.png)
7191
7192**系统能力**:SystemCapability.Graphics.Drawing
7193
7194**参数:**
7195
7196| 参数名          | 类型    | 必填 | 说明                                                        |
7197| --------------- | ------- | ---- | ----------------------------------------------------------- |
7198| dst | [common2D.Rect](js-apis-graphics-common2D.md#rect) | 是   | 目标矩形对象,用于存储源矩形经矩阵变换后的的图形的外接矩形。 |
7199| src |[common2D.Rect](js-apis-graphics-common2D.md#rect) | 是   | 源矩形对象。 |
7200
7201**返回值:**
7202
7203| 类型                  | 说明           |
7204| --------------------- | -------------- |
7205| boolean | 返回源矩形经过矩阵变换后的图形是否仍然是矩形的结果,true表示是矩形,false表示不是矩形。 |
7206
7207**错误码:**
7208
7209以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
7210
7211| 错误码ID | 错误信息 |
7212| ------- | --------------------------------------------|
7213| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. |
7214
7215**示例:**
7216
7217```ts
7218import {drawing,common2D} from "@kit.ArkGraphics2D"
7219let dst: common2D.Rect = { left: 100, top: 20, right: 130, bottom: 60 };
7220let src: common2D.Rect = { left: 100, top: 80, right: 130, bottom: 120 };
7221let matrix = new drawing.Matrix();
7222if (matrix.mapRect(dst, src)) {
7223    console.info("matrix= dst "+JSON.stringify(dst));
7224}
7225```
7226
7227### setRectToRect<sup>12+</sup>
7228
7229setRectToRect(src: common2D.Rect, dst: common2D.Rect, scaleToFit: ScaleToFit): boolean
7230
7231将当前矩阵设置为能使源矩形映射到目标矩形的变换矩阵。
7232
7233**系统能力**:SystemCapability.Graphics.Drawing
7234
7235**参数:**
7236
7237| 参数名          | 类型    | 必填 | 说明                                                        |
7238| --------------- | ------- | ---- | ----------------------------------------------------------- |
7239| src | [common2D.Rect](js-apis-graphics-common2D.md#rect) | 是   | 源矩形。 |
7240| dst | [common2D.Rect](js-apis-graphics-common2D.md#rect) | 是   | 目标矩形。 |
7241| scaleToFit | [ScaleToFit](#scaletofit12) | 是   | 源矩形到目标矩形的映射方式。 |
7242
7243**返回值:**
7244
7245| 类型                  | 说明           |
7246| --------------------- | -------------- |
7247| boolean | 返回矩阵是否可以表示矩形之间的映射,true表示可以,false表示不可以。特别地,如果源矩形的宽高任意一个小于等于0,则返回false,并将矩阵设置为单位矩阵;如果目标矩形的宽高任意一个小于等于0,则返回true,并将矩阵设置为除透视缩放系数为1外其余值皆为0的矩阵。 |
7248
7249**错误码:**
7250
7251以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
7252
7253| 错误码ID | 错误信息 |
7254| ------- | --------------------------------------------|
7255| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types;3.Parameter verification failed. |
7256
7257**示例:**
7258
7259```ts
7260import {drawing,common2D} from "@kit.ArkGraphics2D"
7261let src: common2D.Rect = { left: 100, top: 100, right: 300, bottom: 300 };
7262let dst: common2D.Rect = { left: 200, top: 200, right: 600, bottom: 600 };
7263let scaleToFit: drawing.ScaleToFit = drawing.ScaleToFit.FILL_SCALE_TO_FIT
7264let matrix = new drawing.Matrix();
7265if (matrix.setRectToRect(src, dst, scaleToFit)) {
7266    console.info("matrix"+matrix.getAll().toString());
7267}
7268```
7269
7270### setPolyToPoly<sup>12+</sup>
7271
7272setPolyToPoly(src: Array\<common2D.Point>, dst: Array\<common2D.Point>, count: number): boolean
7273
7274将当前矩阵设置为能使源点数组映射到目标点数组的变换矩阵。
7275
7276**系统能力**:SystemCapability.Graphics.Drawing
7277
7278**参数:**
7279
7280| 参数名          | 类型    | 必填 | 说明                                                        |
7281| --------------- | ------- | ---- | ----------------------------------------------------------- |
7282| src | Array\<[common2D.Point](js-apis-graphics-common2D.md#point)> | 是   | 源点数组,长度必须为count。 |
7283| dst | Array\<[common2D.Point](js-apis-graphics-common2D.md#point)> | 是   | 目标点数组,长度必须为count。 |
7284| count | number | 是   | 在src和dst点的数量,该参数为整数。 |
7285
7286**返回值:**
7287
7288| 类型                  | 说明           |
7289| --------------------- | -------------- |
7290| boolean | 返回设置矩阵是否成功的结果,true表示设置成功,false表示设置失败。 |
7291
7292**错误码:**
7293
7294以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
7295
7296| 错误码ID | 错误信息 |
7297| ------- | --------------------------------------------|
7298| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. |
7299
7300**示例:**
7301
7302```ts
7303import {drawing,common2D} from "@kit.ArkGraphics2D"
7304let srcPoints: Array<common2D.Point> = [ {x: 10, y: 20}, {x: 200, y: 150} ];
7305let dstPoints: Array<common2D.Point> = [{ x:0, y: 10 }, { x:300, y: 600 }];
7306let matrix = new drawing.Matrix();
7307if (matrix.setPolyToPoly(srcPoints, dstPoints, 2)) {
7308    console.info("matrix"+matrix.getAll().toString());
7309}
7310```
7311
7312## RoundRect<sup>12+</sup>
7313
7314圆角矩形对象。
7315
7316### constructor<sup>12+</sup>
7317
7318constructor(rect: common2D.Rect, xRadii: number, yRadii: number)
7319
7320构造一个圆角矩形对象,当且仅当xRadii和yRadii均大于0时,圆角生效,否则只会构造一个矩形。
7321
7322**系统能力:** SystemCapability.Graphics.Drawing
7323
7324**参数:**
7325
7326| 参数名         | 类型                                       | 必填   | 说明                  |
7327| ----------- | ---------------------------------------- | ---- | ------------------- |
7328| rect        | [common2D.Rect](js-apis-graphics-common2D.md#rect) | 是    | 需要创建的圆角矩形区域。      |
7329| xRadii        | number                  | 是    | X轴上的圆角半径,该参数为浮点数,小于等于0时无效。     |
7330| yRadii        | number                  | 是    | Y轴上的圆角半径,该参数为浮点数,小于等于0时无效。     |
7331
7332**错误码:**
7333
7334以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
7335
7336| 错误码ID | 错误信息 |
7337| ------- | --------------------------------------------|
7338| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. |
7339
7340**示例:**
7341
7342```ts
7343import { common2D, drawing } from '@kit.ArkGraphics2D';
7344
7345let rect: common2D.Rect = {left : 100, top : 100, right : 500, bottom : 300};
7346let roundRect = new drawing.RoundRect(rect, 50, 50);
7347```
7348### setCorner<sup>12+</sup>
7349
7350setCorner(pos: CornerPos, x: number, y: number): void
7351
7352用于设置圆角矩形中指定圆角位置的圆角半径。
7353
7354**系统能力:** SystemCapability.Graphics.Drawing
7355
7356**参数:**
7357
7358| 参数名   | 类型                                         | 必填 | 说明                            |
7359| -------- | -------------------------------------------- | ---- | ------------------------------- |
7360| pos | [CornerPos](#cornerpos12) | 是   | 圆角位置。                 |
7361| x     | number                 | 是   | x轴方向的圆角半径,该参数为浮点数。 |
7362| y     | number      | 是   | y轴方向的圆角半径,该参数为浮点数。 |
7363
7364**错误码:**
7365
7366以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
7367
7368| 错误码ID | 错误信息 |
7369| ------- | --------------------------------------------|
7370| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types;3.Parameter verification failed. |
7371
7372**示例:**
7373
7374```ts
7375import { drawing } from '@kit.ArkGraphics2D';
7376let roundRect : drawing.RoundRect = new drawing.RoundRect({left: 0, top: 0, right: 300, bottom: 300}, 50, 50);
7377roundRect.setCorner(drawing.CornerPos.TOP_LEFT_POS, 150, 150);
7378```
7379
7380### getCorner<sup>12+</sup>
7381
7382getCorner(pos: CornerPos): common2D.Point
7383
7384获取圆角矩形中指定圆角位置的圆角半径。
7385
7386**系统能力:** SystemCapability.Graphics.Drawing
7387
7388**参数:**
7389
7390| 参数名   | 类型                                         | 必填 | 说明                            |
7391| -------- | -------------------------------------------- | ---- | ------------------------------- |
7392| pos | [CornerPos](#cornerpos12) | 是   | 圆角位置。                 |
7393
7394**返回值:**
7395
7396| 类型                  | 说明           |
7397| --------------------- | -------------- |
7398| [common2D.Point](js-apis-graphics-common2D.md#point)  | 返回一个点,其横坐标表示圆角x轴方向上的半径,纵坐标表示y轴方向上的半径。 |
7399
7400**错误码:**
7401
7402以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
7403
7404| 错误码ID | 错误信息 |
7405| ------- | --------------------------------------------|
7406| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types;3.Parameter verification failed. |
7407
7408**示例:**
7409
7410```ts
7411import { drawing } from '@kit.ArkGraphics2D';
7412let roundRect : drawing.RoundRect = new drawing.RoundRect({left: 0, top: 0, right: 300, bottom: 300}, 50, 50);
7413let cornerRadius = roundRect.getCorner(drawing.CornerPos.BOTTOM_LEFT_POS);
7414console.info("getCorner---"+cornerRadius.x)
7415console.info("getCorner---"+cornerRadius.y)
7416```
7417
7418### offset<sup>12+</sup>
7419
7420offset(dx: number, dy: number): void
7421
7422将圆角矩形分别沿x轴方向和y轴方向平移dx,dy。
7423
7424**系统能力:** SystemCapability.Graphics.Drawing
7425
7426**参数:**
7427
7428| 参数名   | 类型                                         | 必填 | 说明                            |
7429| -------- | -------------------------------------------- | ---- | ------------------------------- |
7430| dx | number | 是   | 表示x轴方向上的偏移量,正数表示往x轴正方向平移,负数表示往x轴负方向平移,该参数为浮点数。                 |
7431| dy | number | 是   | 表示y轴方向上的偏移量,正数表示往y轴正方向平移,负数表示往y轴负方向平移,该参数为浮点数。                 |
7432
7433**错误码:**
7434
7435以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
7436
7437| 错误码ID | 错误信息 |
7438| ------- | --------------------------------------------|
7439| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. |
7440
7441**示例:**
7442
7443```ts
7444import { drawing } from '@kit.ArkGraphics2D';
7445let roundRect : drawing.RoundRect = new drawing.RoundRect({left: 0, top: 0, right: 300, bottom: 300}, 50, 50);
7446roundRect.offset(100, 100);
7447```
7448
7449## Region<sup>12+</sup>
7450
7451区域对象,用于描述所绘制图形的区域信息。
7452
7453### isPointContained<sup>12+</sup>
7454
7455isPointContained(x: number, y: number) : boolean
7456
7457用于判断测试点是否在区域内。
7458
7459**系统能力:** SystemCapability.Graphics.Drawing
7460
7461**参数:**
7462
7463| 参数名 | 类型   | 必填 | 说明                    |
7464| ------ | ------ | ---- | ----------------------- |
7465| x      | number | 是   | 测试点的x轴坐标。该参数必须为整数。当输入的数字带小数时,小数部分会被舍去。 |
7466| y      | number | 是   | 测试点的y轴坐标。该参数必须为整数。当输入的数字带小数时,小数部分会被舍去。 |
7467
7468**返回值:**
7469
7470| 类型    | 说明           |
7471| ------- | -------------- |
7472| boolean | 返回测试点是否在区域内的结果。true表示测试点在区域内,false表示测试点不在区域内。 |
7473
7474**错误码:**
7475
7476以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
7477
7478| 错误码ID | 错误信息 |
7479| ------- | --------------------------------------------|
7480| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. |
7481
7482**示例:**
7483
7484```ts
7485import { RenderNode } from '@kit.ArkUI';
7486class DrawingRenderNode extends RenderNode {
7487  draw(context : DrawContext) {
7488    const canvas = context.canvas;
7489    const pen = new drawing.Pen();
7490    pen.setColor({ alpha: 255, red: 255, green: 0, blue: 0 });
7491    pen.setStrokeWidth(10);
7492    canvas.attachPen(pen);
7493    let region = new drawing.Region();
7494    region.setRect(100, 100, 400, 400);
7495    let flag: boolean = false;
7496    flag = region.isPointContained(200,200);
7497    console.info("region isPointContained : " + flag);
7498    canvas.drawPoint(200,200);
7499    canvas.drawRegion(region);
7500    canvas.detachPen();
7501  }
7502}
7503```
7504
7505### isRegionContained<sup>12+</sup>
7506
7507isRegionContained(other: Region) : boolean
7508
7509用于判断其他区域是否在当前区域内。
7510
7511**系统能力:** SystemCapability.Graphics.Drawing
7512
7513**参数:**
7514
7515| 参数名 | 类型   | 必填 | 说明                    |
7516| ------ | ------ | ---- | ----------------------- |
7517| other      | [Region](#region12) | 是   | 区域对象。 |
7518
7519**返回值:**
7520
7521| 类型    | 说明           |
7522| ------- | -------------- |
7523| boolean | 返回其他区域是否在当前区域内的结果。true表示其他区域在当前区域内,false表示其他区域不在当前区域内。 |
7524
7525**错误码:**
7526
7527以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
7528
7529| 错误码ID | 错误信息 |
7530| ------- | --------------------------------------------|
7531| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. |
7532
7533**示例:**
7534
7535```ts
7536import { RenderNode } from '@kit.ArkUI';
7537class DrawingRenderNode extends RenderNode {
7538  draw(context : DrawContext) {
7539    const canvas = context.canvas;
7540    const pen = new drawing.Pen();
7541    pen.setColor({ alpha: 255, red: 255, green: 0, blue: 0 });
7542    pen.setStrokeWidth(10);
7543    canvas.attachPen(pen);
7544    let region = new drawing.Region();
7545    let other = new drawing.Region();
7546    region.setRect(100, 100, 400, 400);
7547    other.setRect(150, 150, 250 ,250);
7548    let flag: boolean = false;
7549    flag = region.isRegionContained(other);
7550    console.info("region isRegionContained : " + flag);
7551    canvas.drawRegion(region);
7552    canvas.drawRegion(other);
7553    canvas.detachPen();
7554  }
7555}
7556```
7557
7558### op<sup>12+</sup>
7559
7560op(region: Region, regionOp: RegionOp) : boolean
7561
7562用于将当前区域与指定区域进行指定运算操作,并将当前区域替换为运算结果。
7563
7564**系统能力:** SystemCapability.Graphics.Drawing
7565
7566**参数:**
7567
7568| 参数名 | 类型   | 必填 | 说明                    |
7569| ------ | ------ | ---- | ----------------------- |
7570| region      | [Region](#region12) | 是   | 区域对象。 |
7571| regionOp      | [RegionOp](#regionop12) | 是   | 区域合并操作类型。 |
7572
7573**返回值:**
7574
7575| 类型    | 说明           |
7576| ------- | -------------- |
7577| boolean | 返回区域运算结果是否成功替换当前区域。true表示区域运算结果替换当前区域成功,false表示区域运算结果替换当前区域失败。 |
7578
7579**错误码:**
7580
7581以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
7582
7583| 错误码ID | 错误信息 |
7584| ------- | --------------------------------------------|
7585| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. |
7586
7587**示例:**
7588
7589```ts
7590import { RenderNode } from '@kit.ArkUI';
7591class DrawingRenderNode extends RenderNode {
7592  draw(context : DrawContext) {
7593    const canvas = context.canvas;
7594    const pen = new drawing.Pen();
7595    pen.setColor({ alpha: 255, red: 255, green: 0, blue: 0 });
7596    pen.setStrokeWidth(10);
7597    canvas.attachPen(pen);
7598    let region = new drawing.Region();
7599    region.setRect(200, 200, 400, 400);
7600    let othregion = new drawing.Region();
7601    othregion.setRect(110, 110, 240, 240);
7602    let flag: boolean = false;
7603    flag = region.op(othregion,drawing.RegionOp.REPLACE);
7604    console.info("region op : " + flag);
7605    canvas.drawRegion(region);
7606    canvas.detachPen();
7607  }
7608}
7609```
7610
7611### quickReject<sup>12+</sup>
7612
7613quickReject(left: number, top: number, right: number, bottom: number) : boolean
7614
7615用于快速判断矩形和区域是否不相交,实际上比较的是矩形和区域的外接矩形是否不相交,因此会有误差。
7616
7617**系统能力:** SystemCapability.Graphics.Drawing
7618
7619**参数:**
7620
7621| 参数名 | 类型   | 必填 | 说明                    |
7622| ------ | ------ | ---- | ----------------------- |
7623| left   | number | 是   | 矩形区域的左侧位置。该参数必须为整数。当输入的数字带小数时,小数部分会被舍去。 |
7624| top    | number | 是   | 矩形区域的顶部位置。该参数必须为整数。当输入的数字带小数时,小数部分会被舍去。 |
7625| right  | number | 是   | 矩形区域的右侧位置。该参数必须为整数。当输入的数字带小数时,小数部分会被舍去。 |
7626| bottom | number | 是   | 矩形区域的底部位置。该参数必须为整数。当输入的数字带小数时,小数部分会被舍去。 |
7627
7628**返回值:**
7629
7630| 类型    | 说明           |
7631| ------- | -------------- |
7632| boolean | 返回矩形是否与区域不相交的结果。true表示矩形与区域不相交,false表示矩形与区域相交。 |
7633
7634**错误码:**
7635
7636以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
7637
7638| 错误码ID | 错误信息 |
7639| ------- | --------------------------------------------|
7640| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. |
7641
7642**示例:**
7643
7644```ts
7645import { RenderNode } from '@kit.ArkUI';
7646class DrawingRenderNode extends RenderNode {
7647  draw(context : DrawContext) {
7648    const canvas = context.canvas;
7649    const pen = new drawing.Pen();
7650    pen.setColor({ alpha: 255, red: 255, green: 0, blue: 0 });
7651    pen.setStrokeWidth(10);
7652    canvas.attachPen(pen);
7653    let region = new drawing.Region();
7654    region.setRect(100, 100, 400, 400);
7655    let flag: boolean = false;
7656    flag = region.quickReject(50, 50, 70, 70);
7657    console.info("region quickReject : " + flag);
7658    canvas.drawRegion(region);
7659    canvas.detachPen();
7660  }
7661}
7662```
7663
7664### setPath<sup>12+</sup>
7665
7666setPath(path: Path, clip: Region) : boolean
7667
7668设置一个与裁剪区域内路径的轮廓相匹配的区域。
7669
7670**系统能力:** SystemCapability.Graphics.Drawing
7671
7672**参数:**
7673
7674| 参数名 | 类型   | 必填 | 说明                    |
7675| ------ | ------ | ---- | ----------------------- |
7676| path      | [Path](#path) | 是   | 路径对象。 |
7677| clip      | [Region](#region12) | 是   | 区域对象。 |
7678
7679**返回值:**
7680
7681| 类型    | 说明           |
7682| ------- | -------------- |
7683| boolean | 返回是否成功设置一个与裁剪区域内路径的轮廓相匹配的区域。true表示设置成功,false表示设置失败。 |
7684
7685**错误码:**
7686
7687以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
7688
7689| 错误码ID | 错误信息 |
7690| ------- | --------------------------------------------|
7691| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. |
7692
7693**示例:**
7694
7695```ts
7696import { RenderNode } from '@kit.ArkUI';
7697class DrawingRenderNode extends RenderNode {
7698  draw(context : DrawContext) {
7699    const canvas = context.canvas;
7700    const pen = new drawing.Pen();
7701    pen.setColor({ alpha: 255, red: 255, green: 0, blue: 0 });
7702    pen.setStrokeWidth(10);
7703    canvas.attachPen(pen);
7704    let region = new drawing.Region();
7705    let path = new drawing.Path();
7706    region.setRect(100, 100, 400, 400);
7707    path.arcTo(50, 50, 300, 300, 0, 359);
7708    let flag: boolean = false;
7709    flag = region.setPath(path,region);
7710    console.info("region setPath : " + flag);
7711    canvas.drawRegion(region);
7712    canvas.detachPen();
7713  }
7714}
7715```
7716
7717### setRect<sup>12+</sup>
7718
7719setRect(left: number, top: number, right: number, bottom: number) : boolean
7720
7721设置一个矩形区域。
7722
7723**系统能力:** SystemCapability.Graphics.Drawing
7724
7725**参数:**
7726
7727| 参数名 | 类型   | 必填 | 说明                    |
7728| ------ | ------ | ---- | ----------------------- |
7729| left   | number | 是   | 矩形区域的左侧位置。该参数必须为整数。当输入的数字带小数时,小数部分会被舍去。 |
7730| top    | number | 是   | 矩形区域的顶部位置。该参数必须为整数。当输入的数字带小数时,小数部分会被舍去。 |
7731| right  | number | 是   | 矩形区域的右侧位置。该参数必须为整数。当输入的数字带小数时,小数部分会被舍去。 |
7732| bottom | number | 是   | 矩形区域的底部位置。该参数必须为整数。当输入的数字带小数时,小数部分会被舍去。 |
7733
7734**返回值:**
7735
7736| 类型    | 说明           |
7737| ------- | -------------- |
7738| boolean | 返回设置矩形区域是否成功的结果。true表示设置矩形区域成功,false表示设置矩形区域失败。 |
7739
7740**错误码:**
7741
7742以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
7743
7744| 错误码ID | 错误信息 |
7745| ------- | --------------------------------------------|
7746| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. |
7747
7748**示例:**
7749
7750```ts
7751import { RenderNode } from '@kit.ArkUI';
7752class DrawingRenderNode extends RenderNode {
7753  draw(context : DrawContext) {
7754    const canvas = context.canvas;
7755    const pen = new drawing.Pen();
7756    pen.setColor({ alpha: 255, red: 255, green: 0, blue: 0 });
7757    pen.setStrokeWidth(10);
7758    canvas.attachPen(pen);
7759    let region = new drawing.Region();
7760    let flag: boolean = false;
7761    flag = region.setRect(50, 50, 300, 300);
7762    console.info("region setRect : " + flag);
7763    canvas.drawRegion(region);
7764    canvas.detachPen();
7765  }
7766}
7767```
7768
7769## TileMode<sup>12+</sup>
7770
7771着色器效果平铺模式的枚举。
7772
7773**系统能力**:SystemCapability.Graphics.Drawing
7774
7775| 名称                   | 值   | 说明                           |
7776| ---------------------- | ---- | ------------------------------ |
7777| CLAMP     | 0    | 如果着色器效果超出其原始边界,剩余区域使用着色器的边缘颜色填充。 |
7778| REPEAT    | 1    | 在水平和垂直方向上重复着色器效果。 |
7779| MIRROR    | 2    | 在水平和垂直方向上重复着色器效果,交替镜像图像,以便相邻图像始终接合。 |
7780| DECAL     | 3    | 仅在其原始边界内渲染着色器效果。|
7781
7782## ShaderEffect<sup>12+</sup>
7783
7784着色器。画刷和画笔设置着色器后,会使用着色器效果而不是颜色属性去绘制,但此时画笔和画刷的透明度属性仍然生效。
7785
7786### createColorShader<sup>12+</sup>
7787
7788static createColorShader(color: number): ShaderEffect
7789
7790创建具有单一颜色的着色器。
7791
7792**系统能力:** SystemCapability.Graphics.Drawing
7793
7794**参数:**
7795
7796| 参数名 | 类型                                               | 必填 | 说明           |
7797| ------ | -------------------------------------------------- | ---- | -------------- |
7798| color   | number | 是   | 表示着色器的ARGB格式颜色,该参数为32位无符号整数。 |
7799
7800**返回值:**
7801
7802| 类型    | 说明                       |
7803| ------- | ------------------------- |
7804| [ShaderEffect](#shadereffect12) | 返回具有单一颜色的着色器对象。 |
7805
7806**错误码:**
7807
7808以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
7809
7810| 错误码ID | 错误信息 |
7811| ------- | --------------------------------------------|
7812| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. |
7813
7814**示例:**
7815
7816```ts
7817import { drawing } from '@kit.ArkGraphics2D';
7818
7819let shaderEffect = drawing.ShaderEffect.createColorShader(0xFFFF0000);
7820```
7821
7822### createLinearGradient<sup>12+</sup>
7823
7824static createLinearGradient(startPt: common2D.Point, endPt: common2D.Point, colors: Array
7825\<number>, mode: TileMode, pos?: Array\<number> | null, matrix?: Matrix | null): ShaderEffect
7826
7827创建着色器,在两个指定点之间生成线性渐变。
7828
7829**系统能力:** SystemCapability.Graphics.Drawing
7830
7831**参数:**
7832
7833| 参数名 | 类型                                               | 必填 | 说明           |
7834| ------ | -------------------------------------------------- | ---- | -------------- |
7835| startPt  | [common2D.Point](js-apis-graphics-common2D.md#point)  | 是   | 表示渐变的起点。 |
7836| endPt   | [common2D.Point](js-apis-graphics-common2D.md#point)  | 是   | 表示渐变的终点。 |
7837| colors | Array\<number> | 是   | 表示在两个点之间分布的颜色数组,数组中的值为32位(ARGB)无符号整数。 |
7838| mode  | [TileMode](#tilemode12) | 是   | 着色器效果平铺模式。 |
7839| pos | Array\<number> \|null| 否   | 表示每种对应颜色在颜色数组中的相对位置。数组长度需和colors保持一致,数组的首个元素应当是0.0,末尾元素应当是1.0,中间的元素应当在0与1之间并且逐下标递增,表示colors中每个对应颜色的相对位置。默认为null,表示颜色均匀分布在起点和终点之间。 |
7840| matrix | [Matrix](#matrix12) \| null | 否   | 矩阵对象,用于对着色器做矩阵变换。默认为null,表示单位矩阵。 |
7841
7842![LinearGradient](./figures/zh-ch_image_createLinearGradient.png)
7843
7844如上图是设置颜色数组为红绿蓝,位置数组为0.0,0.75,1.0后的显示效果。三角下标即为对应的颜色所在起始点和终点之间的相对位置,颜色与颜色之间使用渐变填充。
7845
7846**返回值:**
7847
7848| 类型    | 说明                       |
7849| ------- | ------------------------- |
7850| [ShaderEffect](#shadereffect12) | 返回创建的着色器对象。 |
7851
7852**错误码:**
7853
7854以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
7855
7856| 错误码ID | 错误信息 |
7857| ------- | --------------------------------------------|
7858| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types; 3. Parameter verification failed. |
7859
7860**示例:**
7861
7862```ts
7863import { common2D,drawing } from '@kit.ArkGraphics2D';
7864
7865let startPt: common2D.Point = { x: 100, y: 100 };
7866let endPt: common2D.Point = { x: 300, y: 300 };
7867let shaderEffect =drawing.ShaderEffect.createLinearGradient(startPt, endPt, [0xFF00FF00, 0xFFFF0000], drawing.TileMode.REPEAT);
7868```
7869
7870### createRadialGradient<sup>12+</sup>
7871
7872static createRadialGradient(centerPt: common2D.Point, radius: number, colors: Array\<number>, mode: TileMode, pos?: Array\<number> | null, matrix?: Matrix | null): ShaderEffect;
7873
7874创建着色器,使用给定圆心和半径生成径向渐变。从圆心到圆边界,颜色由内到外生成圆形渐变(从圆心向外一圈圈扩散)称为径向渐变。
7875
7876**系统能力:** SystemCapability.Graphics.Drawing
7877
7878**参数:**
7879
7880| 参数名 | 类型                                               | 必填 | 说明           |
7881| ------ | -------------------------------------------------- | ---- | -------------- |
7882| centerPt  | [common2D.Point](js-apis-graphics-common2D.md#point)  | 是   | 表示渐变的圆心。 |
7883| radius   | number  | 是   | 表示渐变的半径,小于等于0时无效,该参数为浮点数。 |
7884| colors | Array\<number> | 是   | 表示在圆心和圆边界之间分布的颜色数组,数组中的值为32位(ARGB)无符号整数。 |
7885| mode  | [TileMode](#tilemode12) | 是   | 着色器效果平铺模式。 |
7886| pos | Array\<number> \| null | 否   | 表示每种对应颜色在颜色数组中的相对位置。数组长度需和colors保持一致,数组的首个元素应当是0.0,末尾元素应当是1.0,中间的元素应当在0与1之间并且逐下标递增,表示colors中每个对应颜色的相对位置。默认为null,表示颜色均匀分布在圆心和圆边界之间。 |
7887| matrix | [Matrix](#matrix12) \| null | 否   | 矩阵对象,用于对着色器做矩阵变换。默认为null,表示单位矩阵。 |
7888
7889![RadialGradient](./figures/zh-ch_image_createRadialGradient.png)
7890
7891如上图是设置颜色数组为红绿蓝,位置数组为0.0,0.75,1.0后的显示效果。三角下标即为对应的颜色所在圆心和圆边界之间的相对位置,颜色与颜色之间使用渐变填充。
7892
7893**返回值:**
7894
7895| 类型    | 说明                       |
7896| ------- | ------------------------- |
7897| [ShaderEffect](#shadereffect12) | 返回创建的着色器对象。 |
7898
7899**错误码:**
7900
7901以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
7902
7903| 错误码ID | 错误信息 |
7904| ------- | --------------------------------------------|
7905| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types; 3. Parameter verification failed. |
7906
7907**示例:**
7908
7909```ts
7910import { common2D,drawing } from '@kit.ArkGraphics2D';
7911
7912let centerPt: common2D.Point = { x: 100, y: 100 };
7913let shaderEffect = drawing.ShaderEffect.createRadialGradient(centerPt, 100, [0xFF00FF00, 0xFFFF0000], drawing.TileMode.REPEAT);
7914```
7915
7916### createSweepGradient<sup>12+</sup>
7917
7918static createSweepGradient(centerPt: common2D.Point, colors: Array\<number>,
7919  mode: TileMode, startAngle: number, endAngle: number, pos?: Array\<number> | null,
7920  matrix?: Matrix | null): ShaderEffect;
7921
7922创建着色器,该着色器在给定中心的情况下生成扫描渐变。以给定中心为圆心,颜色在顺时针或逆时针方向上生成渐变称为扫描渐变。
7923
7924**系统能力:** SystemCapability.Graphics.Drawing
7925
7926**参数:**
7927
7928| 参数名 | 类型                                               | 必填 | 说明           |
7929| ------ | -------------------------------------------------- | ---- | -------------- |
7930| centerPt  | [common2D.Point](js-apis-graphics-common2D.md#point)  | 是   | 表示渐变的圆心。 |
7931| colors | Array\<number> | 是   | 表示在起始角度和结束角度之间分布的颜色数组,数组中的值为32位(ARGB)无符号整数。 |
7932| mode  | [TileMode](#tilemode12) | 是   | 着色器效果平铺模式。 |
7933| startAngle | number | 是   | 表示扇形渐变的起始角度,单位为度。0度时为x轴正方向,正数往顺时针方向偏移,负数往逆时针方向偏移。该参数为浮点数。 |
7934| endAngle | number | 是   | 表示扇形渐变的结束角度,单位为度。0度时为x轴正方向,正数往顺时针方向偏移,负数往逆时针方向偏移。小于起始角度时无效。该参数为浮点数。 |
7935| pos | Array\<number> \| null | 否   | 表示每种对应颜色在颜色数组中的相对位置。数组长度需和colors保持一致,数组的首个元素应当是0.0,末尾元素应当是1.0,中间的元素应当在0与1之间并且逐下标递增,表示colors中每个对应颜色的相对位置。默认为null,表示颜色均匀分布在起始角度和结束角度之间。 |
7936| matrix | [Matrix](#matrix12) \| null | 否   |矩阵对象,用于对着色器做矩阵变换。默认为null,表示单位矩阵。 |
7937
7938![SweepGradient](./figures/zh-ch_image_createSweepGradient.png)
7939
7940如上图是设置颜色数组为红绿蓝,位置数组为0.0,0.75,1.0,起始角度设置为0度,结束角度设置为180度后的显示效果。0.0对应0度的位置,0.75对应135度的位置,1.0对应180度的位置,颜色与颜色之间使用渐变填充。
7941
7942**返回值:**
7943
7944| 类型    | 说明                       |
7945| ------- | ------------------------- |
7946| [ShaderEffect](#shadereffect12) | 返回创建的着色器对象。 |
7947
7948**错误码:**
7949
7950以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
7951
7952| 错误码ID | 错误信息 |
7953| ------- | --------------------------------------------|
7954| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types; 3. Parameter verification failed. |
7955
7956**示例:**
7957
7958```ts
7959import { common2D,drawing } from '@kit.ArkGraphics2D';
7960
7961let centerPt: common2D.Point = { x: 100, y: 100 };
7962let shaderEffect = drawing.ShaderEffect.createSweepGradient(centerPt, [0xFF00FF00, 0xFFFF0000], drawing.TileMode.REPEAT, 100, 200);
7963```
7964
7965### createConicalGradient<sup>12+</sup>
7966
7967static createConicalGradient(startPt: common2D.Point, startRadius: number, endPt: common2D.Point, endRadius: number, colors: Array\<number>, mode: TileMode,
7968pos?: Array\<number> | null, matrix?: Matrix | null): ShaderEffect;
7969
7970创建着色器,在给定两个圆之间生成径向渐变。
7971
7972**系统能力:** SystemCapability.Graphics.Drawing
7973
7974**参数:**
7975
7976| 参数名 | 类型                                               | 必填 | 说明           |
7977| ------ | -------------------------------------------------- | ---- | -------------- |
7978| startPt  | [common2D.Point](js-apis-graphics-common2D.md#point)  | 是   |表示渐变的起始圆的圆心。 |
7979| startRadius | number | 是   | 表示渐变的起始圆的半径,小于0时无效。该参数为浮点数。 |
7980| endPt  | [common2D.Point](js-apis-graphics-common2D.md#point)  | 是   | 表示渐变的结束圆的圆心。 |
7981| endRadius | number | 是   | 表示渐变的结束圆的半径,小于0时无效。该参数为浮点数。 |
7982| colors | Array\<number> | 是   | 表示在起始圆和结束圆之间分布的颜色数组,数组中的值为32位(ARGB)无符号整数。 |
7983| mode  | [TileMode](#tilemode12) | 是   | 着色器效果平铺模式。 |
7984| pos | Array\<number> \| null | 否   | 表示每种对应颜色在颜色数组中的相对位置。数组长度需和colors保持一致,数组的首个元素应当是0.0,末尾元素应当是1.0,中间的元素应当在0与1之间并且逐下标递增,表示colors中每个对应颜色的相对位置。默认为null,表示颜色均匀分布在起始圆和结束圆之间。|
7985| matrix | [Matrix](#matrix12) \| null | 否   | 矩阵对象,用于对着色器做矩阵变换。默认为null,表示单位矩阵。 |
7986
7987![ConicalGradient](./figures/zh-ch_image_createConicalGradient.png)
7988
7989如上图是设置颜色数组为红绿蓝,位置数组为0.0,0.5,1.0的绘制结果。左侧为起始圆不在结束圆内的绘制结果,右侧为起始圆在结束圆内的绘制结果。
7990
7991**返回值:**
7992
7993| 类型    | 说明                       |
7994| ------- | ------------------------- |
7995| [ShaderEffect](#shadereffect12) | 返回创建的着色器对象。 |
7996
7997**错误码:**
7998
7999以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
8000
8001| 错误码ID | 错误信息 |
8002| ------- | --------------------------------------------|
8003| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types; 3. Parameter verification failed. |
8004
8005**示例:**
8006
8007```ts
8008import { common2D,drawing } from '@kit.ArkGraphics2D';
8009
8010let startPt: common2D.Point = { x: 100, y: 100 };
8011let endPt: common2D.Point = {x: 200, y: 200};
8012let shaderEffect = drawing.ShaderEffect.createConicalGradient(startPt, 100, endPt, 50, [0xFF00FF00, 0xFFFF0000], drawing.TileMode.REPEAT);
8013```
8014
8015## RegionOp<sup>12+</sup>
8016
8017两个区域合并时的操作的枚举。
8018
8019**系统能力**:SystemCapability.Graphics.Drawing
8020
8021| 名称                   | 值   | 说明                           | 示意图   |
8022| --------------------- | ---- | ------------------------------ | -------- |
8023| DIFFERENCE         | 0    | 两个区域相减操作。  | ![CLEAR](./figures/zh-ch_image_RegionOp_Difference.png) |
8024| INTERSECT          | 1    | 两个区域相交操作。 | ![INTERSECT](./figures/zh-ch_image_RegionOp_Intersect.png) |
8025| UNION              | 2    | 两个区域联合操作。   | ![UNION](./figures/zh-ch_image_RegionOpe_Union.png) |
8026| XOR                | 3    | 两个区域异或操作。   | ![XOR](./figures/zh-ch_image_RegionOp_Xor.png) |
8027| REVERSE_DIFFERENCE | 4    | 两个区域反向相减操作。   | ![REVERSE_DIFFERENCE](./figures/zh-ch_image_RegionOp_Reverse_difference.png) |
8028| REPLACE            | 5    | 两个区域替换操作。   | ![REPLACE](./figures/zh-ch_image_RegionOp_Replace.png) |
8029
8030> **说明:**
8031>
8032> 示意图展示的是以一个红色区域为基础,使用不同枚举值与另一个蓝色区域合并后获得的结果,其中绿色区域为最终得到的区域。
8033
8034## CornerPos<sup>12+</sup>
8035
8036圆角位置枚举。
8037
8038**系统能力**:SystemCapability.Graphics.Drawing
8039
8040| 名称                   | 值   | 说明                           |
8041| --------------------- | ---- | ------------------------------ |
8042| TOP_LEFT_POS          | 0    | 左上角圆角位置。  |
8043| TOP_RIGHT_POS         | 1    | 右上角圆角位置。 |
8044| BOTTOM_RIGHT_POS      | 2    | 右下角圆角位置。   |
8045| BOTTOM_LEFT_POS       | 3    | 左下角圆角位置。   |