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