1# @ohos.graphics.drawing (绘制模块) 2 3drawing模块提供了基本的绘制能力,如绘制矩形、圆形、点、直线、自定义Path、字体等等。 4 5> **说明:** 6> 7> - 本模块首批接口从API version 11开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。 8> 9> - 本模块采用屏幕物理像素单位px。 10> 11> - 本模块为单线程模型策略,需要调用方自行管理线程安全和上下文状态的切换。 12 13## 导入模块 14 15```ts 16import { drawing } from '@kit.ArkGraphics2D'; 17``` 18 19## BlendMode 20 21混合模式枚举。混合模式的操作会为两种颜色(源色、目标色)生成一种新的颜色。 这些操作在4个颜色通道(红、绿、蓝、透明度)上是相同的。 对于这些,我们使用透明度通道作为示例,而不是单独命名每个通道。 22 23为简洁起见,我们使用以下缩写: 24 25s : source 源的缩写。 d : destination 目标的缩写。 sa : source alpha 源透明度的缩写。 da : destination alpha 目标透明度的缩写。 26 27计算结果用如下缩写表示: 28 29r : 如果4个通道的计算方式相同,用r表示。 ra : 如果只操作透明度通道,用ra表示。 rc : 如果操作3个颜色通道,用rc表示。 30 31以黄色矩形为源图像,蓝色圆形为目标图像,各混合模式枚举生成的效果示意图请参考下表。 32 33**系统能力:** SystemCapability.Graphics.Drawing 34 35| 名称 | 值 | 说明 | 示意图 | 36| ----------- | ---- | ------------------------------------------------------------ | -------- | 37| CLEAR | 0 | 清除模式,r = 0。 |  | 38| SRC | 1 | r = s(result的4个通道,都等于source的4个通道,即结果等于源。) |  | 39| DST | 2 | r = d(result的4个通道,都等于destination的4个通道,即结果等于目标。) |  | 40| SRC_OVER | 3 | r = s + (1 - sa) * d |  | 41| DST_OVER | 4 | r = d + (1 - da) * s |  | 42| SRC_IN | 5 | r = s * da |  | 43| DST_IN | 6 | r = d * sa |  | 44| SRC_OUT | 7 | r = s * (1 - da) |  | 45| DST_OUT | 8 | r = d * (1 - sa) |  | 46| SRC_ATOP | 9 | r = s * da + d * (1 - sa) |  | 47| DST_ATOP | 10 | r = d * sa + s * (1 - da) |  | 48| XOR | 11 | r = s * (1 - da) + d * (1 - sa) |  | 49| PLUS | 12 | r = min(s + d, 1) |  | 50| MODULATE | 13 | r = s * d |  | 51| SCREEN | 14 | 滤色模式,r = s + d - s * d |  | 52| OVERLAY | 15 | 叠加模式 |  | 53| DARKEN | 16 | 变暗模式,rc = s + d - max(s * da, d * sa), ra = s + (1 - sa) * d |  | 54| LIGHTEN | 17 | 变亮模式,rc = s + d - min(s * da, d * sa), ra = s + (1 - sa) * d |  | 55| COLOR_DODGE | 18 | 颜色减淡模式 |  | 56| COLOR_BURN | 19 | 颜色加深模式 |  | 57| HARD_LIGHT | 20 | 强光模式 |  | 58| SOFT_LIGHT | 21 | 柔光模式 |  | 59| DIFFERENCE | 22 | 差值模式,rc = s + d - 2 * (min(s * da, d * sa)), ra = s + (1 - sa) * d |  | 60| EXCLUSION | 23 | 排除模式,rc = s + d - two(s * d), ra = s + (1 - sa) * d |  | 61| MULTIPLY | 24 | 正片叠底,r = s * (1 - da) + d * (1 - sa) + s * d |  | 62| HUE | 25 | 色相模式 |  | 63| SATURATION | 26 | 饱和度模式 |  | 64| COLOR | 27 | 颜色模式 |  | 65| LUMINOSITY | 28 | 亮度模式 |  | 66 67## PathMeasureMatrixFlags<sup>12+</sup> 68 69路径测量获取相应矩阵信息维度枚举。 70 71**系统能力:** SystemCapability.Graphics.Drawing 72 73| 名称 | 值 | 说明 | 74| ----------- | ---- | ------------------------------------------------------------ | 75| GET_POSITION_MATRIX | 0 | 获取位置信息对应的矩阵。 | 76| GET_TANGENT_MATRIX | 1 | 获取切线信息对应的矩阵。 | 77| GET_POSITION_AND_TANGENT_MATRIX | 2 | 获取位置和切线信息对应的矩阵。 | 78 79## SrcRectConstraint<sup>12+</sup> 80 81源矩形区域约束类型枚举。 82 83**系统能力:** SystemCapability.Graphics.Drawing 84 85| 名称 | 值 | 说明 | 86| ----------- | ---- | ------------------------------------------------------------ | 87| STRICT | 0 | 严格限制采样范围在源矩形区域内,速度较慢。 | 88| FAST | 1 | 允许采样范围超出源矩形范围,速度较快。 | 89 90## ShadowFlag<sup>12+</sup> 91 92控制阴影绘制行为的标志,以实现不同的阴影效果。 93 94**系统能力**:SystemCapability.Graphics.Drawing 95 96| 名称 | 值 | 说明 | 97| -------------------------- | ---- | ------------------ | 98| NONE | 0 | 不使能以下标志。 | 99| TRANSPARENT_OCCLUDER | 1 | 遮挡物是透明的。 | 100| GEOMETRIC_ONLY | 2 | 仅使用几何阴影效果。 | 101| ALL | 3 | 使能以上所有功能。 | 102 103## PathOp<sup>12+</sup> 104 105路径操作类型枚举。 106 107**系统能力**:SystemCapability.Graphics.Drawing 108 109| 名称 | 值 | 说明 | 110| ---------------------- | ---- | ------------------------------ | 111| DIFFERENCE | 0 | 差集操作。 | 112| INTERSECT | 1 | 交集操作。 | 113| UNION | 2 | 并集操作。 | 114| XOR | 3 | 异或操作。 | 115| REVERSE_DIFFERENCE | 4 | 反向差集操作。 | 116 117## Path 118 119由直线、圆弧、二阶贝塞尔、三阶贝塞尔组成的复合几何路径。 120 121### constructor<sup>12+</sup> 122 123constructor() 124 125构造一个路径。 126 127**系统能力:** SystemCapability.Graphics.Drawing 128 129**示例:** 130 131```ts 132import { drawing } from '@kit.ArkGraphics2D'; 133let path: drawing.Path = new drawing.Path(); 134``` 135 136### constructor<sup>12+</sup> 137 138constructor(path: Path) 139 140构造一个已有路径的副本。 141 142**系统能力:** SystemCapability.Graphics.Drawing 143 144**参数:** 145 146| 参数名 | 类型 | 必填 | 说明 | 147| -------- | -------------------------------------------- | ---- | ------------------------------- | 148| path | [Path](#path) | 是 | 待复制的路径对象。 | 149 150**示例:** 151 152```ts 153import { drawing } from '@kit.ArkGraphics2D'; 154let path: drawing.Path = new drawing.Path(); 155path.moveTo(0, 0); 156path.lineTo(0, 700); 157path.lineTo(700, 0); 158path.close(); 159let path1: drawing.Path = new drawing.Path(path); 160``` 161 162### moveTo 163 164moveTo(x: number, y: number) : void 165 166用于设置自定义路径的起始点位置。 167 168**系统能力**:SystemCapability.Graphics.Drawing 169 170**参数:** 171 172| 参数名 | 类型 | 必填 | 说明 | 173| ------ | ------ | ---- | ----------------------- | 174| x | number | 是 | 起始点的x轴坐标,该参数为浮点数。 | 175| y | number | 是 | 起始点的y轴坐标,该参数为浮点数。 | 176 177**错误码:** 178 179以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 180 181| 错误码ID | 错误信息 | 182| ------- | --------------------------------------------| 183| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. | 184 185**示例:** 186 187```ts 188import { drawing } from '@kit.ArkGraphics2D'; 189let path = new drawing.Path(); 190path.moveTo(10,10); 191``` 192 193### lineTo 194 195lineTo(x: number, y: number) : void 196 197用于添加一条从路径的最后点位置(若路径没有内容则默认为 (0, 0))到目标点位置的线段。 198 199**系统能力**:SystemCapability.Graphics.Drawing 200 201**参数:** 202 203| 参数名 | 类型 | 必填 | 说明 | 204| ------ | ------ | ---- | ----------------------- | 205| x | number | 是 | 目标点的x轴坐标,该参数为浮点数。 | 206| y | number | 是 | 目标点的y轴坐标,该参数为浮点数。 | 207 208**错误码:** 209 210以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 211 212| 错误码ID | 错误信息 | 213| ------- | --------------------------------------------| 214| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. | 215 216**示例:** 217 218```ts 219import { drawing } from '@kit.ArkGraphics2D'; 220let path = new drawing.Path(); 221path.moveTo(10,10); 222path.lineTo(10, 15); 223``` 224 225### arcTo 226 227arcTo(x1: number, y1: number, x2: number, y2: number, startDeg: number, sweepDeg: number): void 228 229用于给路径添加一段弧线,绘制弧线的方式为角度弧,该方式首先会指定一个矩形边框,矩形边框会包裹椭圆, 然后会指定一个起始角度和扫描度数,从起始角度扫描截取的椭圆周长一部分即为绘制的弧线。另外会默认添加一条从路径的最后点位置到弧线起始点位置的线段。 230 231**系统能力**:SystemCapability.Graphics.Drawing 232 233**参数:** 234 235| 参数名 | 类型 | 必填 | 说明 | 236| -------- | ------ | ---- | -------------------------- | 237| x1 | number | 是 | 矩形左上角的x坐标,该参数为浮点数。 | 238| y1 | number | 是 | 矩形左上角的y坐标,该参数为浮点数。 | 239| x2 | number | 是 | 矩形右下角的x坐标,该参数为浮点数。 | 240| y2 | number | 是 | 矩形右下角的y坐标,该参数为浮点数。 | 241| startDeg | number | 是 | 起始角度,单位为度,该参数为浮点数。 | 242| sweepDeg | number | 是 | 扫描度数,单位为度,该参数为浮点数。 | 243 244**错误码:** 245 246以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 247 248| 错误码ID | 错误信息 | 249| ------- | --------------------------------------------| 250| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. | 251 252**示例:** 253 254```ts 255import { drawing } from '@kit.ArkGraphics2D'; 256let path = new drawing.Path(); 257path.moveTo(10,10); 258path.arcTo(10, 15, 10, 10, 10, 10); 259``` 260 261### quadTo 262 263quadTo(ctrlX: number, ctrlY: number, endX: number, endY: number): void 264 265用于添加一条从路径最后点位置(若路径没有内容则默认为 (0, 0))到目标点位置的二阶贝塞尔圆滑曲线。 266 267**系统能力**:SystemCapability.Graphics.Drawing 268 269**参数:** 270 271| 参数名 | 类型 | 必填 | 说明 | 272| ------ | ------ | ---- | --------------------- | 273| ctrlX | number | 是 | 控制点的x坐标,该参数为浮点数。 | 274| ctrlY | number | 是 | 控制点的y坐标,该参数为浮点数。 | 275| endX | number | 是 | 目标点的x坐标,该参数为浮点数。 | 276| endY | number | 是 | 目标点的y坐标,该参数为浮点数。 | 277 278**错误码:** 279 280以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 281 282| 错误码ID | 错误信息 | 283| ------- | --------------------------------------------| 284| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. | 285 286**示例:** 287 288```ts 289import { drawing } from '@kit.ArkGraphics2D'; 290let path = new drawing.Path(); 291path.moveTo(10,10); 292path.quadTo(10, 15, 10, 10); 293``` 294 295### conicTo<sup>12+</sup> 296 297conicTo(ctrlX: number, ctrlY: number, endX: number, endY: number, weight: number): void 298 299在当前路径上添加一条路径终点(若路径没有内容则默认为 (0, 0))到目标点位置的圆锥曲线,其控制点为 (ctrlX, ctrlY),结束点为 (endX, endY)。 300 301**系统能力**:SystemCapability.Graphics.Drawing 302 303**参数:** 304 305| 参数名 | 类型 | 必填 | 说明 | 306| ------ | ------ | ---- | --------------------- | 307| ctrlX | number | 是 | 控制点的x坐标,该参数为浮点数。 | 308| ctrlY | number | 是 | 控制点的y坐标,该参数为浮点数。 | 309| endX | number | 是 | 目标点的x坐标,该参数为浮点数。 | 310| endY | number | 是 | 目标点的y坐标,该参数为浮点数。 | 311| weight | number | 是 | 表示曲线的权重,决定了曲线的形状,越大越接近控制点。若小于等于0则等同于使用[lineTo](#lineto)添加一条到结束点的线段,若为1则等同于[quadTo](#quadto),该参数为浮点数。 | 312 313**错误码:** 314 315以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 316 317| 错误码ID | 错误信息 | 318| ------- | --------------------------------------------| 319| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. | 320 321**示例:** 322 323```ts 324import { drawing } from '@kit.ArkGraphics2D'; 325 326const path = new drawing.Path(); 327path.conicTo(200, 400, 100, 200, 0); 328``` 329 330### cubicTo 331 332cubicTo(ctrlX1: number, ctrlY1: number, ctrlX2: number, ctrlY2: number, endX: number, endY: number): void 333 334用于添加一条从路径最后点位置(若路径没有内容则默认为 (0, 0))到目标点位置的三阶贝塞尔圆滑曲线。 335 336**系统能力**:SystemCapability.Graphics.Drawing 337 338**参数:** 339 340| 参数名 | 类型 | 必填 | 说明 | 341| ------ | ------ | ---- | --------------------------- | 342| ctrlX1 | number | 是 | 第一个控制点的x坐标,该参数为浮点数。 | 343| ctrlY1 | number | 是 | 第一个控制点的y坐标,该参数为浮点数。 | 344| ctrlX2 | number | 是 | 第二个控制点的x坐标,该参数为浮点数。 | 345| ctrlY2 | number | 是 | 第二个控制点的y坐标,该参数为浮点数。 | 346| endX | number | 是 | 目标点的x坐标,该参数为浮点数。 | 347| endY | number | 是 | 目标点的y坐标,该参数为浮点数。 | 348 349**错误码:** 350 351以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 352 353| 错误码ID | 错误信息 | 354| ------- | --------------------------------------------| 355| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. | 356 357**示例:** 358 359```ts 360import { drawing } from '@kit.ArkGraphics2D'; 361let path = new drawing.Path(); 362path.moveTo(10,10); 363path.cubicTo(10, 10, 10, 10, 15, 15); 364``` 365 366### rMoveTo<sup>12+</sup> 367 368rMoveTo(dx : number, dy : number): void 369 370设置一个相对于当前路径终点(若路径没有内容则默认为 (0, 0))的路径起始点位置。 371 372**系统能力**:SystemCapability.Graphics.Drawing 373 374**参数:** 375 376| 参数名 | 类型 | 必填 | 说明 | 377| ------ | ------ | ---- | ----------------------- | 378| dx | number | 是 | 路径新起始点相对于当前路径终点的x轴偏移量,正数往x轴正方向偏移,负数往x轴负方向偏移,该参数为浮点数。 | 379| dy | number | 是 | 路径新起始点相对于当前路径终点的y轴偏移量,正数往y轴正方向偏移,负数往y轴负方向偏移,该参数为浮点数。 | 380 381**错误码:** 382 383以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 384 385| 错误码ID | 错误信息 | 386| ------- | --------------------------------------------| 387| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. | 388 389**示例:** 390 391```ts 392import { drawing } from '@kit.ArkGraphics2D'; 393 394const path = new drawing.Path(); 395path.rMoveTo(10, 10); 396``` 397 398### rLineTo<sup>12+</sup> 399 400rLineTo(dx : number, dy : number): void 401 402使用相对位置在当前路径上添加一条当前路径终点(若路径没有内容则默认为 (0, 0))到目标点位置的线段。 403 404**系统能力**:SystemCapability.Graphics.Drawing 405 406**参数:** 407 408| 参数名 | 类型 | 必填 | 说明 | 409| ------ | ------ | ---- | ----------------------- | 410| dx | number | 是 | 目标点相对于当前路径终点的x轴偏移量,正数往x轴正方向偏移,负数往x轴负方向偏移,该参数为浮点数。 | 411| dy | number | 是 | 目标点相对于当前路径终点的y轴偏移量,正数往y轴正方向偏移,负数往y轴负方向偏移,该参数为浮点数。 | 412 413**错误码:** 414 415以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 416 417| 错误码ID | 错误信息 | 418| ------- | --------------------------------------------| 419| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. | 420 421**示例:** 422 423```ts 424import { drawing } from '@kit.ArkGraphics2D'; 425 426const path = new drawing.Path(); 427path.rLineTo(400, 200); 428``` 429 430### rQuadTo<sup>12+</sup> 431 432rQuadTo(dx1: number, dy1: number, dx2: number, dy2: number): void 433 434使用相对位置在当前路径上添加一条当前路径终点(若路径没有内容则默认为 (0, 0))到目标点位置的二阶贝塞尔曲线。 435 436**系统能力**:SystemCapability.Graphics.Drawing 437 438**参数:** 439 440| 参数名 | 类型 | 必填 | 说明 | 441| ------ | ------ | ---- | --------------------- | 442| dx1 | number | 是 | 控制点相对于路径终点的x轴偏移量,正数往x轴正方向偏移,负数往x轴负方向偏移,该参数为浮点数。 | 443| dy1 | number | 是 | 控制点相对于路径终点的y轴偏移量,正数往y轴正方向偏移,负数往y轴负方向偏移,该参数为浮点数。 | 444| dx2 | number | 是 | 目标点相对于路径终点的x轴偏移量,正数往x轴正方向偏移,负数往x轴负方向偏移,该参数为浮点数。 | 445| dy2 | number | 是 | 目标点相对于路径终点的y轴偏移量,正数往y轴正方向偏移,负数往y轴负方向偏移,该参数为浮点数。 | 446 447**错误码:** 448 449以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 450 451| 错误码ID | 错误信息 | 452| ------- | --------------------------------------------| 453| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. | 454 455**示例:** 456 457```ts 458import { drawing } from '@kit.ArkGraphics2D'; 459 460const path = new drawing.Path(); 461path.rQuadTo(100, 0, 0, 200); 462``` 463 464### rConicTo<sup>12+</sup> 465 466rConicTo(ctrlX: number, ctrlY: number, endX: number, endY: number, weight: number): void 467 468使用相对位置在当前路径上添加一条路径终点(若路径没有内容则默认为 (0, 0))到目标点位置的圆锥曲线。 469 470**系统能力**:SystemCapability.Graphics.Drawing 471 472**参数:** 473 474| 参数名 | 类型 | 必填 | 说明 | 475| ------ | ------ | ---- | --------------------- | 476| ctrlX | number | 是 | 控制点相对于路径终点的x轴偏移量,正数往x轴正方向偏移,负数往x轴负方向偏移,该参数为浮点数。 | 477| ctrlY | number | 是 | 控制点相对于路径终点的y轴偏移量,正数往y轴正方向偏移,负数往y轴负方向偏移,该参数为浮点数。 | 478| endX | number | 是 | 目标点相对于路径终点的x轴偏移量,正数往x轴正方向偏移,负数往x轴负方向偏移,该参数为浮点数。 | 479| endY | number | 是 | 目标点相对于路径终点的y轴偏移量,正数往y轴正方向偏移,负数往y轴负方向偏移,该参数为浮点数。 | 480| weight | number | 是 | 表示曲线的权重,决定了曲线的形状,越大越接近控制点。若小于等于0则等同于使用[rLineTo](#rlineto12)添加一条到结束点的线段,若为1则等同于[rQuadTo](#rquadto12),该参数为浮点数。 | 481 482**错误码:** 483 484以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 485 486| 错误码ID | 错误信息 | 487| ------- | --------------------------------------------| 488| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. | 489 490**示例:** 491 492```ts 493import { drawing } from '@kit.ArkGraphics2D'; 494 495const path = new drawing.Path(); 496path.rConicTo(200, 400, 100, 200, 0); 497``` 498 499### rCubicTo<sup>12+</sup> 500 501rCubicTo(ctrlX1: number, ctrlY1: number, ctrlX2: number, ctrlY2: number, endX: number, endY: number): void 502 503使用相对位置在当前路径上添加一条当前路径终点(若路径没有内容则默认为 (0, 0))到目标点位置的三阶贝塞尔曲线。 504 505**系统能力**:SystemCapability.Graphics.Drawing 506 507**参数:** 508 509| 参数名 | 类型 | 必填 | 说明 | 510| ------ | ------ | ---- | --------------------------- | 511| ctrlX1 | number | 是 | 第一个控制点相对于路径终点的x轴偏移量,正数往x轴正方向偏移,负数往x轴负方向偏移,该参数为浮点数。 | 512| ctrlY1 | number | 是 | 第一个控制点相对于路径终点的y轴偏移量,正数往y轴正方向偏移,负数往y轴负方向偏移,该参数为浮点数。 | 513| ctrlX2 | number | 是 | 第二个控制点相对于路径终点的x轴偏移量,正数往x轴正方向偏移,负数往x轴负方向偏移,该参数为浮点数。 | 514| ctrlY2 | number | 是 | 第二个控制点相对于路径终点的y轴偏移量,正数往y轴正方向偏移,负数往y轴负方向偏移,该参数为浮点数。 | 515| endX | number | 是 | 目标点相对于路径终点的x轴偏移量,正数往x轴正方向偏移,负数往x轴负方向偏移,该参数为浮点数。 | 516| endY | number | 是 | 目标点相对于路径终点的y轴偏移量,正数往y轴正方向偏移,负数往y轴负方向偏移,该参数为浮点数。 | 517 518**错误码:** 519 520以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 521 522| 错误码ID | 错误信息 | 523| ------- | --------------------------------------------| 524| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. | 525 526**示例:** 527 528```ts 529import { drawing } from '@kit.ArkGraphics2D'; 530 531const path = new drawing.Path(); 532path.rCubicTo(200, 0, 0, 200, -20, 0); 533``` 534 535### addArc<sup>12+</sup> 536 537addArc(rect: common2D.Rect, startAngle: number, sweepAngle: number): void 538 539向路径添加一段圆弧。 540当startAngle和sweepAngle同时满足以下两种情况时,添加整个椭圆而不是圆弧: 5411.startAngle对90取余接近于0; 5422.sweepAngle不在(-360, 360)区间内。 543其余情况sweepAngle会对360取余后添加圆弧。 544 545**系统能力**:SystemCapability.Graphics.Drawing 546 547**参数:** 548 549| 参数名 | 类型 | 必填 | 说明 | 550| ----------- | ---------------------------------------- | ---- | ------------------- | 551| rect | [common2D.Rect](js-apis-graphics-common2D.md#rect) | 是 | 包含弧的椭圆的矩形边界。 | 552| startAngle | number | 是 | 弧的起始角度,单位为度,0度为x轴正方向,该参数为浮点数。 | 553| sweepAngle | number | 是 | 扫描角度,单位为度。正数表示顺时针方向,负数表示逆时针方向,该参数为浮点数。 | 554 555**错误码:** 556 557以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 558 559| 错误码ID | 错误信息 | 560| ------- | --------------------------------------------| 561| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. | 562 563**示例:** 564 565```ts 566import { common2D, drawing } from '@kit.ArkGraphics2D'; 567 568let path = new drawing.Path(); 569const rect: common2D.Rect = {left:100, top:100, right:500, bottom:500}; 570path.addArc(rect, 90, 180); 571``` 572 573### addCircle<sup>12+</sup> 574 575addCircle(x: number, y: number, radius: number, pathDirection?: PathDirection): void 576 577按指定方向,向路径添加圆形,圆的起点位于(x + radius, y)。 578 579**系统能力**:SystemCapability.Graphics.Drawing 580 581**参数:** 582 583| 参数名 | 类型 | 必填 | 说明 | 584| ----------- | ---------------------------------------- | ---- | ------------------- | 585| x | number | 是 | 表示圆心的x轴坐标,该参数为浮点数。 | 586| y | number | 是 | 表示圆心的y轴坐标,该参数为浮点数。 | 587| radius | number | 是 | 表示圆形的半径,该参数为浮点数,小于等于0时不会有任何效果。 | 588| pathDirection | [PathDirection](#pathdirection12) | 否 | 表示路径方向,默认为顺时针方向。 | 589 590**错误码:** 591 592以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 593 594| 错误码ID | 错误信息 | 595| ------- | --------------------------------------------| 596| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified;2. Incorrect parameter types; 3. Parameter verification failed. | 597 598**示例:** 599 600```ts 601 602import { drawing } from '@kit.ArkGraphics2D'; 603 604let path = new drawing.Path(); 605path.addCircle(100, 200, 50, drawing.PathDirection.CLOCKWISE); 606``` 607 608### addOval<sup>12+</sup> 609 610addOval(rect: common2D.Rect, start: number, pathDirection?: PathDirection): void 611 612按指定方向,将椭圆添加到路径中,其中矩形对象作为椭圆的外切矩形区域。 613 614**系统能力**:SystemCapability.Graphics.Drawing 615 616**参数:** 617 618| 参数名 | 类型 | 必填 | 说明 | 619| ----------- | ---------------------------------------- | ---- | ------------------- | 620| rect | [common2D.Rect](js-apis-graphics-common2D.md#rect) | 是 | 椭圆的矩形边界。 | 621| start | number | 是 | 表示椭圆初始点的索引,0,1,2,3分别对应椭圆的上端点,右端点,下端点,左端点,该参数为不小于0的整数,大于等于4时会对4取余。 | 622| pathDirection | [PathDirection](#pathdirection12) | 否 | 表示路径方向,默认为顺时针方向。 | 623 624**错误码:** 625 626以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 627 628| 错误码ID | 错误信息 | 629| ------- | --------------------------------------------| 630| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified;2. Incorrect parameter types; 3. Parameter verification failed.| 631 632**示例:** 633 634```ts 635import { common2D, drawing } from '@kit.ArkGraphics2D'; 636 637let path = new drawing.Path(); 638const rect: common2D.Rect = {left:100, top:100, right:500, bottom:500}; 639path.addOval(rect, 5, drawing.PathDirection.CLOCKWISE); 640``` 641 642### addRect<sup>12+</sup> 643 644addRect(rect: common2D.Rect, pathDirection?: PathDirection): void 645 646按指定方向,将矩形添加到路径中,添加的路径的起始点为矩形左上角。 647 648**系统能力**:SystemCapability.Graphics.Drawing 649 650**参数:** 651 652| 参数名 | 类型 | 必填 | 说明 | 653| ----------- | ---------------------------------------- | ---- | ------------------- | 654| rect | [common2D.Rect](js-apis-graphics-common2D.md#rect) | 是 | 向路径中添加的矩形轮廓。 | 655| pathDirection | [PathDirection](#pathdirection12) | 否 | 表示路径方向,默认为顺时针方向。 | 656 657**错误码:** 658 659以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 660 661| 错误码ID | 错误信息 | 662| ------- | --------------------------------------------| 663| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified;2. Incorrect parameter types; 3. Parameter verification failed.| 664 665**示例:** 666 667```ts 668import { common2D, drawing } from '@kit.ArkGraphics2D'; 669 670let path = new drawing.Path(); 671const rect: common2D.Rect = {left:100, top:100, right:500, bottom:500}; 672path.addRect(rect, drawing.PathDirection.CLOCKWISE); 673``` 674 675### addRoundRect<sup>12+</sup> 676 677addRoundRect(roundRect: RoundRect, pathDirection?: PathDirection): void 678 679按指定方向,向路径添加圆角矩形轮廓。路径添加方向为顺时针时,起始点位于圆角矩形左下方圆角与左边界的交点;路径添加方向为逆时针时,起始点位于圆角矩形左上方圆角与左边界的交点。 680 681**系统能力**:SystemCapability.Graphics.Drawing 682 683**参数:** 684 685| 参数名 | 类型 | 必填 | 说明 | 686| ----------- | ---------------------------------------- | ---- | ------------------- | 687| roundRect | [RoundRect](#roundrect12) | 是 | 圆角矩形对象。 | 688| pathDirection | [PathDirection](#pathdirection12) | 否 | 表示路径方向,默认为顺时针方向。 | 689 690**错误码:** 691 692以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 693 694| 错误码ID | 错误信息 | 695| ------- | --------------------------------------------| 696| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified;2. Incorrect parameter types; 3. Parameter verification failed.| 697 698**示例:** 699 700```ts 701import { common2D, drawing } from '@kit.ArkGraphics2D'; 702 703let path = new drawing.Path(); 704const rect: common2D.Rect = {left:100, top:100, right:500, bottom:500}; 705let roundRect = new drawing.RoundRect(rect, 50, 50); 706path.addRoundRect(roundRect, drawing.PathDirection.CLOCKWISE); 707``` 708 709### addPath<sup>12+</sup> 710 711addPath(path: Path, matrix?: Matrix | null): void 712 713将源路径进行矩阵变换后,添加到当前路径中。 714 715**系统能力**:SystemCapability.Graphics.Drawing 716 717**参数:** 718 719| 参数名 | 类型 | 必填 | 说明 | 720| ----------- | ---------------------------------------- | ---- | ------------------- | 721| path | [Path](#path) | 是 | 表示源路径对象。 | 722| matrix | [Matrix](#matrix12)\|null | 否 | 表示矩阵对象,默认为单位矩阵。 | 723 724**错误码:** 725 726以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 727 728| 错误码ID | 错误信息 | 729| ------- | --------------------------------------------| 730| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. | 731 732**示例:** 733 734```ts 735import { common2D, drawing } from '@kit.ArkGraphics2D'; 736 737let path = new drawing.Path(); 738let matrix = new drawing.Matrix(); 739const rect: common2D.Rect = {left:100, top:100, right:500, bottom:500}; 740let roundRect = new drawing.RoundRect(rect, 50, 50); 741path.addRoundRect(roundRect, drawing.PathDirection.CLOCKWISE); 742let dstPath = new drawing.Path(); 743dstPath.addPath(path, matrix); 744``` 745 746### transform<sup>12+</sup> 747 748transform(matrix: Matrix): void 749 750对路径进行矩阵变换。 751 752**系统能力**:SystemCapability.Graphics.Drawing 753 754**参数:** 755 756| 参数名 | 类型 | 必填 | 说明 | 757| ----------- | ---------------------------------------- | ---- | ------------------- | 758| matrix | [Matrix](#matrix12) | 是 | 表示矩阵对象。 | 759 760**错误码:** 761 762以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 763 764| 错误码ID | 错误信息 | 765| ------- | --------------------------------------------| 766| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. | 767 768**示例:** 769 770```ts 771import { common2D, drawing } from '@kit.ArkGraphics2D'; 772 773let path = new drawing.Path(); 774let matrix = new drawing.Matrix(); 775matrix.setScale(1.5, 1.5, 10, 10); 776const rect: common2D.Rect = {left:100, top:100, right:500, bottom:500}; 777let roundRect = new drawing.RoundRect(rect, 50, 50); 778path.addRoundRect(roundRect, drawing.PathDirection.CLOCKWISE); 779path.transform(matrix); 780``` 781 782### contains<sup>12+</sup> 783 784contains(x: number, y: number): boolean 785 786判断指定坐标点是否被路径包含,判定是否被路径包含的规则参考[PathFillType](#pathfilltype12)。 787 788**系统能力:** SystemCapability.Graphics.Drawing 789 790**参数:** 791 792| 参数名 | 类型 | 必填 | 说明 | 793| ------ | ------ | ---- | ----------------------- | 794| x | number | 是 | x轴上坐标点,该参数必须为浮点数。 | 795| y | number | 是 | y轴上坐标点,该参数必须为浮点数。 | 796 797**返回值:** 798 799| 类型 | 说明 | 800| ------- | -------------- | 801| boolean | 返回指定坐标点是否在路径内。true表示点在路径内,false表示点不在路径内。 | 802 803**错误码:** 804 805以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 806 807| 错误码ID | 错误信息 | 808| ------- | --------------------------------------------| 809| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. | 810 811**示例:** 812 813```ts 814import { common2D, drawing } from '@kit.ArkGraphics2D'; 815 816const path = new drawing.Path(); 817let rect : common2D.Rect = {left: 50, top: 50, right: 250, bottom: 250}; 818path.addRect(rect, drawing.PathDirection.CLOCKWISE); 819console.info("test contains: " + path.contains(0, 0)); 820console.info("test contains: " + path.contains(60, 60)); 821``` 822 823### setFillType<sup>12+</sup> 824 825setFillType(pathFillType: PathFillType): void 826 827设置路径的填充类型,这个决定了路径内部区域的定义方式。例如,使用 Winding 填充类型时,路径内部区域由路径环绕的次数决定,而使用 EvenOdd 填充类型时,路径内部区域由路径环绕的次数是否为奇数决定。 828 829**系统能力**:SystemCapability.Graphics.Drawing 830 831**参数:** 832 833| 参数名 | 类型 | 必填 | 说明 | 834| ----------- | ---------------------------------------- | ---- | ------------------- | 835| pathFillType | [PathFillType](#pathfilltype12) | 是 | 表示路径填充规则。 | 836 837**错误码:** 838 839以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 840 841| 错误码ID | 错误信息 | 842| ------- | --------------------------------------------| 843| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified;2. Incorrect parameter types; 3. Parameter verification failed.| 844 845**示例:** 846 847```ts 848import { drawing } from '@kit.ArkGraphics2D'; 849 850const path = new drawing.Path(); 851path.setFillType(drawing.PathFillType.WINDING); 852``` 853 854### getBounds<sup>12+</sup> 855 856getBounds(): common2D.Rect 857 858获取包含路径的最小矩形边界。 859 860**系统能力**:SystemCapability.Graphics.Drawing 861 862**返回值:** 863 864| 类型 | 说明 | 865| -------------------------------------------------- | ---------------------- | 866| [common2D.Rect](js-apis-graphics-common2D.md#rect) | 包含路径的最小矩形区域。 | 867 868**示例:** 869 870```ts 871import { common2D, drawing } from '@kit.ArkGraphics2D'; 872 873const path = new drawing.Path(); 874path.lineTo(50, 40) 875let rect : common2D.Rect = {left: 0, top: 0, right: 0, bottom: 0}; 876rect = path.getBounds(); 877console.info("test rect.left: " + rect.left); 878console.info("test rect.top: " + rect.top); 879console.info("test rect.right: " + rect.right); 880console.info("test rect.bottom: " + rect.bottom); 881``` 882 883### addPolygon<sup>12+</sup> 884 885addPolygon(points: Array\<common2D.Point>, close: boolean): void 886 887通过坐标点列表添加多条连续的线段。 888 889**系统能力**:SystemCapability.Graphics.Drawing 890 891**参数:** 892 893| 参数名 | 类型 | 必填 | 说明 | 894| ------ | ------ | ---- | ----------------------- | 895| points | Array\<[common2D.Point](js-apis-graphics-common2D.md#point)> | 是 | 坐标点数组。 | 896| close | boolean | 是 | 表示是否将路径闭合,即是否添加路径起始点到终点的连线,true表示将路径闭合,false表示不将路径闭合。 | 897 898**错误码:** 899 900以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 901 902| 错误码ID | 错误信息 | 903| ------- | --------------------------------------------| 904| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. | 905 906**示例:** 907 908```ts 909import { common2D, drawing } from '@kit.ArkGraphics2D'; 910 911let pointsArray = new Array<common2D.Point>(); 912const point1: common2D.Point = { x: 200, y: 200 }; 913const point2: common2D.Point = { x: 400, y: 200 }; 914const point3: common2D.Point = { x: 100, y: 400 }; 915const point4: common2D.Point = { x: 300, y: 400 }; 916pointsArray.push(point1); 917pointsArray.push(point2); 918pointsArray.push(point3); 919pointsArray.push(point4); 920const path = new drawing.Path(); 921path.addPolygon(pointsArray, false); 922``` 923 924### offset<sup>12+</sup> 925 926offset(dx: number, dy: number): Path 927 928将路径沿着x轴和y轴方向偏移一定距离并保存在返回的路径对象中。 929 930**系统能力**:SystemCapability.Graphics.Drawing 931 932**参数:** 933 934| 参数名 | 类型 | 必填 | 说明 | 935| ------ | ------ | ---- | ----------------------- | 936| dx | number | 是 | x轴方向偏移量,正数往x轴正方向偏移,负数往x轴负方向偏移,该参数为浮点数。 | 937| dy | number | 是 | y轴方向偏移量,正数往y轴正方向偏移,负数往y轴负方向偏移,该参数为浮点数。 | 938 939**返回值:** 940 941| 类型 | 说明 | 942| ------ | ------------------ | 943| [Path](#path) | 返回当前路径偏移(dx,dy)后生成的新路径对象。 | 944 945**错误码:** 946 947以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 948 949| 错误码ID | 错误信息 | 950| ------- | --------------------------------------------| 951| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. | 952 953**示例:** 954 955```ts 956import { drawing } from '@kit.ArkGraphics2D'; 957 958const path = new drawing.Path(); 959path.moveTo(200, 200); 960path.lineTo(300, 300); 961const dst = path.offset(200, 200); 962``` 963 964### op<sup>12+</sup> 965 966op(path: Path, pathOp: PathOp): boolean 967 968将当前路径置为和path按照指定的路径操作类型合并后的结果。 969 970**系统能力**:SystemCapability.Graphics.Drawing 971 972**参数:** 973 974| 参数名 | 类型 | 必填 | 说明 | 975| ------ | ------ | ---- | ----------------------- | 976| path | [Path](#path) | 是 | 路径对象,用于与当前路径合并。 | 977| pathOp | [PathOp](#pathop12) | 是 | 路径操作类型枚举。 | 978 979**返回值:** 980 981| 类型 | 说明 | 982| ------ | ------------------ | 983| boolean | 返回路径合并是否成功的结果,true表示合并成功,false表示合并失败。 | 984 985**错误码:** 986 987以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 988 989| 错误码ID | 错误信息 | 990| ------- | --------------------------------------------| 991| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types;3.Parameter verification failed. | 992 993**示例:** 994 995```ts 996import { drawing } from '@kit.ArkGraphics2D'; 997 998const path = new drawing.Path(); 999const path2 = new drawing.Path(); 1000path.addCircle(100, 200, 100, drawing.PathDirection.CLOCKWISE); 1001console.info("get pathOp: ", path2.op(path, drawing.PathOp.DIFFERENCE)); 1002``` 1003 1004### close 1005 1006close(): void 1007 1008用于闭合路径,会添加一条从路径起点位置到最后点位置的线段。 1009 1010**系统能力**:SystemCapability.Graphics.Drawing 1011 1012**示例:** 1013 1014```ts 1015import { drawing } from '@kit.ArkGraphics2D'; 1016let path = new drawing.Path(); 1017path.moveTo(10,10); 1018path.cubicTo(10, 10, 10, 10, 15, 15); 1019path.close(); 1020``` 1021 1022### reset 1023 1024reset(): void 1025 1026用于重置自定义路径数据。 1027 1028**系统能力**:SystemCapability.Graphics.Drawing 1029 1030**示例:** 1031 1032```ts 1033import { drawing } from '@kit.ArkGraphics2D'; 1034let path = new drawing.Path(); 1035path.moveTo(10,10); 1036path.cubicTo(10, 10, 10, 10, 15, 15); 1037path.reset(); 1038``` 1039 1040### getLength<sup>12+</sup> 1041 1042getLength(forceClosed: boolean): number 1043 1044用于获取路径长度。 1045 1046**系统能力**:SystemCapability.Graphics.Drawing 1047 1048**参数:** 1049 1050| 参数名| 类型 | 必填| 说明 | 1051| ----- | ------ | ---- | --------- | 1052| forceClosed | boolean | 是 | 表示是否按照闭合路径测量,true表示测量时路径会被强制视为已闭合,false表示会根据路径的实际闭合状态测量。| 1053 1054**返回值:** 1055 1056| 类型 | 说明 | 1057| ------ | ---- | 1058| number | 路径长度。| 1059 1060**示例:** 1061 1062```ts 1063import { drawing } from '@kit.ArkGraphics2D' 1064let path = new drawing.Path(); 1065path.arcTo(20, 20, 180, 180, 180, 90); 1066let len = path.getLength(false); 1067console.info("path length = " + len); 1068``` 1069 1070### getPositionAndTangent<sup>12+</sup> 1071 1072getPositionAndTangent(forceClosed: boolean, distance: number, position: common2D.Point, tangent: common2D.Point): boolean 1073 1074获取距路径起始点指定距离的坐标点和切线值。 1075 1076**系统能力**:SystemCapability.Graphics.Drawing 1077 1078**参数:** 1079 1080| 参数名 | 类型 | 必填 | 说明 | 1081| -------- | -------------------------------------------- | ---- | ------------------------------- | 1082| forceClosed | boolean | 是 | 表示是否按照闭合路径测量,true表示测量时路径会被强制视为已闭合,false表示会根据路径的实际闭合状态测量。 | 1083| distance | number | 是 | 表示与路径起始点的距离,小于0时会被视作0,大于路径长度时会被视作路径长度。该参数为浮点数。 | 1084| position | [common2D.Point](js-apis-graphics-common2D.md#point) | 是 | 存储获取到的距离路径起始点distance处的点的的坐标。 | 1085| tangent | [common2D.Point](js-apis-graphics-common2D.md#point) | 是 | 存储获取到的距离路径起始点distance处的点的的切线值,tangent.x表示该点切线的余弦值,tangent.y表示该点切线的正弦值。 | 1086 1087**返回值:** 1088 1089| 类型 | 说明 | 1090| --------------------- | -------------- | 1091| boolean |表示是否成功获取距离路径起始点distance处的点的坐标和正切值的结果,true表示获取成功,false表示获取失败,position和tangent不会被改变。 | 1092 1093**错误码:** 1094 1095以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 1096 1097| 错误码ID | 错误信息 | 1098| ------- | --------------------------------------------| 1099| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. | 1100 1101**示例:** 1102 1103```ts 1104import { common2D, drawing } from '@kit.ArkGraphics2D'; 1105let path: drawing.Path = new drawing.Path(); 1106path.moveTo(0, 0); 1107path.lineTo(0, 700); 1108path.lineTo(700, 0); 1109let position: common2D.Point = { x: 0.0, y: 0.0 }; 1110let tangent: common2D.Point = { x: 0.0, y: 0.0 }; 1111if (path.getPositionAndTangent(false, 0.1, position, tangent)) { 1112 console.info("getPositionAndTangent-----position: "+ position.x); 1113 console.info("getPositionAndTangent-----position: "+ position.y); 1114 console.info("getPositionAndTangent-----tangent: "+ tangent.x); 1115 console.info("getPositionAndTangent-----tangent: "+ tangent.y); 1116} 1117``` 1118 1119### isClosed<sup>12+</sup> 1120 1121isClosed(): boolean 1122 1123获取路径是否闭合。 1124 1125**系统能力**:SystemCapability.Graphics.Drawing 1126 1127**返回值:** 1128 1129| 类型 | 说明 | 1130| --------------------- | -------------- | 1131| boolean | 表示当前路径是否闭合,true表示闭合,false表示不闭合。 | 1132 1133**示例:** 1134 1135```ts 1136import { drawing } from '@kit.ArkGraphics2D'; 1137let path: drawing.Path = new drawing.Path(); 1138path.moveTo(0, 0); 1139path.lineTo(0, 700); 1140if (path.isClosed()) { 1141 console.info("path is closed."); 1142} else { 1143 console.info("path is not closed."); 1144} 1145``` 1146 1147### getMatrix<sup>12+</sup> 1148 1149getMatrix(forceClosed: boolean, distance: number, matrix: Matrix, flags: PathMeasureMatrixFlags): boolean 1150 1151获取距路径起始点指定距离的相应变换矩阵。 1152 1153**系统能力**:SystemCapability.Graphics.Drawing 1154 1155**参数:** 1156 1157| 参数名 | 类型 | 必填 | 说明 | 1158| -------- | -------------------------------------------- | ---- | ------------------------------- | 1159| forceClosed | boolean | 是 | 表示是否按照闭合路径测量,true表示测量时路径会被强制视为已闭合,false表示会根据路径的实际闭合状态测量。 | 1160| distance | number | 是 | 表示与路径起始点的距离,小于0时会被视作0,大于路径长度时会被视作路径长度。该参数为浮点数。 | 1161| matrix | [Matrix](#matrix12) | 是 | 矩阵对象,用于存储得到的矩阵。 | 1162| flags | [PathMeasureMatrixFlags](#pathmeasurematrixflags12) | 是 | 矩阵信息维度枚举。 | 1163 1164**返回值:** 1165 1166| 类型 | 说明 | 1167| --------------------- | -------------- | 1168| boolean | 返回获取变换矩阵是否成功的结果,true表示获取成功,false表示获取失败。 | 1169 1170**错误码:** 1171 1172以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 1173 1174| 错误码ID | 错误信息 | 1175| ------- | --------------------------------------------| 1176| 401 | Parameter error. Possible causes: Mandatory parameters are left unspecified. | 1177 1178**示例:** 1179 1180```ts 1181import { drawing } from '@kit.ArkGraphics2D'; 1182let path: drawing.Path = new drawing.Path(); 1183let matrix = new drawing.Matrix(); 1184if(path.getMatrix(false, 10, matrix, drawing.PathMeasureMatrixFlags.GET_TANGENT_MATRIX)) { 1185 console.info("path.getMatrix return true"); 1186} else { 1187 console.info("path.getMatrix return false"); 1188} 1189``` 1190 1191### buildFromSvgString<sup>12+</sup> 1192 1193buildFromSvgString(str: string): boolean 1194 1195解析SVG字符串表示的路径。 1196 1197**系统能力**:SystemCapability.Graphics.Drawing 1198 1199**参数:** 1200 1201| 参数名 | 类型 | 必填 | 说明 | 1202| -------- | -------------------------------------------- | ---- | ------------------------------- | 1203| str | string | 是 | SVG格式的字符串,用于描述绘制路径。 | 1204 1205**返回值:** 1206 1207| 类型 | 说明 | 1208| --------------------- | -------------- | 1209| boolean | 返回解析SVG字符串是否成功的结果,true表示解析成功,false表示解析失败。 | 1210 1211**错误码:** 1212 1213以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 1214 1215| 错误码ID | 错误信息 | 1216| ------- | --------------------------------------------| 1217| 401 | Parameter error. Possible causes: Mandatory parameters are left unspecified. | 1218 1219**示例:** 1220 1221```ts 1222import { drawing } from '@kit.ArkGraphics2D'; 1223let path: drawing.Path = new drawing.Path(); 1224let svgStr: string = "M150 100 L75 300 L225 300 Z"; 1225if(path.buildFromSvgString(svgStr)) { 1226 console.info("buildFromSvgString return true"); 1227} else { 1228 console.info("buildFromSvgString return false"); 1229} 1230``` 1231 1232## Canvas 1233 1234承载绘制内容与绘制状态的载体。 1235 1236> **说明:** 1237> 1238> 画布自带一个黑色,开启反走样,不具备其他任何样式效果的默认画刷,当且仅当画布中主动设置的画刷和画笔都不存在时生效。 1239 1240### constructor 1241 1242constructor(pixelmap: image.PixelMap) 1243 1244Canvas对象的构造函数。 1245 1246**系统能力**:SystemCapability.Graphics.Drawing 1247 1248**参数:** 1249 1250| 参数名 | 类型 | 必填 | 说明 | 1251| -------- | -------------------------------------------- | ---- | -------------- | 1252| pixelmap | [image.PixelMap](../apis-image-kit/js-apis-image.md#pixelmap7) | 是 | 构造函数入参。 | 1253 1254**错误码:** 1255 1256以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 1257 1258| 错误码ID | 错误信息 | 1259| ------- | --------------------------------------------| 1260| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. | 1261 1262**示例:** 1263 1264```ts 1265import { drawing } from '@kit.ArkGraphics2D'; 1266import { image } from '@kit.ImageKit'; 1267const color = new ArrayBuffer(96); 1268let opts : image.InitializationOptions = { 1269 editable: true, 1270 pixelFormat: 3, 1271 size: { 1272 height: 4, 1273 width: 6 1274 } 1275} 1276image.createPixelMap(color, opts).then((pixelMap) => { 1277 const canvas = new drawing.Canvas(pixelMap); 1278}) 1279``` 1280 1281### drawRect 1282 1283drawRect(rect: common2D.Rect): void 1284 1285用于绘制一个矩形,默认使用黑色填充。 1286 1287**系统能力**:SystemCapability.Graphics.Drawing 1288 1289**参数:** 1290 1291| 参数名 | 类型 | 必填 | 说明 | 1292| ------ | -------------------------------------------------- | ---- | -------------- | 1293| rect | [common2D.Rect](js-apis-graphics-common2D.md#rect) | 是 | 绘制的矩形区域 | 1294 1295**错误码:** 1296 1297以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 1298 1299| 错误码ID | 错误信息 | 1300| ------- | --------------------------------------------| 1301| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. | 1302 1303**示例:** 1304 1305```ts 1306import { RenderNode } from '@kit.ArkUI'; 1307import { common2D, drawing } from '@kit.ArkGraphics2D'; 1308class DrawingRenderNode extends RenderNode { 1309 draw(context : DrawContext) { 1310 const canvas = context.canvas; 1311 const pen = new drawing.Pen(); 1312 pen.setStrokeWidth(5); 1313 pen.setColor({alpha: 255, red: 255, green: 0, blue: 0}); 1314 canvas.attachPen(pen); 1315 canvas.drawRect({ left : 0, right : 10, top : 0, bottom : 10 }); 1316 canvas.detachPen(); 1317 } 1318} 1319``` 1320 1321### drawRect<sup>12+</sup> 1322 1323drawRect(left: number, top: number, right: number, bottom: number): void 1324 1325用于绘制一个矩形,默认使用黑色填充。性能优于[drawRect](#drawrect)接口,推荐使用本接口。 1326 1327**系统能力**:SystemCapability.Graphics.Drawing 1328 1329**参数:** 1330 1331| 参数名 | 类型 | 必填 | 说明 | 1332| ------ | ------ | ---- | -------------- | 1333| left | number | 是 | 矩形的左上角x轴坐标,该参数为浮点数。 | 1334| top | number | 是 | 矩形的左上角y轴坐标,该参数为浮点数。 | 1335| right | number | 是 | 矩形的右下角x轴坐标,该参数为浮点数。 | 1336| bottom | number | 是 | 矩形的右下角y轴坐标,该参数为浮点数。 | 1337 1338**错误码:** 1339 1340以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 1341 1342| 错误码ID | 错误信息 | 1343| ------- | --------------------------------------------| 1344| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. | 1345 1346**示例:** 1347 1348```ts 1349import { RenderNode } from '@kit.ArkUI'; 1350import { drawing } from '@kit.ArkGraphics2D'; 1351class DrawingRenderNode extends RenderNode { 1352 1353 draw(context : DrawContext) { 1354 const canvas = context.canvas; 1355 const pen = new drawing.Pen(); 1356 pen.setStrokeWidth(5); 1357 pen.setColor({alpha: 255, red: 255, green: 0, blue: 0}); 1358 canvas.attachPen(pen); 1359 canvas.drawRect(0, 0, 10, 10); 1360 canvas.detachPen(); 1361 } 1362} 1363``` 1364 1365### drawRoundRect<sup>12+</sup> 1366 1367drawRoundRect(roundRect: RoundRect): void 1368 1369画一个圆角矩形。 1370 1371**系统能力**:SystemCapability.Graphics.Drawing 1372 1373**参数** 1374 1375| 参数名 | 类型 | 必填 | 说明 | 1376| ---------- | ----------------------- | ---- | ------------ | 1377| roundRect | [RoundRect](#roundrect12) | 是 | 圆角矩形对象。| 1378 1379**错误码:** 1380 1381以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 1382 1383| 错误码ID | 错误信息 | 1384| ------- | --------------------------------------------| 1385| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. | 1386 1387**示例** 1388 1389```ts 1390import { RenderNode } from '@kit.ArkUI'; 1391import { common2D, drawing } from '@kit.ArkGraphics2D'; 1392class DrawingRenderNode extends RenderNode { 1393 draw(context : DrawContext) { 1394 const canvas = context.canvas; 1395 let rect: common2D.Rect = { left : 100, top : 100, right : 400, bottom : 500 }; 1396 let roundRect = new drawing.RoundRect(rect, 10, 10); 1397 canvas.drawRoundRect(roundRect); 1398 } 1399} 1400``` 1401 1402### drawNestedRoundRect<sup>12+</sup> 1403 1404drawNestedRoundRect(outer: RoundRect, inner: RoundRect): void 1405 1406绘制两个嵌套的圆角矩形,外部矩形边界必须包含内部矩形边界,否则无绘制效果。 1407 1408**系统能力**:SystemCapability.Graphics.Drawing 1409 1410**参数** 1411 1412| 参数名 | 类型 | 必填 | 说明 | 1413| ------ | ----------------------- | ---- | ------------ | 1414| outer | [RoundRect](#roundrect12) | 是 | 圆角矩形对象,表示外部圆角矩形边界。| 1415| inner | [RoundRect](#roundrect12) | 是 | 圆角矩形对象,表示内部圆角矩形边界。| 1416 1417**错误码:** 1418 1419以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 1420 1421| 错误码ID | 错误信息 | 1422| ------- | --------------------------------------------| 1423| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. | 1424 1425**示例** 1426 1427```ts 1428import { RenderNode } from '@kit.ArkUI'; 1429import { common2D, drawing } from '@kit.ArkGraphics2D'; 1430class DrawingRenderNode extends RenderNode { 1431 draw(context : DrawContext) { 1432 const canvas = context.canvas; 1433 let inRect: common2D.Rect = { left : 200, top : 200, right : 400, bottom : 500 }; 1434 let outRect: common2D.Rect = { left : 100, top : 100, right : 400, bottom : 500 }; 1435 let outRoundRect = new drawing.RoundRect(outRect, 10, 10); 1436 let inRoundRect = new drawing.RoundRect(inRect, 10, 10); 1437 canvas.drawNestedRoundRect(outRoundRect, inRoundRect); 1438 canvas.drawRoundRect(outRoundRect); 1439 } 1440} 1441``` 1442 1443### drawBackground<sup>12+</sup> 1444 1445drawBackground(brush: Brush): void 1446 1447使用画刷填充画布的可绘制区域。 1448 1449**系统能力**:SystemCapability.Graphics.Drawing 1450 1451**参数** 1452 1453| 参数名 | 类型 | 必填 | 说明 | 1454| ------ | --------------- | ---- | ---------- | 1455| brush | [Brush](#brush) | 是 | 画刷对象。 | 1456 1457**错误码:** 1458 1459以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 1460 1461| 错误码ID | 错误信息 | 1462| ------- | --------------------------------------------| 1463| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. | 1464 1465**示例** 1466 1467```ts 1468import { RenderNode } from '@kit.ArkUI'; 1469import { common2D, drawing } from '@kit.ArkGraphics2D'; 1470class DrawingRenderNode extends RenderNode { 1471 draw(context : DrawContext) { 1472 const canvas = context.canvas; 1473 const brush = new drawing.Brush(); 1474 const color : common2D.Color = { alpha: 255, red: 255, green: 0, blue: 0 }; 1475 brush.setColor(color); 1476 canvas.drawBackground(brush); 1477 } 1478} 1479``` 1480 1481### drawShadow<sup>12+</sup> 1482 1483drawShadow(path: Path, planeParams: common2D.Point3d, devLightPos: common2D.Point3d, lightRadius: number, ambientColor: common2D.Color, spotColor: common2D.Color, flag: ShadowFlag) : void 1484 1485绘制射灯类型阴影,使用路径描述环境光阴影的轮廓。 1486 1487**系统能力**:SystemCapability.Graphics.Drawing 1488 1489**参数:** 1490 1491| 参数名 | 类型 | 必填 | 说明 | 1492| ------------ | ---------------------------------------- | ---- | ---------- | 1493| path | [Path](#path) | 是 | 路径对象,可生成阴影。 | 1494| planeParams | [common2D.Point3d](js-apis-graphics-common2D.md#point3d12) | 是 | 表示一个三维向量,用于计算z轴方向的偏移量。 | 1495| devLightPos | [common2D.Point3d](js-apis-graphics-common2D.md#point3d12) | 是 | 光线相对于画布的位置。 | 1496| lightRadius | number | 是 | 圆形灯半径,该参数为浮点数。 | 1497| ambientColor | [common2D.Color](js-apis-graphics-common2D.md#color) | 是 | 环境阴影颜色。 | 1498| spotColor | [common2D.Color](js-apis-graphics-common2D.md#color) | 是 | 点阴影颜色。 | 1499| flag | [ShadowFlag](#shadowflag12) | 是 | 阴影标志枚举。 | 1500 1501**错误码:** 1502 1503以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 1504 1505| 错误码ID | 错误信息 | 1506| ------- | --------------------------------------------| 1507| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types;3.Parameter verification failed. | 1508 1509**示例:** 1510 1511```ts 1512import { RenderNode } from '@kit.ArkUI'; 1513import { common2D, drawing } from '@kit.ArkGraphics2D'; 1514class DrawingRenderNode extends RenderNode { 1515 draw(context : DrawContext) { 1516 const canvas = context.canvas; 1517 const path = new drawing.Path(); 1518 path.addCircle(100, 200, 100, drawing.PathDirection.CLOCKWISE); 1519 let pen = new drawing.Pen(); 1520 pen.setAntiAlias(true); 1521 let pen_color : common2D.Color = { alpha: 0xFF, red: 0xFF, green: 0x00, blue: 0x00 }; 1522 pen.setColor(pen_color); 1523 pen.setStrokeWidth(10.0); 1524 canvas.attachPen(pen); 1525 let brush = new drawing.Brush(); 1526 let brush_color : common2D.Color = { alpha: 0xFF, red: 0x00, green: 0xFF, blue: 0x00 }; 1527 brush.setColor(brush_color); 1528 canvas.attachBrush(brush); 1529 let point1 : common2D.Point3d = {x: 100, y: 80, z:80}; 1530 let point2 : common2D.Point3d = {x: 200, y: 10, z:40}; 1531 let color1 : common2D.Color = {alpha: 0xFF, red:0, green:0, blue:0xFF}; 1532 let color2 : common2D.Color = {alpha: 0xFF, red:0xFF, green:0, blue:0}; 1533 let shadowFlag : drawing.ShadowFlag = drawing.ShadowFlag.ALL; 1534 canvas.drawShadow(path, point1, point2, 30, color1, color2, shadowFlag); 1535 } 1536} 1537``` 1538 1539### getLocalClipBounds<sup>12+</sup> 1540 1541getLocalClipBounds(): common2D.Rect 1542 1543获取画布裁剪区域的边界。 1544 1545**系统能力**:SystemCapability.Graphics.Drawing 1546 1547**返回值:** 1548 1549| 类型 | 说明 | 1550| ---------------------------------------- | -------- | 1551| [common2D.Rect](js-apis-graphics-common2D.md#rect) | 返回画布裁剪区域的矩形边界。 | 1552 1553**示例:** 1554 1555```ts 1556import { RenderNode } from '@kit.ArkUI'; 1557import { common2D, drawing } from '@kit.ArkGraphics2D'; 1558class DrawingRenderNode extends RenderNode { 1559 draw(context : DrawContext) { 1560 const canvas = context.canvas; 1561 let clipRect: common2D.Rect = { 1562 left : 150, top : 150, right : 300, bottom : 400 1563 }; 1564 canvas.clipRect(clipRect,drawing.ClipOp.DIFFERENCE, true); 1565 console.info("test rect.left: " + clipRect.left); 1566 console.info("test rect.top: " + clipRect.top); 1567 console.info("test rect.right: " + clipRect.right); 1568 console.info("test rect.bottom: " + clipRect.bottom); 1569 canvas.getLocalClipBounds(); 1570 } 1571} 1572``` 1573 1574### getTotalMatrix<sup>12+</sup> 1575 1576getTotalMatrix(): Matrix 1577 1578获取画布矩阵。 1579 1580**系统能力**:SystemCapability.Graphics.Drawing 1581 1582**返回值:** 1583 1584| 类型 | 说明 | 1585| ----------------- | -------- | 1586| [Matrix](#matrix12) |返回画布矩阵。 | 1587 1588**示例:** 1589 1590```ts 1591import { RenderNode } from '@kit.ArkUI'; 1592import { drawing } from '@kit.ArkGraphics2D'; 1593class DrawingRenderNode extends RenderNode { 1594 draw(context : DrawContext) { 1595 const canvas = context.canvas; 1596 let matrix = new drawing.Matrix(); 1597 matrix.setMatrix([5, 0, 0, 0, 1, 1, 0, 0, 1]); 1598 canvas.setMatrix(matrix); 1599 let matrixResult =canvas.getTotalMatrix(); 1600 } 1601} 1602``` 1603 1604### drawCircle 1605 1606drawCircle(x: number, y: number, radius: number): void 1607 1608用于画一个圆形。如果半径小于等于零,则不绘制任何内容。默认使用黑色填充。 1609 1610**系统能力**:SystemCapability.Graphics.Drawing 1611 1612**参数:** 1613 1614| 参数名 | 类型 | 必填 | 说明 | 1615| ------ | ------ | ---- | ------------------- | 1616| x | number | 是 | 圆心的x坐标,该参数为浮点数。 | 1617| y | number | 是 | 圆心的y坐标,该参数为浮点数。 | 1618| radius | number | 是 | 圆的半径,大于0的浮点数。 | 1619 1620**错误码:** 1621 1622以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 1623 1624| 错误码ID | 错误信息 | 1625| ------- | --------------------------------------------| 1626| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types;3.Parameter verification failed. | 1627 1628**示例:** 1629 1630```ts 1631import { RenderNode } from '@kit.ArkUI'; 1632import { drawing } from '@kit.ArkGraphics2D'; 1633class DrawingRenderNode extends RenderNode { 1634 draw(context : DrawContext) { 1635 const canvas = context.canvas; 1636 const pen = new drawing.Pen(); 1637 pen.setStrokeWidth(5); 1638 pen.setColor({alpha: 255, red: 255, green: 0, blue: 0}); 1639 canvas.attachPen(pen); 1640 canvas.drawCircle(10, 10, 2); 1641 canvas.detachPen(); 1642 } 1643} 1644``` 1645 1646### drawImage 1647 1648drawImage(pixelmap: image.PixelMap, left: number, top: number, samplingOptions?: SamplingOptions): void 1649 1650用于画一张图片,图片的左上角坐标为(left, top)。 1651 1652**系统能力**:SystemCapability.Graphics.Drawing 1653 1654**参数:** 1655 1656| 参数名 | 类型 | 必填 | 说明 | 1657| -------- | -------------------------------------------- | ---- | ------------------------------- | 1658| pixelmap | [image.PixelMap](../apis-image-kit/js-apis-image.md#pixelmap7) | 是 | 图片的PixelMap | 1659| left | number | 是 | 图片位置的左上角x轴坐标,该参数为浮点数。 | 1660| top | number | 是 | 图片位置的左上角y轴坐标,该参数为浮点数。 | 1661| samplingOptions<sup>12+</sup> | [SamplingOptions](#samplingoptions12) | 否 | 采样选项对象,默认为不使用任何参数构造的原始采样选项对象。 | 1662 1663**错误码:** 1664 1665以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 1666 1667| 错误码ID | 错误信息 | 1668| ------- | --------------------------------------------| 1669| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. | 1670 1671**示例:** 1672 1673```ts 1674import { RenderNode } from '@kit.ArkUI'; 1675import { image } from '@kit.ImageKit'; 1676import { drawing } from '@kit.ArkGraphics2D'; 1677class DrawingRenderNode extends RenderNode { 1678 pixelMap: image.PixelMap | null = null; 1679 1680 async draw(context : DrawContext) { 1681 const canvas = context.canvas; 1682 let options = new drawing.SamplingOptions(drawing.FilterMode.FILTER_MODE_NEAREST); 1683 if (this.pixelMap != null) { 1684 canvas.drawImage(this.pixelMap, 0, 0, options); 1685 } 1686 } 1687} 1688``` 1689 1690### drawImageRect<sup>12+</sup> 1691 1692drawImageRect(pixelmap: image.PixelMap, dstRect: common2D.Rect, samplingOptions?: SamplingOptions): void 1693 1694将图片绘制到画布的指定区域上。 1695 1696**系统能力**:SystemCapability.Graphics.Drawing 1697 1698**参数:** 1699 1700| 参数名 | 类型 | 必填 | 说明 | 1701| -------- | -------------------------------------------- | ---- | ------------------------------- | 1702| pixelmap | [image.PixelMap](../apis-image-kit/js-apis-image.md#pixelmap7) | 是 | 图片的PixelMap。 | 1703| dstRect | [common2D.Rect](js-apis-graphics-common2D.md#rect) | 是 | 矩形对象,用于指定画布上图片的绘制区域。 | 1704| samplingOptions | [SamplingOptions](#samplingoptions12) | 否 | 采样选项对象,默认为不使用任何参数构造的原始采样选项对象。 | 1705 1706**错误码:** 1707 1708以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 1709 1710| 错误码ID | 错误信息 | 1711| ------- | --------------------------------------------| 1712| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. | 1713 1714**示例:** 1715 1716```ts 1717import { RenderNode } from '@kit.ArkUI'; 1718import { image } from '@kit.ImageKit'; 1719import { common2D, drawing } from '@kit.ArkGraphics2D'; 1720class DrawingRenderNode extends RenderNode { 1721pixelMap: image.PixelMap | null = null; 1722 draw(context : DrawContext) { 1723 const canvas = context.canvas; 1724 let pen = new drawing.Pen(); 1725 canvas.attachPen(pen); 1726 let rect: common2D.Rect = { left: 0, top: 0, right: 200, bottom: 200 }; 1727 canvas.drawImageRect(this.pixelMap, rect); 1728 canvas.detachPen(); 1729 } 1730} 1731``` 1732 1733### drawImageRectWithSrc<sup>12+</sup> 1734 1735drawImageRectWithSrc(pixelmap: image.PixelMap, srcRect: common2D.Rect, dstRect: common2D.Rect, samplingOptions?: SamplingOptions, constraint?: SrcRectConstraint): void 1736 1737将图片的指定区域绘制到画布的指定区域。 1738 1739**系统能力**:SystemCapability.Graphics.Drawing 1740 1741**参数:** 1742 1743| 参数名 | 类型 | 必填 | 说明 | 1744| -------- | -------------------------------------------- | ---- | ------------------------------- | 1745| pixelmap | [image.PixelMap](../apis-image-kit/js-apis-image.md#pixelmap7) | 是 | 图片的PixelMap。 | 1746| srcRect | [common2D.Rect](js-apis-graphics-common2D.md#rect) | 是 | 矩形对象,用于指定图片的待绘制区域。 | 1747| dstRect | [common2D.Rect](js-apis-graphics-common2D.md#rect) | 是 | 矩形对象,用于指定画布上图片的绘制区域。 | 1748| samplingOptions | [SamplingOptions](#samplingoptions12) | 否 | 采样选项对象,默认为不使用任何参数构造的原始采样选项对象。 | 1749| constraint | [SrcRectConstraint](#srcrectconstraint12) | 否 | 源矩形区域约束类型,默认为STRICT。 | 1750 1751**错误码:** 1752 1753以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 1754 1755| 错误码ID | 错误信息 | 1756| ------- | --------------------------------------------| 1757| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. | 1758 1759**示例:** 1760 1761```ts 1762import { RenderNode } from '@kit.ArkUI'; 1763import { image } from '@kit.ImageKit'; 1764import { common2D, drawing } from '@kit.ArkGraphics2D'; 1765class DrawingRenderNode extends RenderNode { 1766pixelMap: image.PixelMap | null = null; 1767 draw(context : DrawContext) { 1768 const canvas = context.canvas; 1769 let pen = new drawing.Pen(); 1770 canvas.attachPen(pen); 1771 let srcRect: common2D.Rect = { left: 0, top: 0, right: 100, bottom: 100 }; 1772 let dstRect: common2D.Rect = { left: 100, top: 100, right: 200, bottom: 200 }; 1773 canvas.drawImageRectWithSrc(this.pixelMap, srcRect, dstRect); 1774 canvas.detachPen(); 1775 } 1776} 1777``` 1778 1779### drawColor 1780 1781drawColor(color: common2D.Color, blendMode?: BlendMode): void 1782 1783绘制背景颜色。 1784 1785**系统能力**:SystemCapability.Graphics.Drawing 1786 1787**参数:** 1788 1789| 参数名 | 类型 | 必填 | 说明 | 1790| --------- | ---------------------------------------------------- | ---- | -------------------------------- | 1791| color | [common2D.Color](js-apis-graphics-common2D.md#color) | 是 | ARGB格式的颜色,每个颜色通道是0到255之间的整数。 | 1792| blendMode | [BlendMode](#blendmode) | 否 | 颜色混合模式,默认模式为SRC_OVER | 1793 1794**错误码:** 1795 1796以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 1797 1798| 错误码ID | 错误信息 | 1799| ------- | --------------------------------------------| 1800| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types;3.Parameter verification failed. | 1801 1802**示例:** 1803 1804```ts 1805import { RenderNode } from '@kit.ArkUI'; 1806import { common2D, drawing } from '@kit.ArkGraphics2D'; 1807class DrawingRenderNode extends RenderNode { 1808 draw(context : DrawContext) { 1809 const canvas = context.canvas; 1810 let color: common2D.Color = { 1811 alpha : 255, 1812 red: 0, 1813 green: 10, 1814 blue: 10 1815 } 1816 canvas.drawColor(color, drawing.BlendMode.CLEAR); 1817 } 1818} 1819``` 1820 1821### drawColor<sup>12+</sup> 1822 1823drawColor(alpha: number, red: number, green: number, blue: number, blendMode?: BlendMode): void 1824 1825绘制背景颜色。性能优于[drawColor](#drawcolor)接口,推荐使用本接口。 1826 1827**系统能力**:SystemCapability.Graphics.Drawing 1828 1829**参数:** 1830 1831| 参数名 | 类型 | 必填 | 说明 | 1832| --------- | ----------------------- | ---- | ------------------------------------------------- | 1833| alpha | number | 是 | ARGB格式颜色的透明度通道值,该参数是0到255之间的整数,传入范围内的浮点数会向下取整。 | 1834| red | number | 是 | ARGB格式颜色的红色通道值,该参数是0到255之间的整数,传入范围内的浮点数会向下取整。 | 1835| green | number | 是 | ARGB格式颜色的绿色通道值,该参数是0到255之间的整数,传入范围内的浮点数会向下取整。 | 1836| blue | number | 是 | ARGB格式颜色的蓝色通道值,该参数是0到255之间的整数,传入范围内的浮点数会向下取整。 | 1837| blendMode | [BlendMode](#blendmode) | 否 | 颜色混合模式,默认模式为SRC_OVER。 | 1838 1839**错误码:** 1840 1841以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 1842 1843| 错误码ID | 错误信息 | 1844| ------- | --------------------------------------------| 1845| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types;3.Parameter verification failed. | 1846 1847**示例:** 1848 1849```ts 1850import { RenderNode } from '@kit.ArkUI'; 1851import { drawing } from '@kit.ArkGraphics2D'; 1852class DrawingRenderNode extends RenderNode { 1853 draw(context : DrawContext) { 1854 const canvas = context.canvas; 1855 canvas.drawColor(255, 0, 10, 10, drawing.BlendMode.CLEAR); 1856 } 1857} 1858``` 1859 1860### drawPixelMapMesh<sup>12+</sup> 1861 1862drawPixelMapMesh(pixelmap: image.PixelMap, meshWidth: number, meshHeight: number, vertices: Array\<number>, vertOffset: number, colors: Array\<number>, colorOffset: number): void 1863 1864在网格上绘制像素图,网格均匀分布在像素图上。 1865 1866**系统能力**:SystemCapability.Graphics.Drawing 1867 1868**参数:** 1869 1870| 参数名 | 类型 | 必填 | 说明 | 1871| ----------- | ------------- | ---- | ------------------------------- | 1872| pixelmap | [image.PixelMap](../apis-image-kit/js-apis-image.md#pixelmap7) | 是 | 用于绘制网格的像素图。 | 1873| meshWidth | number | 是 | 网格中的列数,大于0的整数。 | 1874| meshHeight | number | 是 | 网格中的行数,大于0的整数。 | 1875| vertices | Array\<number> | 是 | 顶点数组,指定网格的绘制位置,浮点数组,大小必须为((meshWidth+1) * (meshHeight+1) + vertOffset) * 2。 | 1876| vertOffset | number | 是 | 绘图前要跳过的vert元素数,大于等于0的整数。 | 1877| colors | Array\<number> | 是 | 颜色数组,在每个顶点指定一种颜色,整数数组,可为null,大小必须为(meshWidth+1) * (meshHeight+1) + colorOffset。 | 1878| colorOffset | number | 是 | 绘制前要跳过的颜色元素数,大于等于0的整数。 | 1879 1880**错误码:** 1881 1882以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 1883 1884| 错误码ID | 错误信息 | 1885| ------- | --------------------------------------------| 1886| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. | 1887 1888**示例:** 1889 1890```ts 1891import { RenderNode } from '@kit.ArkUI'; 1892import { image } from '@kit.ImageKit'; 1893import { drawing } from '@kit.ArkGraphics2D'; 1894class DrawingRenderNode extends RenderNode { 1895 pixelMap: image.PixelMap | null = null; 1896 1897 async draw(context : DrawContext) { 1898 const canvas = context.canvas; 1899 if (this.pixelMap != null) { 1900 const brush = new drawing.Brush(); // 只支持brush,使用pen没有绘制效果。 1901 canvas.attachBrush(brush); 1902 let verts : Array<number> = [0, 0, 50, 0, 410, 0, 0, 180, 50, 180, 410, 180, 0, 360, 50, 360, 410, 360]; // 18 1903 canvas.drawPixelMapMesh(this.pixelMap, 2, 2, verts, 0, null, 0); 1904 canvas.detachBrush(); 1905 } 1906 } 1907} 1908``` 1909 1910### clear<sup>12+</sup> 1911 1912clear(color: common2D.Color): void 1913 1914使用指定颜色填充画布上的裁剪区域。 1915 1916**系统能力**:SystemCapability.Graphics.Drawing 1917 1918**参数:** 1919 1920| 参数名 | 类型 | 必填 | 说明 | 1921| --------- | ---------------------------------------------------- | ---- | -------------------------------- | 1922| color | [common2D.Color](js-apis-graphics-common2D.md#color) | 是 | ARGB格式的颜色,每个颜色通道是0到255之间的整数。 | 1923 1924**错误码:** 1925 1926以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 1927 1928| 错误码ID | 错误信息 | 1929| ------- | --------------------------------------------| 1930| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. | 1931 1932**示例:** 1933 1934```ts 1935import { RenderNode } from '@kit.ArkUI'; 1936import { common2D, drawing } from '@kit.ArkGraphics2D'; 1937class DrawingRenderNode extends RenderNode { 1938 draw(context : DrawContext) { 1939 const canvas = context.canvas; 1940 let color: common2D.Color = {alpha: 255, red: 255, green: 0, blue: 0}; 1941 canvas.clear(color); 1942 } 1943} 1944``` 1945 1946### getWidth<sup>12+</sup> 1947 1948getWidth(): number 1949 1950获取画布的宽度。 1951 1952**系统能力**:SystemCapability.Graphics.Drawing 1953 1954**返回值:** 1955 1956| 类型 | 必填 | 说明 | 1957| ------ | ---- | -------------- | 1958| number | 是 | 返回画布的宽度,该参数为浮点数。 | 1959 1960**示例:** 1961 1962```ts 1963import { RenderNode } from '@kit.ArkUI'; 1964import { drawing } from '@kit.ArkGraphics2D'; 1965class DrawingRenderNode extends RenderNode { 1966 draw(context : DrawContext) { 1967 const canvas = context.canvas; 1968 let width = canvas.getWidth(); 1969 console.info('get canvas width:' + width); 1970 } 1971} 1972``` 1973 1974### getHeight<sup>12+</sup> 1975 1976getHeight(): number 1977 1978获取画布的高度。 1979 1980**系统能力**:SystemCapability.Graphics.Drawing 1981 1982**返回值:** 1983 1984| 类型 | 必填 | 说明 | 1985| ------ | ---- | -------------- | 1986| number | 是 | 返回画布的高度,该参数为浮点数。 | 1987 1988**示例:** 1989 1990```ts 1991import { RenderNode } from '@kit.ArkUI'; 1992import { drawing } from '@kit.ArkGraphics2D'; 1993class DrawingRenderNode extends RenderNode { 1994 draw(context : DrawContext) { 1995 const canvas = context.canvas; 1996 let height = canvas.getHeight(); 1997 console.log('get canvas height:' + height); 1998 } 1999} 2000``` 2001 2002### drawOval<sup>12+</sup> 2003 2004drawOval(oval: common2D.Rect): void 2005 2006在画布上绘制一个椭圆,椭圆的形状和位置由定义椭圆边界的矩形参数定义。 2007 2008**系统能力**:SystemCapability.Graphics.Drawing 2009 2010**参数** 2011 2012| 参数名 | 类型 | 必填 | 说明 | 2013| ------ | -------------------------------------------------- | ---- | -------------- | 2014| oval | [common2D.Rect](js-apis-graphics-common2D.md#rect) | 是 | 矩形区域,该矩形的内切椭圆即为待绘制椭圆。 | 2015 2016**错误码:** 2017 2018以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 2019 2020| 错误码ID | 错误信息 | 2021| ------- | --------------------------------------------| 2022| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. | 2023 2024**示例** 2025 2026```ts 2027import { RenderNode } from '@kit.ArkUI'; 2028import { common2D, drawing } from '@kit.ArkGraphics2D'; 2029class DrawingRenderNode extends RenderNode { 2030 draw(context : DrawContext) { 2031 const canvas = context.canvas; 2032 const pen = new drawing.Pen(); 2033 pen.setStrokeWidth(5); 2034 const color : common2D.Color = { alpha: 255, red: 255, green: 0, blue: 0 }; 2035 pen.setColor(color); 2036 canvas.attachPen(pen); 2037 const rect: common2D.Rect = {left:100, top:50, right:400, bottom:500}; 2038 canvas.drawOval(rect); 2039 canvas.detachPen(); 2040 } 2041} 2042``` 2043 2044### drawArc<sup>12+</sup> 2045 2046drawArc(arc: common2D.Rect, startAngle: number, sweepAngle: number): void 2047 2048在画布上绘制一段圆弧。该方法允许指定圆弧的起始角度、扫描角度。 2049 2050**系统能力**:SystemCapability.Graphics.Drawing 2051 2052**参数** 2053 2054| 参数名 | 类型 | 必填 | 说明 | 2055| ------ | -------------------------------------------------- | ---- | -------------- | 2056| arc | [common2D.Rect](js-apis-graphics-common2D.md#rect) | 是 | 包含要绘制的圆弧的椭圆的矩形边界。 | 2057| startAngle | number | 是 | 弧的起始角度,单位为度,该参数为浮点数。0度时起始点位于椭圆的右端点,正数时以顺时针方向放置起始点,负数时以逆时针方向放置起始点。 | 2058| sweepAngle | number | 是 | 弧的扫描角度,单位为度,该参数为浮点数。为正数时顺时针扫描,为负数时逆时针扫描。 | 2059 2060**错误码:** 2061 2062以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 2063 2064| 错误码ID | 错误信息 | 2065| ------- | --------------------------------------------| 2066| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. | 2067 2068**示例** 2069 2070```ts 2071import { RenderNode } from '@kit.ArkUI'; 2072import { common2D, drawing } from '@kit.ArkGraphics2D'; 2073class DrawingRenderNode extends RenderNode { 2074 draw(context : DrawContext) { 2075 const canvas = context.canvas; 2076 const pen = new drawing.Pen(); 2077 pen.setStrokeWidth(5); 2078 const color : common2D.Color = { alpha: 255, red: 255, green: 0, blue: 0 }; 2079 pen.setColor(color); 2080 canvas.attachPen(pen); 2081 const rect: common2D.Rect = {left:100, top:50, right:400, bottom:200}; 2082 canvas.drawArc(rect, 90, 180); 2083 canvas.detachPen(); 2084 } 2085} 2086``` 2087 2088### drawPoint 2089 2090drawPoint(x: number, y: number): void 2091 2092用于绘制一个点。 2093 2094**系统能力**:SystemCapability.Graphics.Drawing 2095 2096**参数:** 2097 2098| 参数名 | 类型 | 必填 | 说明 | 2099| ------ | ------ | ---- | ------------------- | 2100| x | number | 是 | 点的x轴坐标,该参数为浮点数。 | 2101| y | number | 是 | 点的y轴坐标,该参数为浮点数。 | 2102 2103**错误码:** 2104 2105以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 2106 2107| 错误码ID | 错误信息 | 2108| ------- | --------------------------------------------| 2109| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. | 2110 2111**示例:** 2112 2113```ts 2114import { RenderNode } from '@kit.ArkUI'; 2115import { drawing } from '@kit.ArkGraphics2D'; 2116class DrawingRenderNode extends RenderNode { 2117 draw(context : DrawContext) { 2118 const canvas = context.canvas; 2119 const pen = new drawing.Pen(); 2120 pen.setStrokeWidth(5); 2121 pen.setColor({alpha: 255, red: 255, green: 0, blue: 0}); 2122 canvas.attachPen(pen); 2123 canvas.drawPoint(10, 10); 2124 canvas.detachPen(); 2125 } 2126} 2127``` 2128 2129### drawPoints<sup>12+</sup> 2130 2131drawPoints(points: Array\<common2D.Point>, mode?: PointMode): void 2132 2133在画布上绘制一组点、线段或多边形。通过指定点的数组和绘制模式来决定如何绘制这些点。 2134 2135**系统能力**:SystemCapability.Graphics.Drawing 2136 2137**参数:** 2138 2139| 参数名 | 类型 | 必填 | 说明 | 2140| ---- | ---------------------------------------- | ---- | --------- | 2141| points | Array\<[common2D.Point](js-apis-graphics-common2D.md#point)> | 是 | 要绘制的点的数组。长度不能为0。 | 2142| mode | [PointMode](#pointmode12) | 否 | 绘制数组中的点的方式,默认为drawing.PointMode.POINTS。 | 2143 2144**错误码:** 2145 2146以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 2147 2148| 错误码ID | 错误信息 | 2149| ------- | --------------------------------------------| 2150| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified;2. Incorrect parameter types; 3. Parameter verification failed.| 2151 2152**示例:** 2153 2154```ts 2155import { RenderNode } from '@kit.ArkUI'; 2156import { common2D, drawing } from '@kit.ArkGraphics2D'; 2157class DrawingRenderNode extends RenderNode { 2158 draw(context : DrawContext) { 2159 const canvas = context.canvas; 2160 const pen = new drawing.Pen(); 2161 pen.setStrokeWidth(30); 2162 const color : common2D.Color = { alpha: 255, red: 255, green: 0, blue: 0 }; 2163 pen.setColor(color); 2164 canvas.attachPen(pen); 2165 canvas.drawPoints([{x: 100, y: 200}, {x: 150, y: 230}, {x: 200, y: 300}], drawing.PointMode.POINTS); 2166 canvas.detachPen(); 2167 } 2168} 2169``` 2170 2171### drawPath 2172 2173drawPath(path: Path): void 2174 2175用于绘制一个自定义路径,该路径包含了一组路径轮廓,每个路径轮廓可以是开放的或封闭的。 2176 2177**系统能力**:SystemCapability.Graphics.Drawing 2178 2179**参数:** 2180 2181| 参数名 | 类型 | 必填 | 说明 | 2182| ------ | ------------- | ---- | ------------------ | 2183| path | [Path](#path) | 是 | 要绘制的路径对象。 | 2184 2185**错误码:** 2186 2187以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 2188 2189| 错误码ID | 错误信息 | 2190| ------- | --------------------------------------------| 2191| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. | 2192 2193**示例:** 2194 2195```ts 2196import { RenderNode } from '@kit.ArkUI'; 2197import { drawing } from '@kit.ArkGraphics2D'; 2198class DrawingRenderNode extends RenderNode { 2199 draw(context : DrawContext) { 2200 const canvas = context.canvas; 2201 const pen = new drawing.Pen(); 2202 pen.setStrokeWidth(5); 2203 pen.setColor({alpha: 255, red: 255, green: 0, blue: 0}); 2204 let path = new drawing.Path(); 2205 path.moveTo(10,10); 2206 path.cubicTo(10, 10, 10, 10, 15, 15); 2207 path.close(); 2208 canvas.attachPen(pen); 2209 canvas.drawPath(path); 2210 canvas.detachPen(); 2211 } 2212} 2213``` 2214 2215### drawLine 2216 2217drawLine(x0: number, y0: number, x1: number, y1: number): void 2218 2219用于画一条直线段,从指定的起点到指点的终点。如果直线段的起点和终点是同一个点,无法绘制。 2220 2221**系统能力**:SystemCapability.Graphics.Drawing 2222 2223**参数:** 2224 2225| 参数名 | 类型 | 必填 | 说明 | 2226| ------ | ------ | ---- | ----------------------- | 2227| x0 | number | 是 | 线段起点的X坐标,该参数为浮点数。 | 2228| y0 | number | 是 | 线段起点的Y坐标,该参数为浮点数。 | 2229| x1 | number | 是 | 线段终点的X坐标,该参数为浮点数。 | 2230| y1 | number | 是 | 线段终点的Y坐标,该参数为浮点数。 | 2231 2232**错误码:** 2233 2234以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 2235 2236| 错误码ID | 错误信息 | 2237| ------- | --------------------------------------------| 2238| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. | 2239 2240**示例:** 2241 2242```ts 2243import { RenderNode } from '@kit.ArkUI'; 2244import { drawing } from '@kit.ArkGraphics2D'; 2245class DrawingRenderNode extends RenderNode { 2246 draw(context : DrawContext) { 2247 const canvas = context.canvas; 2248 const pen = new drawing.Pen(); 2249 pen.setStrokeWidth(5); 2250 pen.setColor({alpha: 255, red: 255, green: 0, blue: 0}); 2251 canvas.attachPen(pen); 2252 canvas.drawLine(0, 0, 20, 20); 2253 canvas.detachPen(); 2254 } 2255} 2256``` 2257 2258### drawTextBlob 2259 2260drawTextBlob(blob: TextBlob, x: number, y: number): void 2261 2262用于绘制一段文字。若构造blob的字体不支持待绘制字符,则该部分字符无法绘制。 2263 2264**系统能力**:SystemCapability.Graphics.Drawing 2265 2266**参数:** 2267 2268| 参数名 | 类型 | 必填 | 说明 | 2269| ------ | --------------------- | ---- | ------------------------------------------ | 2270| blob | [TextBlob](#textblob) | 是 | TextBlob对象。 | 2271| x | number | 是 | 所绘制出的文字基线(下图蓝线)的左端点(下图红点)的横坐标,该参数为浮点数。 | 2272| y | number | 是 | 所绘制出的文字基线(下图蓝线)的左端点(下图红点)的纵坐标,该参数为浮点数。 | 2273 2274 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 2322 2323**错误码:** 2324 2325以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 2326 2327| 错误码ID | 错误信息 | 2328| ------- | --------------------------------------------| 2329| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types;3.Parameter verification failed. | 2330 2331**示例** 2332 2333```ts 2334import { RenderNode } from '@kit.ArkUI'; 2335import { drawing } from '@kit.ArkGraphics2D'; 2336 2337class DrawingRenderNode extends RenderNode { 2338 draw(context : DrawContext) { 2339 const canvas = context.canvas; 2340 const brush = new drawing.Brush(); 2341 brush.setColor({alpha: 255, red: 255, green: 0, blue: 0}); 2342 const font = new drawing.Font(); 2343 font.setSize(20); 2344 canvas.attachBrush(brush); 2345 canvas.drawSingleCharacter("你", font, 100, 100); 2346 canvas.drawSingleCharacter("好", font, 120, 100); 2347 canvas.detachBrush(); 2348 } 2349} 2350``` 2351 2352### drawRegion<sup>12+</sup> 2353 2354drawRegion(region: Region): void 2355 2356用于绘制一个区域。 2357 2358**系统能力**:SystemCapability.Graphics.Drawing 2359 2360**参数** 2361 2362| 参数名 | 类型 | 必填 | 说明 | 2363| ------ | ------------------- | ---- | ----------- | 2364| region | [Region](#region12) | 是 | 绘制的区域 | 2365 2366**错误码:** 2367 2368以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 2369 2370| 错误码ID | 错误信息 | 2371| ------- | --------------------------------------------| 2372| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. | 2373 2374**示例** 2375 2376```ts 2377import { RenderNode } from '@kit.ArkUI'; 2378class DrawingRenderNode extends RenderNode { 2379 draw(context : DrawContext) { 2380 const canvas = context.canvas; 2381 const pen = new drawing.Pen(); 2382 let region = new drawing.Region(); 2383 pen.setStrokeWidth(10); 2384 pen.setColor({ alpha: 255, red: 255, green: 0, blue: 0 }); 2385 canvas.attachPen(pen); 2386 region.setRect(100, 100, 400, 400); 2387 canvas.drawRegion(region); 2388 canvas.detachPen(); 2389 } 2390} 2391``` 2392 2393### attachPen 2394 2395attachPen(pen: Pen): void 2396 2397绑定画笔给画布,画布将使用画笔的样式和颜色去绘制图形形状的轮廓。 2398 2399> **说明:** 2400> 2401> 执行该方法后,若pen的效果发生改变并且开发者希望该变化生效于接下来的绘制动作,需要再次执行该方法以确保变化生效。 2402 2403**系统能力**:SystemCapability.Graphics.Drawing 2404 2405**参数:** 2406 2407| 参数名 | 类型 | 必填 | 说明 | 2408| ------ | ----------- | ---- | ---------- | 2409| pen | [Pen](#pen) | 是 | 画笔对象。 | 2410 2411**错误码:** 2412 2413以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 2414 2415| 错误码ID | 错误信息 | 2416| ------- | --------------------------------------------| 2417| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. | 2418 2419**示例:** 2420 2421```ts 2422import { RenderNode } from '@kit.ArkUI'; 2423import { drawing } from '@kit.ArkGraphics2D'; 2424class DrawingRenderNode extends RenderNode { 2425 draw(context : DrawContext) { 2426 const canvas = context.canvas; 2427 const pen = new drawing.Pen(); 2428 pen.setStrokeWidth(5); 2429 pen.setColor({alpha: 255, red: 255, green: 0, blue: 0}); 2430 canvas.attachPen(pen); 2431 canvas.drawRect({ left : 0, right : 10, top : 0, bottom : 10 }); 2432 canvas.detachPen(); 2433 } 2434} 2435``` 2436 2437### attachBrush 2438 2439attachBrush(brush: Brush): void 2440 2441绑定画刷给画布,画布将使用画刷的样式和颜色去绘制图形形状,并在其内部进行填充。 2442 2443> **说明:** 2444> 2445> 执行该方法后,若brush的效果发生改变并且开发者希望该变化生效于接下来的绘制动作,需要再次执行该方法以确保变化生效。 2446 2447**系统能力**:SystemCapability.Graphics.Drawing 2448 2449**参数:** 2450 2451| 参数名 | 类型 | 必填 | 说明 | 2452| ------ | --------------- | ---- | ---------- | 2453| brush | [Brush](#brush) | 是 | 画刷对象。 | 2454 2455**错误码:** 2456 2457以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 2458 2459| 错误码ID | 错误信息 | 2460| ------- | --------------------------------------------| 2461| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. | 2462 2463**示例:** 2464 2465```ts 2466import { RenderNode } from '@kit.ArkUI'; 2467import { drawing } from '@kit.ArkGraphics2D'; 2468class DrawingRenderNode extends RenderNode { 2469 draw(context : DrawContext) { 2470 const canvas = context.canvas; 2471 const brush = new drawing.Brush(); 2472 brush.setColor({alpha: 255, red: 255, green: 0, blue: 0}); 2473 canvas.attachBrush(brush); 2474 canvas.drawRect({ left : 0, right : 10, top : 0, bottom : 10 }); 2475 canvas.detachBrush(); 2476 } 2477} 2478``` 2479 2480### detachPen 2481 2482detachPen(): void 2483 2484用于去除掉画布中的画笔,画布将不再使用画笔去绘制图形形状的轮廓。 2485 2486**系统能力**:SystemCapability.Graphics.Drawing 2487 2488**示例:** 2489 2490```ts 2491import { RenderNode } from '@kit.ArkUI'; 2492import { drawing } from '@kit.ArkGraphics2D'; 2493class DrawingRenderNode extends RenderNode { 2494 draw(context : DrawContext) { 2495 const canvas = context.canvas; 2496 const pen = new drawing.Pen(); 2497 pen.setStrokeWidth(5); 2498 pen.setColor({alpha: 255, red: 255, green: 0, blue: 0}); 2499 canvas.attachPen(pen); 2500 canvas.drawRect({ left : 0, right : 10, top : 0, bottom : 10 }); 2501 canvas.detachPen(); 2502 } 2503} 2504``` 2505 2506### detachBrush 2507 2508detachBrush(): void 2509 2510用于去除掉画布中的画刷,画布将不再使用画刷去绘制图形形状,也不会进行填充。 2511 2512**系统能力**:SystemCapability.Graphics.Drawing 2513 2514**示例:** 2515 2516```ts 2517import { RenderNode } from '@kit.ArkUI'; 2518import { drawing } from '@kit.ArkGraphics2D'; 2519class DrawingRenderNode extends RenderNode { 2520 draw(context : DrawContext) { 2521 const canvas = context.canvas; 2522 const brush = new drawing.Brush(); 2523 brush.setColor({alpha: 255, red: 255, green: 0, blue: 0}); 2524 canvas.attachBrush(brush); 2525 canvas.drawRect({ left : 0, right : 10, top : 0, bottom : 10 }); 2526 canvas.detachBrush(); 2527 } 2528} 2529``` 2530 2531### clipPath<sup>12+</sup> 2532 2533clipPath(path: Path, clipOp?: ClipOp, doAntiAlias?: boolean): void 2534 2535用于裁剪一个自定义路径。 2536 2537**系统能力**:SystemCapability.Graphics.Drawing 2538 2539**参数:** 2540 2541| 参数名 | 类型 | 必填 | 说明 | 2542| ------------ | ----------------- | ---- | ------------------------------------| 2543| path | [Path](#path) | 是 | 路径对象。 | 2544| clipOp | [ClipOp](#clipop12) | 否 | 裁剪方式。默认为INTERSECT。 | 2545| doAntiAlias | boolean | 否 | 表示是否使能抗锯齿绘制。true表示使能,false表示不使能。默认为false。 | 2546 2547**错误码:** 2548 2549以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 2550 2551| 错误码ID | 错误信息 | 2552| ------- | --------------------------------------------| 2553| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. | 2554 2555**示例:** 2556 2557```ts 2558import { RenderNode } from '@kit.ArkUI'; 2559import { common2D, drawing } from '@kit.ArkGraphics2D'; 2560class DrawingRenderNode extends RenderNode { 2561 draw(context : DrawContext) { 2562 const canvas = context.canvas; 2563 const pen = new drawing.Pen(); 2564 pen.setStrokeWidth(5); 2565 pen.setColor({alpha: 255, red: 255, green: 0, blue: 0}); 2566 let path = new drawing.Path(); 2567 path.moveTo(10, 10); 2568 path.cubicTo(10, 10, 10, 10, 15, 15); 2569 path.close(); 2570 canvas.attachPen(pen); 2571 canvas.clipPath(path, drawing.ClipOp.DIFFERENCE, true); 2572 canvas.detachPen(); 2573 } 2574} 2575``` 2576 2577### clipRect<sup>12+</sup> 2578 2579clipRect(rect: common2D.Rect, clipOp?: ClipOp, doAntiAlias?: boolean): void 2580 2581用于裁剪一个矩形。 2582 2583**系统能力**:SystemCapability.Graphics.Drawing 2584 2585**参数:** 2586 2587| 参数名 | 类型 | 必填 | 说明 | 2588| ----------- | ---------------------------------------- | ---- | ------------------- | 2589| rect | [common2D.Rect](js-apis-graphics-common2D.md#rect) | 是 | 需要裁剪的矩形区域。 | 2590| clipOp | [ClipOp](#clipop12) | 否 | 裁剪方式。默认为INTERSECT。 | 2591| doAntiAlias | boolean | 否 | 表示是否使能抗锯齿绘制。true表示使能,false表示不使能。默认为false。 | 2592 2593**错误码:** 2594 2595以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 2596 2597| 错误码ID | 错误信息 | 2598| ------- | --------------------------------------------| 2599| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. | 2600 2601**示例:** 2602 2603```ts 2604import { RenderNode } from '@kit.ArkUI'; 2605import { common2D, drawing } from '@kit.ArkGraphics2D'; 2606class DrawingRenderNode extends RenderNode { 2607 draw(context : DrawContext) { 2608 const canvas = context.canvas; 2609 const pen = new drawing.Pen(); 2610 pen.setStrokeWidth(5); 2611 pen.setColor({alpha: 255, red: 255, green: 0, blue: 0}); 2612 canvas.attachPen(pen); 2613 canvas.clipRect({left : 10, right : 500, top : 300, bottom : 900}, drawing.ClipOp.DIFFERENCE, true); 2614 canvas.detachPen(); 2615 } 2616} 2617``` 2618 2619### save<sup>12+</sup> 2620 2621save(): number 2622 2623用于保存当前画布的状态(画布矩阵)到栈顶。 2624 2625**系统能力**:SystemCapability.Graphics.Drawing 2626 2627**返回值:** 2628 2629| 类型 | 说明 | 2630| ------ | ------------------ | 2631| number | 画布状态个数,该参数为正整数。 | 2632 2633**示例:** 2634 2635```ts 2636import { RenderNode } from '@kit.ArkUI'; 2637import { common2D, drawing } from '@kit.ArkGraphics2D'; 2638class DrawingRenderNode extends RenderNode { 2639 draw(context : DrawContext) { 2640 const canvas = context.canvas; 2641 let rect: common2D.Rect = {left: 10, right: 200, top: 100, bottom: 300}; 2642 canvas.drawRect(rect); 2643 let saveCount = canvas.save(); 2644 } 2645} 2646``` 2647 2648### saveLayer<sup>12+</sup> 2649 2650saveLayer(rect?: common2D.Rect | null, brush?: Brush | null): number 2651 2652保存当前画布的矩阵和裁剪区域,并为后续绘制分配位图。调用恢复接口[restore](#restore12)将会舍弃对矩阵和裁剪区域做的更改,并绘制位图。 2653 2654**系统能力**:SystemCapability.Graphics.Drawing 2655 2656**参数:** 2657 2658| 参数名 | 类型 | 必填 | 说明 | 2659| ---- | ------ | ---- | ----------------- | 2660| rect | [common2D.Rect](js-apis-graphics-common2D.md#rect)\|null | 否 | 矩形对象,用于限制图层大小,默认为当前画布大小。 | 2661| brush | [Brush](#brush)\|null | 否 | 画刷对象,绘制位图时会应用画刷对象的透明度,颜色滤波器效果和混合模式,默认不设置额外效果。 | 2662 2663**返回值:** 2664 2665| 类型 | 说明 | 2666| ------ | ------------------ | 2667| number | 返回调用前保存的画布状态数,该参数为正整数。 | 2668 2669**错误码:** 2670 2671以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 2672 2673| 错误码ID | 错误信息 | 2674| ------- | --------------------------------------------| 2675| 401 | Parameter error. Possible causes: Mandatory parameters are left unspecified. | 2676 2677**示例:** 2678 2679```ts 2680import { RenderNode } from '@kit.ArkUI'; 2681import { common2D, drawing } from '@kit.ArkGraphics2D'; 2682class DrawingRenderNode extends RenderNode { 2683 draw(context : DrawContext) { 2684 const canvas = context.canvas; 2685 canvas.saveLayer(null, null); 2686 const brushRect = new drawing.Brush(); 2687 const colorRect: common2D.Color = {alpha: 255, red: 255, green: 255, blue: 0}; 2688 brushRect.setColor(colorRect); 2689 canvas.attachBrush(brushRect); 2690 const rect: common2D.Rect = {left:100, top:100, right:500, bottom:500}; 2691 canvas.drawRect(rect); 2692 2693 const brush = new drawing.Brush(); 2694 brush.setBlendMode(drawing.BlendMode.DST_OUT); 2695 canvas.saveLayer(rect, brush); 2696 2697 const brushCircle = new drawing.Brush(); 2698 const colorCircle: common2D.Color = {alpha: 255, red: 0, green: 0, blue: 255}; 2699 brushCircle.setColor(colorCircle); 2700 canvas.attachBrush(brushCircle); 2701 canvas.drawCircle(500, 500, 200); 2702 canvas.restore(); 2703 canvas.restore(); 2704 canvas.detachBrush(); 2705 } 2706} 2707``` 2708 2709### scale<sup>12+</sup> 2710 2711scale(sx: number, sy: number): void 2712 2713用于画布缩放。 2714 2715**系统能力**:SystemCapability.Graphics.Drawing 2716 2717**参数:** 2718 2719| 参数名 | 类型 | 必填 | 说明 | 2720| ---- | ------ | ---- | ----------------- | 2721| sx | number | 是 | x轴方向的缩放比例,该参数为浮点数。 | 2722| sy | number | 是 | y轴方向的缩放比例,该参数为浮点数。 | 2723 2724**错误码:** 2725 2726以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 2727 2728| 错误码ID | 错误信息 | 2729| ------- | --------------------------------------------| 2730| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. | 2731 2732**示例:** 2733 2734```ts 2735import { RenderNode } from '@kit.ArkUI'; 2736import { common2D, drawing } from '@kit.ArkGraphics2D'; 2737class DrawingRenderNode extends RenderNode { 2738 draw(context : DrawContext) { 2739 const canvas = context.canvas; 2740 const pen = new drawing.Pen(); 2741 pen.setStrokeWidth(5); 2742 pen.setColor({alpha: 255, red: 255, green: 0, blue: 0}); 2743 canvas.attachPen(pen); 2744 canvas.scale(2, 0.5); 2745 canvas.drawRect({left : 10, right : 500, top : 300, bottom : 900}); 2746 canvas.detachPen(); 2747 } 2748} 2749``` 2750 2751### skew<sup>12+</sup> 2752 2753skew(sx: number, sy: number) : void 2754 2755用于画布倾斜变换,包括水平轴和垂直轴上的偏移。 2756 2757**系统能力**:SystemCapability.Graphics.Drawing 2758 2759**参数:** 2760 2761| 参数名 | 类型 | 必填 | 说明 | 2762| ---- | ------ | ---- | ----------------- | 2763| sx | number | 是 | x轴上的倾斜量,该参数为浮点数。 | 2764| sy | number | 是 | y轴上的倾斜量,该参数为浮点数。 | 2765 2766**错误码:** 2767 2768以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 2769 2770| 错误码ID | 错误信息 | 2771| ------- | --------------------------------------------| 2772| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. | 2773 2774**示例:** 2775 2776```ts 2777import { RenderNode } from '@kit.ArkUI'; 2778import { common2D, drawing } from '@kit.ArkGraphics2D'; 2779class DrawingRenderNode extends RenderNode { 2780 draw(context : DrawContext) { 2781 const canvas = context.canvas; 2782 const pen = new drawing.Pen(); 2783 pen.setStrokeWidth(5); 2784 pen.setColor({alpha: 255, red: 255, green: 0, blue: 0}); 2785 canvas.attachPen(pen); 2786 canvas.skew(0.1, 0.1); 2787 canvas.drawRect({left : 10, right : 500, top : 300, bottom : 900}); 2788 canvas.detachPen(); 2789 } 2790} 2791``` 2792 2793### rotate<sup>12+</sup> 2794 2795rotate(degrees: number, sx: number, sy: number) : void 2796 2797用于画布旋转一定的角度。 2798 2799**系统能力**:SystemCapability.Graphics.Drawing 2800 2801**参数:** 2802 2803| 参数名 | 类型 | 必填 | 说明 | 2804| ---- | ------ | ------ | ------------------------ | 2805| degrees | number | 是 | 旋转角度,单位为度,该参数为浮点数,正数为顺时针旋转,负数为逆时针旋转。 | 2806| sx | number | 是 | 旋转中心的横坐标,该参数为浮点数。 | 2807| sy | number | 是 | 旋转中心的纵坐标,该参数为浮点数。 | 2808 2809**错误码:** 2810 2811以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 2812 2813| 错误码ID | 错误信息 | 2814| ------- | --------------------------------------------| 2815| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. | 2816 2817**示例:** 2818 2819```ts 2820import { RenderNode } from '@kit.ArkUI'; 2821import { common2D, drawing } from '@kit.ArkGraphics2D'; 2822class DrawingRenderNode extends RenderNode { 2823 draw(context : DrawContext) { 2824 const canvas = context.canvas; 2825 const pen = new drawing.Pen(); 2826 pen.setStrokeWidth(5); 2827 pen.setColor({alpha: 255, red: 255, green: 0, blue: 0}); 2828 canvas.attachPen(pen); 2829 canvas.rotate(30, 100, 100); 2830 canvas.drawRect({left : 10, right : 500, top : 300, bottom : 900}); 2831 canvas.detachPen(); 2832 } 2833} 2834``` 2835 2836### translate<sup>12+</sup> 2837 2838translate(dx: number, dy: number): void 2839 2840用于平移画布一段距离。 2841 2842**系统能力**:SystemCapability.Graphics.Drawing 2843 2844**参数:** 2845 2846| 参数名 | 类型 | 必填 | 说明 | 2847| ----- | ------ | ---- | ------------------- | 2848| dx | number | 是 | x轴方向的移动距离,该参数为浮点数。 | 2849| dy | number | 是 | y轴方向的移动距离,该参数为浮点数。 | 2850 2851**错误码:** 2852 2853以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 2854 2855| 错误码ID | 错误信息 | 2856| ------- | --------------------------------------------| 2857| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. | 2858 2859**示例:** 2860 2861```ts 2862import { RenderNode } from '@kit.ArkUI'; 2863import { common2D, drawing } from '@kit.ArkGraphics2D'; 2864class DrawingRenderNode extends RenderNode { 2865 draw(context : DrawContext) { 2866 const canvas = context.canvas; 2867 const pen = new drawing.Pen(); 2868 pen.setStrokeWidth(5); 2869 pen.setColor({alpha: 255, red: 255, green: 0, blue: 0}); 2870 canvas.attachPen(pen); 2871 canvas.translate(10, 10); 2872 canvas.drawRect({left : 10, right : 500, top : 300, bottom : 900}); 2873 canvas.detachPen(); 2874 } 2875} 2876``` 2877 2878### getSaveCount<sup>12+</sup> 2879 2880getSaveCount(): number 2881 2882用于获取栈中保存的画布状态(画布矩阵)的数量。 2883 2884**系统能力**:SystemCapability.Graphics.Drawing 2885 2886**返回值:** 2887 2888| 类型 | 说明 | 2889| ------ | ------------------------------------ | 2890| number | 已保存的画布状态的数量,该参数为正整数。 | 2891 2892**示例:** 2893 2894```ts 2895import { RenderNode } from '@kit.ArkUI'; 2896import { common2D, drawing } from '@kit.ArkGraphics2D'; 2897class DrawingRenderNode extends RenderNode { 2898 draw(context : DrawContext) { 2899 const canvas = context.canvas; 2900 const pen = new drawing.Pen(); 2901 pen.setStrokeWidth(5); 2902 pen.setColor({alpha: 255, red: 255, green: 0, blue: 0}); 2903 canvas.attachPen(pen); 2904 canvas.drawRect({left: 10, right: 200, top: 100, bottom: 300}); 2905 canvas.save(); 2906 canvas.drawRect({left : 10, right : 500, top : 300, bottom : 900}); 2907 canvas.getSaveCount(); 2908 canvas.detachPen(); 2909 } 2910} 2911``` 2912 2913### restoreToCount<sup>12+</sup> 2914 2915restoreToCount(count: number): void 2916 2917用于恢复到指定数量的画布状态(画布矩阵)。 2918 2919**系统能力**:SystemCapability.Graphics.Drawing 2920 2921**参数:** 2922 2923| 参数名 | 类型 | 必填 | 说明 | 2924| ----- | ------ | ---- | ----------------------------- | 2925| count | number | 是 | 要恢复的画布状态深度,该参数为整数。小于等于1时,恢复为初始状态;大于已保存的画布状态数量时,不执行任何操作。 | 2926 2927**错误码:** 2928 2929以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 2930 2931| 错误码ID | 错误信息 | 2932| ------- | --------------------------------------------| 2933| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. | 2934 2935**示例:** 2936 2937```ts 2938import { RenderNode } from '@kit.ArkUI'; 2939import { common2D, drawing } from '@kit.ArkGraphics2D'; 2940class DrawingRenderNode extends RenderNode { 2941 draw(context : DrawContext) { 2942 const canvas = context.canvas; 2943 const pen = new drawing.Pen(); 2944 pen.setStrokeWidth(5); 2945 pen.setColor({alpha: 255, red: 255, green: 0, blue: 0}); 2946 canvas.attachPen(pen); 2947 canvas.drawRect({left: 10, right: 200, top: 100, bottom: 300}); 2948 canvas.save(); 2949 canvas.drawRect({left: 10, right: 200, top: 100, bottom: 500}); 2950 canvas.save(); 2951 canvas.drawRect({left: 100, right: 300, top: 100, bottom: 500}); 2952 canvas.save(); 2953 canvas.restoreToCount(2); 2954 canvas.drawRect({left : 10, right : 500, top : 300, bottom : 900}); 2955 canvas.detachPen(); 2956 } 2957} 2958``` 2959 2960### restore<sup>12+</sup> 2961 2962restore(): void 2963 2964用于恢复保存在栈顶的画布状态(画布矩阵)。 2965 2966**系统能力**:SystemCapability.Graphics.Drawing 2967 2968**示例:** 2969 2970```ts 2971import { RenderNode } from '@kit.ArkUI'; 2972import { common2D, drawing } from '@kit.ArkGraphics2D'; 2973class DrawingRenderNode extends RenderNode { 2974 draw(context : DrawContext) { 2975 const canvas = context.canvas; 2976 const pen = new drawing.Pen(); 2977 pen.setStrokeWidth(5); 2978 pen.setColor({alpha: 255, red: 255, green: 0, blue: 0}); 2979 canvas.attachPen(pen); 2980 canvas.restore(); 2981 canvas.detachPen(); 2982 } 2983} 2984``` 2985 2986### concatMatrix<sup>12+</sup> 2987 2988concatMatrix(matrix: Matrix): void 2989 2990画布现有矩阵左乘以传入矩阵,不影响该接口之前的绘制操作。 2991 2992**系统能力**:SystemCapability.Graphics.Drawing 2993 2994**参数:** 2995 2996| 参数名 | 类型 | 必填 | 说明 | 2997| ------ | ----------------- | ---- | ----- | 2998| matrix | [Matrix](#matrix12) | 是 | 矩阵对象。 | 2999 3000**错误码:** 3001 3002以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 3003 3004| 错误码ID | 错误信息 | 3005| ------- | --------------------------------------------| 3006| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. | 3007 3008**示例:** 3009 3010```ts 3011import { RenderNode } from '@kit.ArkUI'; 3012import { drawing } from '@kit.ArkGraphics2D'; 3013class DrawingRenderNode extends RenderNode { 3014 draw(context : DrawContext) { 3015 const canvas = context.canvas; 3016 let matrix = new drawing.Matrix(); 3017 matrix.setMatrix([5, 0, 0, 0, 1, 2, 0, 0, 1]); 3018 canvas.concatMatrix(matrix); 3019 } 3020} 3021``` 3022 3023### setMatrix<sup>12+</sup> 3024 3025setMatrix(matrix: Matrix): void 3026 3027设置画布的矩阵。 3028 3029**系统能力**:SystemCapability.Graphics.Drawing 3030 3031**参数:** 3032 3033| 参数名 | 类型 | 必填 | 说明 | 3034| ------ | ----------------- | ---- | ----- | 3035| matrix | [Matrix](#matrix12) | 是 | 矩阵对象。 | 3036 3037**错误码:** 3038 3039以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 3040 3041| 错误码ID | 错误信息 | 3042| ------- | --------------------------------------------| 3043| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. | 3044 3045**示例:** 3046 3047```ts 3048import { RenderNode } from '@kit.ArkUI'; 3049import { drawing } from '@kit.ArkGraphics2D'; 3050class DrawingRenderNode extends RenderNode { 3051 draw(context : DrawContext) { 3052 const canvas = context.canvas; 3053 let matrix = new drawing.Matrix() 3054 matrix.setMatrix([5, 0, 0, 0, 1, 1, 0, 0, 1]); 3055 canvas.setMatrix(matrix); 3056 } 3057} 3058``` 3059 3060### isClipEmpty<sup>12+</sup> 3061 3062isClipEmpty(): boolean 3063 3064用于判断裁剪后可绘制区域是否为空。 3065 3066**系统能力**:SystemCapability.Graphics.Drawing 3067 3068**返回值:** 3069 3070| 类型 | 说明 | 3071| --------------------- | -------------- | 3072| boolean | 返回画布的可绘制区域是否为空的结果,true表示为空,false表示不为空。 | 3073 3074**示例:** 3075 3076```ts 3077import { RenderNode } from '@kit.ArkUI'; 3078import { drawing } from '@kit.ArkGraphics2D'; 3079class DrawingRenderNode extends RenderNode { 3080 draw(context : DrawContext) { 3081 const canvas = context.canvas; 3082 if (canvas.isClipEmpty()) { 3083 console.info("canvas.isClipEmpty() returned true"); 3084 } else { 3085 console.info("canvas.isClipEmpty() returned false"); 3086 } 3087 } 3088} 3089``` 3090 3091### clipRegion<sup>12+</sup> 3092 3093clipRegion(region: Region, clipOp?: ClipOp): void 3094 3095在画布上裁剪一个区域。 3096 3097**系统能力**:SystemCapability.Graphics.Drawing 3098 3099**参数:** 3100 3101| 参数名 | 类型 | 必填 | 说明 | 3102| --------------- | ------- | ---- | ----------------------------------------------------------- | 3103| region | [Region](#region12) | 是 | 区域对象,表示裁剪范围。 | 3104| clipOp | [ClipOp](#clipop12) | 否 | 裁剪方式,默认为INTERSECT。 | 3105 3106**错误码:** 3107 3108以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 3109 3110| 错误码ID | 错误信息 | 3111| ------- | --------------------------------------------| 3112| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. | 3113 3114**示例:** 3115 3116```ts 3117import { RenderNode } from '@kit.ArkUI'; 3118import { drawing } from '@kit.ArkGraphics2D'; 3119class DrawingRenderNode extends RenderNode { 3120 draw(context : DrawContext) { 3121 const canvas = context.canvas; 3122 let region : drawing.Region = new drawing.Region(); 3123 region.setRect(0, 0, 500, 500); 3124 canvas.clipRegion(region); 3125 } 3126} 3127``` 3128 3129### clipRoundRect<sup>12+</sup> 3130 3131clipRoundRect(roundRect: RoundRect, clipOp?: ClipOp, doAntiAlias?: boolean): void 3132 3133在画布上裁剪一个圆角矩形。 3134 3135**系统能力**:SystemCapability.Graphics.Drawing 3136 3137**参数:** 3138 3139| 参数名 | 类型 | 必填 | 说明 | 3140| --------------- | ------- | ---- | ----------------------------------------------------------- | 3141| roundRect | [RoundRect](#roundrect12) | 是 | 圆角矩形对象,表示裁剪范围。 | 3142| clipOp | [ClipOp](#clipop12) | 否 | 裁剪方式,默认为INTERSECT。 | 3143| doAntiAlias | boolean | 否 | 表示是否使能抗锯齿。true表示使能,false表示不使能。默认为false。 | 3144 3145**错误码:** 3146 3147以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 3148 3149| 错误码ID | 错误信息 | 3150| ------- | --------------------------------------------| 3151| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. | 3152 3153**示例:** 3154 3155```ts 3156import { RenderNode } from '@kit.ArkUI'; 3157import { common2D, drawing } from '@kit.ArkGraphics2D'; 3158class DrawingRenderNode extends RenderNode { 3159 draw(context : DrawContext) { 3160 const canvas = context.canvas; 3161 let rect: common2D.Rect = { left: 10, top: 100, right: 200, bottom: 300 }; 3162 let roundRect = new drawing.RoundRect(rect, 10, 10); 3163 canvas.clipRoundRect(roundRect); 3164 } 3165} 3166``` 3167 3168### resetMatrix<sup>12+</sup> 3169 3170resetMatrix(): void 3171 3172重置当前画布的矩阵为单位矩阵。 3173 3174**系统能力**:SystemCapability.Graphics.Drawing 3175 3176**示例:** 3177 3178```ts 3179import { RenderNode } from '@kit.ArkUI'; 3180import { drawing } from '@kit.ArkGraphics2D'; 3181class DrawingRenderNode extends RenderNode { 3182 draw(context : DrawContext) { 3183 const canvas = context.canvas; 3184 canvas.scale(4, 6); 3185 canvas.resetMatrix(); 3186 } 3187} 3188``` 3189 3190## ImageFilter<sup>12+</sup> 3191 3192图像滤波器。 3193 3194### createBlurImageFilter<sup>12+</sup> 3195 3196static createBlurImageFilter(sigmaX: number, sigmaY: number, tileMode: TileMode, imageFilter?: ImageFilter | null ): ImageFilter 3197 3198创建具有模糊效果的图像滤波器。 3199 3200**系统能力**:SystemCapability.Graphics.Drawing 3201 3202**参数:** 3203 3204| 参数名 | 类型 | 必填 | 说明 | 3205| --------------- | ------- | ---- | ----------------------------------------------------------- | 3206| sigmaX | number | 是 | 表示沿x轴方向上高斯模糊的标准差,必须大于0,该参数为浮点数。 | 3207| sigmaY | number | 是 | 表示沿y轴方向上高斯模糊的标准差,必须大于0,该参数为浮点数。 | 3208| tileMode | [TileMode](#tilemode12)| 是 | 表示在边缘处应用的平铺模式。 | 3209| imageFilter | [ImageFilter](#imagefilter12) \| null | 否 | 表示要和当前图像滤波器叠加的输入滤波器,默认为null,表示直接将当前图像滤波器作用于原始图像。 | 3210 3211**返回值:** 3212 3213| 类型 | 说明 | 3214| --------------------- | -------------- | 3215| [ImageFilter](#imagefilter12) | 返回创建的图像滤波器。 | 3216 3217**错误码:** 3218 3219以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 3220 3221| 错误码ID | 错误信息 | 3222| ------- | --------------------------------------------| 3223| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types;3.Parameter verification failed. | 3224 3225**示例:** 3226 3227```ts 3228import { drawing } from '@kit.ArkGraphics2D'; 3229let imgFilter = drawing.ImageFilter.createBlurImageFilter(5, 10, drawing.TileMode.CLAMP); 3230``` 3231 3232### createFromColorFilter<sup>12+</sup> 3233 3234static createFromColorFilter(colorFilter: ColorFilter, imageFilter?: ImageFilter | null): ImageFilter 3235 3236创建一个将颜色滤波器应用于传入的图像滤波器的图像滤波器。 3237 3238**系统能力**:SystemCapability.Graphics.Drawing 3239 3240**参数:** 3241 3242| 参数名 | 类型 | 必填 | 说明 | 3243| --------------- | ------- | ---- | ----------------------------------------------------------- | 3244| colorFilter | [ColorFilter](#colorfilter) | 是 | 表示颜色滤波器。 | 3245| imageFilter | [ImageFilter](#imagefilter12) \| null | 否 | 表示要和当前图像滤波器叠加的输入滤波器,默认为null,表示直接将当前图像滤波器作用于原始图像。 | 3246 3247**返回值:** 3248 3249| 类型 | 说明 | 3250| --------------------- | -------------- | 3251| [ImageFilter](#imagefilter12) | 返回创建的图像滤波器。 | 3252 3253**错误码:** 3254 3255以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 3256 3257| 错误码ID | 错误信息 | 3258| ------- | --------------------------------------------| 3259| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. | 3260 3261**示例:** 3262 3263```ts 3264import { drawing } from '@kit.ArkGraphics2D'; 3265let imgFilter = drawing.ImageFilter.createBlurImageFilter(5, 10, drawing.TileMode.CLAMP); 3266let clolorfilter = drawing.ColorFilter.createSRGBGammaToLinear(); 3267let imgFilter1 = drawing.ImageFilter.createFromColorFilter(clolorfilter, imgFilter); 3268``` 3269 3270## TextBlobRunBuffer 3271 3272描述一行文字中具有相同属性的连续字形。 3273 3274**系统能力**:SystemCapability.Graphics.Drawing 3275 3276| 名称 | 类型 | 可读 | 可写 | 说明 | 3277| --------- | ------ | ---- | ---- | ------------------------- | 3278| glyph | number | 是 | 是 | 存储文字的索引,该参数为整数,传入浮点类型时向下取整。 | 3279| positionX | number | 是 | 是 | 文本的起点x轴坐标,该参数为浮点数。 | 3280| positionY | number | 是 | 是 | 文本的起点y轴坐标,该参数为浮点数。 | 3281 3282## TextEncoding 3283 3284文本的编码类型枚举。 3285 3286**系统能力**:SystemCapability.Graphics.Drawing 3287 3288| 名称 | 值 | 说明 | 3289| ---------------------- | ---- | ------------------------------ | 3290| TEXT_ENCODING_UTF8 | 0 | 使用1个字节表示UTF-8或ASCII。 | 3291| TEXT_ENCODING_UTF16 | 1 | 使用2个字节表示大部分unicode。 | 3292| TEXT_ENCODING_UTF32 | 2 | 使用4个字节表示全部unicode。 | 3293| TEXT_ENCODING_GLYPH_ID | 3 | 使用2个字节表示glyph index。 | 3294 3295## ClipOp<sup>12+</sup> 3296画布裁剪方式的枚举。 3297 3298 3299**系统能力**:SystemCapability.Graphics.Drawing 3300 3301| 名称 | 值 | 说明 | 示意图 | 3302| ------------------ | ---- | ---------------- | -------- | 3303| DIFFERENCE | 0 | 将指定区域裁剪(取差集)。 |  | 3304| INTERSECT | 1 | 将指定区域保留(取交集)。 |  | 3305 3306> **说明:** 3307> 3308> 示意图展示的是以INTERSECT方式裁剪一个矩形后,使用不同枚举值在此基础上裁剪一个圆形的结果,其中绿色区域为最终得到的裁剪区域。 3309 3310## FilterMode<sup>12+</sup> 3311 3312过滤模式枚举。 3313 3314**系统能力**:SystemCapability.Graphics.Drawing 3315 3316| 名称 | 值 | 说明 | 3317| ------------------- | ---- | ------- | 3318| FILTER_MODE_NEAREST | 0 | 邻近过滤模式。 | 3319| FILTER_MODE_LINEAR | 1 | 线性过滤模式。 | 3320 3321## PathDirection<sup>12+</sup> 3322 3323添加闭合轮廓方向的枚举。 3324 3325**系统能力**:SystemCapability.Graphics.Drawing 3326 3327| 名称 | 值 | 说明 | 3328| ------------------- | ---- | ------- | 3329| CLOCKWISE | 0 | 顺时针方向添加闭合轮廓。 | 3330| COUNTER_CLOCKWISE | 1 | 逆时针方向添加闭合轮廓。 | 3331 3332## PathFillType<sup>12+</sup> 3333 3334定义路径的填充类型枚举。 3335 3336**系统能力**:SystemCapability.Graphics.Drawing 3337 3338| 名称 | 值 | 说明 | 3339| ------------------- | ---- | ------- | 3340| WINDING | 0 | 绘制区域中的任意一点,向任意方向射出一条射线,对于射线和路径的所有交点,初始计数为0,遇到每个顺时针的交点(路径从射线的左边向右穿过),计数加1,遇到每个逆时针的交点(路径从射线的右边向左穿过),计数减1,若最终的计数结果不为0,则认为这个点在路径内部,需要被涂色;若计数为0则不被涂色。 | 3341| EVEN_ODD | 1 | 绘制区域中的任意一点,向任意方向射出一条射线,若这条射线和路径相交的次数是奇数,则这个点被认为在路径内部,需要被涂色;若是偶数则不被涂色。 | 3342| INVERSE_WINDING | 2 | WINDING涂色规则取反。 | 3343| INVERSE_EVEN_ODD | 3 | EVEN_ODD涂色规则取反。 | 3344 3345> **说明:** 3346>  3347> 如图所示圆环为路径,箭头指示路径的方向,p为区域内任意一点,蓝色线条为点p出发的射线,黑色箭头所指为对应填充规则下使用蓝色填充路径的结果。WINDING填充规则下,射线与路径的交点计数为2,不为0,点p被涂色;EVEN_ODD填充规则下,射线与路径的相交次数为2,是偶数,点p不被涂色。 3348 3349## PointMode<sup>12+</sup> 3350 3351绘制数组点的方式的枚举。 3352 3353**系统能力**:SystemCapability.Graphics.Drawing 3354 3355| 名称 | 值 | 说明 | 3356| ------------------ | ---- | ------------- | 3357| POINTS | 0 | 分别绘制每个点。 | 3358| LINES | 1 | 将每对点绘制为线段。 | 3359| POLYGON | 2 | 将点阵列绘制为开放多边形。 | 3360 3361## FontEdging<sup>12+</sup> 3362 3363字形边缘效果类型枚举。 3364 3365**系统能力**:SystemCapability.Graphics.Drawing 3366 3367| 名称 | 值 | 说明 | 3368| ------------------- | ---- | ------- | 3369| ALIAS | 0 | 无抗锯齿处理。 | 3370| ANTI_ALIAS | 1 | 使用抗锯齿来平滑字形边缘。 | 3371| SUBPIXEL_ANTI_ALIAS | 2 | 使用次像素级别的抗锯齿来平滑字形边缘,可以获得更加平滑的字形渲染效果。 | 3372 3373## FontHinting<sup>12+</sup> 3374 3375字形轮廓效果类型枚举。 3376 3377**系统能力**:SystemCapability.Graphics.Drawing 3378 3379| 名称 | 值 | 说明 | 3380| ------------------- | ---- | ------- | 3381| NONE | 0 | 不修改字形轮廓。 | 3382| SLIGHT | 1 | 最小限度修改字形轮廓以改善对比度。 | 3383| NORMAL | 2 | 修改字形轮廓以提高对比度。 | 3384| FULL | 3 | 修改字形轮廓以获得最大对比度。 | 3385 3386## TextBlob 3387 3388由一个或多个具有相同字体的字符组成的字块。 3389 3390### makeFromPosText<sup>12+</sup> 3391 3392static makeFromPosText(text: string, len: number, points: common2D.Point[], font: Font): TextBlob 3393 3394使用文本创建TextBlob对象,TextBlob对象中每个字形的坐标由points中对应的坐标信息决定。 3395 3396**系统能力**:SystemCapability.Graphics.Drawing 3397 3398**参数:** 3399 3400| 参数名 | 类型 | 必填 | 说明 | 3401| -------- | ----------------------------- | ---- | -------------------------------------- | 3402| text | string | 是 | 绘制字形的文本内容。 | 3403| len | number | 是 | 字形个数,由[countText](#counttext12)获取,该参数为整数。 | 3404| points |[common2D.Point](js-apis-graphics-common2D.md#point)[] | 是 |点数组,用于指定每个字形的坐标,长度必须为len。| 3405| font | [Font](#font) | 是 | 字型对象。 | 3406 3407**返回值:** 3408 3409| 类型 | 说明 | 3410| --------------------- | -------------- | 3411| [TextBlob](#textblob) | TextBlob对象。 | 3412 3413 3414**错误码:** 3415 3416以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 3417 3418| 错误码ID | 错误信息 | 3419| ------- | --------------------------------------------| 3420| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified;2. Incorrect parameter types. | 3421 3422**示例:** 3423 3424```ts 3425import { RenderNode } from '@kit.ArkUI'; 3426import { drawing,common2D} from '@kit.ArkGraphics2D'; 3427 3428class DrawingRenderNode extends RenderNode { 3429 draw(context : DrawContext) { 3430 const canvas = context.canvas; 3431 let text : string = 'makeFromPosText'; 3432 let font : drawing.Font = new drawing.Font(); 3433 font.setSize(100); 3434 let length = font.countText(text); 3435 let points : common2D.Point[] = []; 3436 for (let i = 0; i !== length; ++i) { 3437 points.push({ x: i * 35, y: i * 35 }); 3438 } 3439 let textblob : drawing.TextBlob =drawing.TextBlob.makeFromPosText(text, points.length, points, font); 3440 canvas.drawTextBlob(textblob, 100, 100); 3441 } 3442} 3443``` 3444 3445### uniqueID<sup>12+</sup> 3446 3447uniqueID(): number 3448 3449获取文本的标识符,该标识符是唯一的非零值。 3450 3451**系统能力**:SystemCapability.Graphics.Drawing 3452 3453**返回值:** 3454 3455| 类型 | 说明 | 3456| --------------------- | -------------- | 3457| number | 返回TextBlob对象的唯一标识符。 | 3458 3459**示例:** 3460 3461```ts 3462import {drawing} from "@kit.ArkGraphics2D" 3463let text : string = 'TextBlobUniqueId'; 3464let font : drawing.Font = new drawing.Font(); 3465font.setSize(100); 3466let textBlob = drawing.TextBlob.makeFromString(text, font, 0); 3467let id = textBlob.uniqueID(); 3468console.info("uniqueID---------------" +id); 3469``` 3470 3471### makeFromString 3472 3473static makeFromString(text: string, font: Font, encoding?: TextEncoding): TextBlob 3474 3475将string类型的值转化成TextBlob对象。 3476 3477**系统能力**:SystemCapability.Graphics.Drawing 3478 3479**参数:** 3480 3481| 参数名 | 类型 | 必填 | 说明 | 3482| -------- | ----------------------------- | ---- | -------------------------------------- | 3483| text | string | 是 | 绘制字形的文本内容。 | 3484| font | [Font](#font) | 是 | 字型对象。 | 3485| encoding | [TextEncoding](#textencoding) | 否 | 编码类型,默认值为TEXT_ENCODING_UTF8。当前只有TEXT_ENCODING_UTF8生效,其余编码类型也会被视为TEXT_ENCODING_UTF8。 | 3486 3487**返回值:** 3488 3489| 类型 | 说明 | 3490| --------------------- | -------------- | 3491| [TextBlob](#textblob) | TextBlob对象。 | 3492 3493**错误码:** 3494 3495以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 3496 3497| 错误码ID | 错误信息 | 3498| ------- | --------------------------------------------| 3499| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. | 3500 3501**示例:** 3502 3503```ts 3504import { RenderNode } from '@kit.ArkUI'; 3505import { drawing } from '@kit.ArkGraphics2D'; 3506class DrawingRenderNode extends RenderNode { 3507 draw(context : DrawContext) { 3508 const canvas = context.canvas; 3509 const brush = new drawing.Brush(); 3510 brush.setColor({alpha: 255, red: 255, green: 0, blue: 0}); 3511 const font = new drawing.Font(); 3512 font.setSize(20); 3513 const textBlob = drawing.TextBlob.makeFromString("drawing", font, drawing.TextEncoding.TEXT_ENCODING_UTF8); 3514 canvas.attachBrush(brush); 3515 canvas.drawTextBlob(textBlob, 20, 20); 3516 canvas.detachBrush(); 3517 } 3518} 3519``` 3520 3521### makeFromRunBuffer 3522 3523static makeFromRunBuffer(pos: Array\<TextBlobRunBuffer>, font: Font, bounds?: common2D.Rect): TextBlob 3524 3525基于RunBuffer信息创建一个Textblob对象。 3526 3527**系统能力**:SystemCapability.Graphics.Drawing 3528 3529**参数:** 3530 3531| 参数名 | 类型 | 必填 | 说明 | 3532| ------ | -------------------------------------------------- | ---- | ------------------------------ | 3533| pos | Array\<[TextBlobRunBuffer](#textblobrunbuffer)> | 是 | TextBlobRunBuffer数组。 | 3534| font | [Font](#font) | 是 | 字型对象。 | 3535| bounds | [common2D.Rect](js-apis-graphics-common2D.md#rect) | 否 | 可选,如果不设置,则无边界框。 | 3536 3537**返回值:** 3538 3539| 类型 | 说明 | 3540| --------------------- | -------------- | 3541| [TextBlob](#textblob) | TextBlob对象。 | 3542 3543**错误码:** 3544 3545以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 3546 3547| 错误码ID | 错误信息 | 3548| ------- | --------------------------------------------| 3549| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. | 3550 3551**示例:** 3552 3553```ts 3554import { RenderNode } from '@kit.ArkUI'; 3555import { common2D, drawing } from '@kit.ArkGraphics2D'; 3556class DrawingRenderNode extends RenderNode { 3557 draw(context : DrawContext) { 3558 const canvas = context.canvas; 3559 const font = new drawing.Font(); 3560 font.setSize(20); 3561 let runBuffer : Array<drawing.TextBlobRunBuffer> = [ 3562 { glyph: 65, positionX: 0, positionY: 0 }, 3563 { glyph: 227, positionX: 14.9, positionY: 0 }, 3564 { glyph: 283, positionX: 25.84, positionY: 0 }, 3565 { glyph: 283, positionX: 30.62, positionY: 0 }, 3566 { glyph: 299, positionX: 35.4, positionY: 0} 3567 ]; 3568 const textBlob = drawing.TextBlob.makeFromRunBuffer(runBuffer, font, null); 3569 const brush = new drawing.Brush(); 3570 brush.setColor({alpha: 255, red: 255, green: 0, blue: 0}); 3571 canvas.attachBrush(brush); 3572 canvas.drawTextBlob(textBlob, 20, 20); 3573 canvas.detachBrush(); 3574 } 3575} 3576``` 3577 3578### bounds 3579 3580bounds(): common2D.Rect 3581 3582获取文字边界框的矩形区域。 3583 3584**系统能力**:SystemCapability.Graphics.Drawing 3585 3586**返回值:** 3587 3588| 类型 | 说明 | 3589| -------------------------------------------------- | ---------------------- | 3590| [common2D.Rect](js-apis-graphics-common2D.md#rect) | 文字边界框的矩形区域。 | 3591 3592**示例:** 3593 3594```ts 3595import { common2D, drawing } from '@kit.ArkGraphics2D'; 3596const font = new drawing.Font(); 3597font.setSize(20); 3598const textBlob = drawing.TextBlob.makeFromString("drawing", font, drawing.TextEncoding.TEXT_ENCODING_UTF8); 3599let bounds = textBlob.bounds(); 3600``` 3601 3602## Typeface 3603 3604字体,如宋体、楷体等。 3605 3606### getFamilyName 3607 3608getFamilyName(): string 3609 3610获取字体的系列名称。 3611 3612**系统能力**:SystemCapability.Graphics.Drawing 3613 3614**返回值:** 3615 3616| 类型 | 说明 | 3617| ------ | -------------------- | 3618| string | 返回字体的系列名称。 | 3619 3620**示例:** 3621 3622```ts 3623import { drawing } from '@kit.ArkGraphics2D'; 3624const font = new drawing.Font(); 3625let typeface = font.getTypeface(); 3626let familyName = typeface.getFamilyName(); 3627``` 3628 3629### makeFromFile<sup>12+</sup> 3630 3631static makeFromFile(filePath: string): Typeface 3632 3633从指定字体文件,构造字体。 3634 3635**系统能力**:SystemCapability.Graphics.Drawing 3636 3637**参数:** 3638 3639| 参数名 | 类型 | 必填 | 说明 | 3640| ----------- | ---------------------------------------- | ---- | ------------------- | 3641| filePath | string | 是 | 表示字体资源存放的路径。应用沙箱路径和真实物理路径的对应关系请参考[应用沙箱路径和真实物理路径的对应关系](../../file-management/app-sandbox-directory.md#应用沙箱路径和真实物理路径的对应关系)。 | 3642 3643**返回值:** 3644 3645| 类型 | 说明 | 3646| ------ | -------------------- | 3647| [Typeface](#typeface) | 返回Typeface对象。 | 3648 3649**错误码:** 3650 3651以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 3652 3653| 错误码ID | 错误信息 | 3654| ------- | --------------------------------------------| 3655| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. | 3656 3657**示例:** 3658 3659```ts 3660import { RenderNode } from '@kit.ArkUI'; 3661import { drawing } from '@kit.ArkGraphics2D'; 3662class TextRenderNode extends RenderNode { 3663 async draw(context: DrawContext) { 3664 const canvas = context.canvas; 3665 let font = new drawing.Font(); 3666 let str = "/system/fonts/HarmonyOS_Sans_Italic.ttf"; 3667 const mytypeface = drawing.Typeface.makeFromFile(str); 3668 font.setTypeface(mytypeface); 3669 const textBlob = drawing.TextBlob.makeFromString("Hello World", font, drawing.TextEncoding.TEXT_ENCODING_UTF8); 3670 canvas.drawTextBlob(textBlob, 60, 100); 3671 } 3672} 3673``` 3674 3675## Font 3676 3677描述字形绘制时所使用的属性,如大小、字体等。 3678 3679### isSubpixel<sup>12+</sup> 3680 3681isSubpixel(): boolean 3682 3683获取字型是否使用次像素渲染。 3684 3685**系统能力:** SystemCapability.Graphics.Drawing 3686 3687**返回值:** 3688 3689| 类型 | 说明 | 3690| ------ | -------------------- | 3691| boolean | 返回字型是否使用次像素渲染的结果,true表示使用,false表示不使用。 | 3692 3693**示例:** 3694 3695```ts 3696import {drawing} from '@kit.ArkGraphics2D'; 3697let font: drawing.Font = new drawing.Font(); 3698font.enableSubpixel(true) 3699console.info("values=" + font.isSubpixel()); 3700``` 3701 3702### isLinearMetrics<sup>12+</sup> 3703 3704isLinearMetrics(): boolean 3705 3706获取字型是否可以线性缩放。 3707 3708**系统能力:** SystemCapability.Graphics.Drawing 3709 3710**返回值:** 3711 3712| 类型 | 说明 | 3713| ------ | -------------------- | 3714| boolean | 返回字型是否可线性缩放的结果,true表示可线性缩放,false表示不可线性缩放。 | 3715 3716**示例:** 3717 3718```ts 3719import {drawing} from '@kit.ArkGraphics2D'; 3720let font: drawing.Font = new drawing.Font(); 3721font.enableLinearMetrics(true) 3722console.info("values=" + font.isLinearMetrics()); 3723``` 3724 3725### getSkewX<sup>12+</sup> 3726 3727getSkewX(): number 3728 3729获取字型在x轴方向上的倾斜度。 3730 3731**系统能力:** SystemCapability.Graphics.Drawing 3732 3733**返回值:** 3734 3735| 类型 | 说明 | 3736| ------ | -------------------- | 3737| number | 返回字型在x轴方向上的倾斜度。 | 3738 3739**示例:** 3740 3741```ts 3742import {drawing} from '@kit.ArkGraphics2D'; 3743let font: drawing.Font = new drawing.Font(); 3744font.setSkewX(-1) 3745console.info("values=" + font.getSkewX()); 3746``` 3747 3748### isEmbolden<sup>12+</sup> 3749 3750isEmbolden(): boolean 3751 3752获取字型是否设置了粗体效果。 3753 3754**系统能力:** SystemCapability.Graphics.Drawing 3755 3756**返回值:** 3757 3758| 类型 | 说明 | 3759| ------ | -------------------- | 3760| boolean | 返回字型是否设置粗体效果的结果,true表示设置了粗体效果,false表示未设置粗体效果。 | 3761 3762**示例:** 3763 3764```ts 3765import {drawing} from '@kit.ArkGraphics2D'; 3766let font: drawing.Font = new drawing.Font(); 3767font.enableEmbolden(true); 3768console.info("values=" + font.isEmbolden()); 3769``` 3770 3771### getScaleX<sup>12+</sup> 3772 3773getScaleX(): number 3774 3775获取字型在x轴方向上的缩放比例。 3776 3777**系统能力:** SystemCapability.Graphics.Drawing 3778 3779**返回值:** 3780 3781| 类型 | 说明 | 3782| ------ | -------------------- | 3783| number | 返回字型在x轴方向上的缩放比例。 | 3784 3785**示例:** 3786 3787```ts 3788import {drawing} from '@kit.ArkGraphics2D'; 3789let font: drawing.Font = new drawing.Font(); 3790font.setScaleX(2); 3791console.info("values=" + font.getScaleX()); 3792``` 3793 3794### getHinting<sup>12+</sup> 3795 3796getHinting(): FontHinting 3797 3798获取字型轮廓效果。 3799 3800**系统能力:** SystemCapability.Graphics.Drawing 3801 3802**返回值:** 3803 3804| 类型 | 说明 | 3805| ------ | -------------------- | 3806| [FontHinting](#fonthinting12) | 返回字型轮廓效果。 | 3807 3808**示例:** 3809 3810```ts 3811import {drawing} from '@kit.ArkGraphics2D'; 3812let font: drawing.Font = new drawing.Font(); 3813console.info("values=" + font.getHinting()); 3814``` 3815 3816### getEdging<sup>12+</sup> 3817 3818getEdging(): FontEdging 3819 3820获取字型边缘效果。 3821 3822**系统能力:** SystemCapability.Graphics.Drawing 3823 3824**返回值:** 3825 3826| 类型 | 说明 | 3827| ------ | -------------------- | 3828| [FontEdging](#fontedging12) | 返回字型边缘效果。 | 3829 3830**示例:** 3831 3832```ts 3833import {drawing} from '@kit.ArkGraphics2D'; 3834let font: drawing.Font = new drawing.Font(); 3835console.info("values=" + font.getEdging()); 3836``` 3837 3838### enableSubpixel 3839 3840enableSubpixel(isSubpixel: boolean): void 3841 3842使能字体亚像素级别的文字绘制,显示效果平滑。 3843 3844**系统能力**:SystemCapability.Graphics.Drawing 3845 3846**参数:** 3847 3848| 参数名 | 类型 | 必填 | 说明 | 3849| ---------- | ------- | ---- | ------------------------------------------------------------ | 3850| isSubpixel | boolean | 是 | 表示是否使能字体亚像素级别的文字绘制。true表示使能,false表示不使能。 | 3851 3852**错误码:** 3853 3854以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 3855 3856| 错误码ID | 错误信息 | 3857| ------- | --------------------------------------------| 3858| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. | 3859 3860**示例:** 3861 3862```ts 3863import { drawing } from '@kit.ArkGraphics2D'; 3864let font = new drawing.Font(); 3865font.enableSubpixel(true); 3866``` 3867 3868### enableEmbolden 3869 3870enableEmbolden(isEmbolden: boolean): void 3871 3872使能字体粗体。 3873 3874**系统能力**:SystemCapability.Graphics.Drawing 3875 3876**参数:** 3877 3878| 参数名 | 类型 | 必填 | 说明 | 3879| ---------- | ------- | ---- | ----------------------------------------------------- | 3880| isEmbolden | boolean | 是 | 表示是否使能字体粗体。true表示使能,false表示不使能。 | 3881 3882**错误码:** 3883 3884以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 3885 3886| 错误码ID | 错误信息 | 3887| ------- | --------------------------------------------| 3888| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. | 3889 3890**示例:** 3891 3892```ts 3893import { drawing } from '@kit.ArkGraphics2D'; 3894let font = new drawing.Font(); 3895font.enableEmbolden(true); 3896``` 3897 3898### enableLinearMetrics 3899 3900enableLinearMetrics(isLinearMetrics: boolean): void 3901 3902使能字形的线性缩放。 3903 3904**系统能力**:SystemCapability.Graphics.Drawing 3905 3906**参数:** 3907 3908| 参数名 | 类型 | 必填 | 说明 | 3909| --------------- | ------- | ---- | ----------------------------------------------------------- | 3910| isLinearMetrics | boolean | 是 | 表示是否使能字形的线性缩放。true表示使能,false表示不使能。 | 3911 3912**错误码:** 3913 3914以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 3915 3916| 错误码ID | 错误信息 | 3917| ------- | --------------------------------------------| 3918| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. | 3919 3920**示例:** 3921 3922```ts 3923import { drawing } from '@kit.ArkGraphics2D'; 3924let font = new drawing.Font(); 3925font.enableLinearMetrics(true); 3926``` 3927 3928### setSize 3929 3930setSize(textSize: number): void 3931 3932设置字体大小。 3933 3934**系统能力**:SystemCapability.Graphics.Drawing 3935 3936**参数:** 3937 3938| 参数名 | 类型 | 必填 | 说明 | 3939| -------- | ------ | ---- | ---------------- | 3940| textSize | number | 是 | 字体大小,该参数为浮点数,为负数时字体大小会被置为0。字体大小为0时,绘制的文字不会显示。| 3941 3942**错误码:** 3943 3944以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 3945 3946| 错误码ID | 错误信息 | 3947| ------- | --------------------------------------------| 3948| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types;3.Parameter verification failed. | 3949 3950**示例:** 3951 3952```ts 3953import { drawing } from '@kit.ArkGraphics2D'; 3954let font = new drawing.Font(); 3955font.setSize(5); 3956``` 3957 3958### getSize 3959 3960getSize(): number 3961 3962获取字体大小。 3963 3964**系统能力**:SystemCapability.Graphics.Drawing 3965 3966**返回值:** 3967 3968| 类型 | 说明 | 3969| ------ | ---------------- | 3970| number | 字体大小,浮点数。 | 3971 3972**示例:** 3973 3974```ts 3975import { drawing } from '@kit.ArkGraphics2D'; 3976let font = new drawing.Font(); 3977font.setSize(5); 3978let fontSize = font.getSize(); 3979``` 3980 3981### setTypeface 3982 3983setTypeface(typeface: Typeface): void 3984 3985设置字体。 3986 3987**系统能力**:SystemCapability.Graphics.Drawing 3988 3989**参数:** 3990 3991| 参数名 | 类型 | 必填 | 说明 | 3992| -------- | --------------------- | ---- | ------ | 3993| typeface | [Typeface](#typeface) | 是 | 字体。 | 3994 3995**错误码:** 3996 3997以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 3998 3999| 错误码ID | 错误信息 | 4000| ------- | --------------------------------------------| 4001| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. | 4002 4003**示例:** 4004 4005```ts 4006import { drawing } from '@kit.ArkGraphics2D'; 4007let font = new drawing.Font(); 4008font.setTypeface(new drawing.Typeface()); 4009``` 4010 4011### getTypeface 4012 4013getTypeface(): Typeface 4014 4015获取字体。 4016 4017**系统能力**:SystemCapability.Graphics.Drawing 4018 4019**返回值:** 4020 4021| 类型 | 说明 | 4022| --------------------- | ------ | 4023| [Typeface](#typeface) | 字体。 | 4024 4025**示例:** 4026 4027```ts 4028import { drawing } from '@kit.ArkGraphics2D'; 4029let font = new drawing.Font(); 4030let typeface = font.getTypeface(); 4031``` 4032 4033### getMetrics 4034 4035getMetrics(): FontMetrics 4036 4037获取与字体关联的FontMetrics属性。 4038 4039**系统能力**:SystemCapability.Graphics.Drawing 4040 4041**返回值:** 4042 4043| 类型 | 说明 | 4044| --------------------------- | ----------------- | 4045| [FontMetrics](#fontmetrics) | FontMetrics属性。 | 4046 4047**示例:** 4048 4049```ts 4050import { drawing } from '@kit.ArkGraphics2D'; 4051let font = new drawing.Font(); 4052let metrics = font.getMetrics(); 4053``` 4054 4055### measureText 4056 4057measureText(text: string, encoding: TextEncoding): number 4058 4059测量文本的宽度。 4060 4061> **说明:** 4062> 4063> 此接口用于测量原始字符串的文本宽度,若想测量排版后的文本宽度,建议使用[measure.measureText](../apis-arkui/js-apis-measure.md#measuretextmeasuretext)替代。 4064 4065**系统能力**:SystemCapability.Graphics.Drawing 4066 4067**参数:** 4068 4069| 参数名 | 类型 | 必填 | 说明 | 4070| -------- | ----------------------------- | ---- | ---------- | 4071| text | string | 是 | 文本内容。 | 4072| encoding | [TextEncoding](#textencoding) | 是 | 编码格式。 | 4073 4074**返回值:** 4075 4076| 类型 | 说明 | 4077| ------ | ---------------- | 4078| number | 文本的宽度,浮点数。 | 4079 4080**错误码:** 4081 4082以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 4083 4084| 错误码ID | 错误信息 | 4085| ------- | --------------------------------------------| 4086| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. | 4087 4088**示例:** 4089 4090```ts 4091import { drawing } from '@kit.ArkGraphics2D'; 4092let font = new drawing.Font(); 4093font.measureText("drawing", drawing.TextEncoding.TEXT_ENCODING_UTF8); 4094``` 4095 4096### measureSingleCharacter<sup>12+</sup> 4097 4098measureSingleCharacter(text: string): number 4099 4100用于测量单个字符的宽度。当前字型中的字体不支持待测量字符时,退化到使用系统字体测量字符宽度。 4101 4102**系统能力**:SystemCapability.Graphics.Drawing 4103 4104**参数** 4105 4106| 参数名 | 类型 | 必填 | 说明 | 4107| ------ | ------------------- | ---- | ----------- | 4108| text | string | 是 | 待测量的单个字符,字符串的长度必须为1。 | 4109 4110**返回值:** 4111 4112| 类型 | 说明 | 4113| ------ | ---------------- | 4114| number | 字符的宽度,浮点数。 | 4115 4116**错误码:** 4117 4118以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 4119 4120| 错误码ID | 错误信息 | 4121| ------- | --------------------------------------------| 4122| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types;3.Parameter verification failed. | 4123 4124**示例** 4125 4126```ts 4127import { RenderNode } from '@kit.ArkUI'; 4128import { drawing } from '@kit.ArkGraphics2D'; 4129 4130class DrawingRenderNode extends RenderNode { 4131 draw(context : DrawContext) { 4132 const canvas = context.canvas; 4133 const font = new drawing.Font(); 4134 font.setSize(20); 4135 let width = font.measureSingleCharacter("你"); 4136 } 4137} 4138``` 4139 4140### setScaleX<sup>12+</sup> 4141 4142setScaleX(scaleX: number): void 4143 4144用于设置字形对象在x轴上的缩放比例。 4145 4146**系统能力**:SystemCapability.Graphics.Drawing 4147 4148**参数:** 4149 4150| 参数名 | 类型 | 必填 | 说明 | 4151| -------- | ----------------------------- | ---- | ---------- | 4152| scaleX | number | 是 | 文本在x轴上的缩放比例,该参数为浮点数。 | 4153 4154**错误码:** 4155 4156以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 4157 4158| 错误码ID | 错误信息 | 4159| ------- | --------------------------------------------| 4160| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. | 4161 4162**示例:** 4163 4164```ts 4165import { RenderNode } from '@kit.ArkUI'; 4166import { common2D, drawing } from '@kit.ArkGraphics2D'; 4167class DrawingRenderNode extends RenderNode { 4168 draw(context : DrawContext) { 4169 const canvas = context.canvas; 4170 const pen = new drawing.Pen(); 4171 pen.setStrokeWidth(5); 4172 pen.setColor({alpha: 255, red: 255, green: 0, blue: 0}); 4173 canvas.attachPen(pen); 4174 let font = new drawing.Font(); 4175 font.setSize(100); 4176 font.setScaleX(2); 4177 const textBlob = drawing.TextBlob.makeFromString("hello", font, drawing.TextEncoding.TEXT_ENCODING_UTF8); 4178 canvas.drawTextBlob(textBlob, 200, 200); 4179 } 4180} 4181``` 4182 4183### setSkewX<sup>12+</sup> 4184 4185setSkewX(skewX: number): void 4186 4187用于设置字形对象在x轴上的倾斜比例。 4188 4189**系统能力**:SystemCapability.Graphics.Drawing 4190 4191**参数:** 4192 4193| 参数名 | 类型 | 必填 | 说明 | 4194| -------- | ----------------------------- | ---- | ---------- | 4195| skewX | number | 是 | 文本在x轴上的倾斜比例,正数表示往左边倾斜,负数表示往右边倾斜,该参数为浮点数。 | 4196 4197**错误码:** 4198 4199以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 4200 4201| 错误码ID | 错误信息 | 4202| ------- | --------------------------------------------| 4203| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. | 4204 4205**示例:** 4206 4207```ts 4208import { RenderNode } from '@kit.ArkUI'; 4209import { common2D, drawing } from '@kit.ArkGraphics2D'; 4210class DrawingRenderNode extends RenderNode { 4211 draw(context : DrawContext) { 4212 const canvas = context.canvas; 4213 const pen = new drawing.Pen(); 4214 pen.setStrokeWidth(5); 4215 pen.setColor({alpha: 255, red: 255, green: 0, blue: 0}); 4216 canvas.attachPen(pen); 4217 let font = new drawing.Font(); 4218 font.setSize(100); 4219 font.setSkewX(1); 4220 const textBlob = drawing.TextBlob.makeFromString("hello", font, drawing.TextEncoding.TEXT_ENCODING_UTF8); 4221 canvas.drawTextBlob(textBlob, 200, 200); 4222 } 4223} 4224``` 4225 4226### setEdging<sup>12+</sup> 4227 4228setEdging(edging: FontEdging): void 4229 4230设置字形边缘效果。 4231 4232**系统能力**:SystemCapability.Graphics.Drawing 4233 4234**参数:** 4235 4236| 参数名 | 类型 | 必填 | 说明 | 4237| -------- | ----------------------------- | ---- | ---------- | 4238| edging | [FontEdging](#fontedging12) | 是 | 字形边缘效果。 | 4239 4240**错误码:** 4241 4242以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 4243 4244| 错误码ID | 错误信息 | 4245| ------- | --------------------------------------------| 4246| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified;2. Incorrect parameter types; 3. Parameter verification failed. | 4247 4248**示例:** 4249 4250```ts 4251import { drawing } from '@kit.ArkGraphics2D'; 4252 4253let font = new drawing.Font(); 4254font.setEdging(drawing.FontEdging.SUBPIXEL_ANTI_ALIAS); 4255``` 4256 4257### setHinting<sup>12+</sup> 4258 4259setHinting(hinting: FontHinting): void 4260 4261设置字形轮廓效果。 4262 4263**系统能力**:SystemCapability.Graphics.Drawing 4264 4265**参数:** 4266 4267| 参数名 | 类型 | 必填 | 说明 | 4268| -------- | ----------------------------- | ---- | ---------- | 4269| hinting | [FontHinting](#fonthinting12) | 是 | 字形轮廓效果。 | 4270 4271**错误码:** 4272 4273以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 4274 4275| 错误码ID | 错误信息 | 4276| ------- | --------------------------------------------| 4277| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified;2. Incorrect parameter types; 3. Parameter verification failed. | 4278 4279**示例:** 4280 4281```ts 4282import { drawing } from '@kit.ArkGraphics2D'; 4283 4284let font = new drawing.Font(); 4285font.setHinting(drawing.FontHinting.FULL); 4286``` 4287 4288### countText<sup>12+</sup> 4289 4290countText(text: string): number 4291 4292获取文本所表示的字符数量。 4293 4294**系统能力**:SystemCapability.Graphics.Drawing 4295 4296**参数:** 4297 4298| 参数名 | 类型 | 必填 | 说明 | 4299| -------- | ----------------------------- | ---- | ---------- | 4300| text | string | 是 | 文本内容。 | 4301 4302**返回值:** 4303 4304| 类型 | 说明 | 4305| ------ | ---------------- | 4306| number | 返回文本所表示的字符数量,整数。 | 4307 4308**错误码:** 4309 4310以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 4311 4312| 错误码ID | 错误信息 | 4313| ------- | --------------------------------------------| 4314| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. | 4315 4316**示例:** 4317 4318```ts 4319import { drawing } from '@kit.ArkGraphics2D'; 4320 4321let font = new drawing.Font(); 4322let resultNumber: number = font.countText('ABCDE'); 4323console.info("count text number: " + resultNumber); 4324``` 4325 4326### setBaselineSnap<sup>12+</sup> 4327 4328setBaselineSnap(isBaselineSnap: boolean): void 4329 4330当前画布矩阵轴对齐时,设置字形基线是否与像素对齐。 4331 4332**系统能力**:SystemCapability.Graphics.Drawing 4333 4334**参数:** 4335 4336| 参数名 | 类型 | 必填 | 说明 | 4337| --------------- | ------- | ---- | ---------------------------------------- | 4338| isBaselineSnap | boolean | 是 | 指示字形基线是否和像素对齐,true表示对齐,false表示不对齐。 | 4339 4340**错误码:** 4341 4342以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 4343 4344| 错误码ID | 错误信息 | 4345| ------- | --------------------------------------------| 4346| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. | 4347 4348**示例:** 4349 4350```ts 4351import { drawing } from '@kit.ArkGraphics2D'; 4352 4353let font : drawing.Font = new drawing.Font(); 4354font.setBaselineSnap(true); 4355console.info("drawing font isBaselineSnap: " + font.isBaselineSnap()); 4356``` 4357 4358### isBaselineSnap()<sup>12+</sup> 4359 4360isBaselineSnap(): boolean 4361 4362当前画布矩阵轴对齐时,获取字形基线是否与像素对齐的结果。 4363 4364**系统能力**:SystemCapability.Graphics.Drawing 4365 4366**返回值:** 4367 4368| 类型 | 说明 | 4369| ------ | ---------------- | 4370| boolean | 返回字形基线是否与像素对齐,true为对齐,false为没有对齐。 | 4371 4372**示例:** 4373 4374```ts 4375import { drawing } from '@kit.ArkGraphics2D'; 4376 4377let font : drawing.Font = new drawing.Font(); 4378font.setTypeface(new drawing.Typeface()); 4379font.setBaselineSnap(true); 4380console.info("drawing font isBaselineSnap: " + font.isBaselineSnap()); 4381``` 4382 4383### setEmbeddedBitmaps<sup>12+</sup> 4384 4385setEmbeddedBitmaps(isEmbeddedBitmaps: boolean): void 4386 4387设置字形是否转换成位图处理。 4388 4389**系统能力**:SystemCapability.Graphics.Drawing 4390 4391**参数:** 4392 4393| 参数名 | 类型 | 必填 | 说明 | 4394| -------- | ------ | ---- | ---------------- | 4395| isEmbeddedBitmaps | boolean | 是 | 设置字形是否转换成位图处理,true表示转换成位图处理,false表示不转换成位图处理。 | 4396 4397**错误码:** 4398 4399以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 4400 4401| 错误码ID | 错误信息 | 4402| ------- | --------------------------------------------| 4403| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. | 4404 4405**示例:** 4406 4407```ts 4408import { drawing } from '@kit.ArkGraphics2D'; 4409 4410let font : drawing.Font = new drawing.Font(); 4411font.setTypeface(new drawing.Typeface()); 4412font.setEmbeddedBitmaps(false); 4413console.info("draw isEmbeddedBitmaps: " + font.isEmbeddedBitmaps()); 4414``` 4415 4416### isEmbeddedBitmaps()<sup>12+</sup> 4417 4418isEmbeddedBitmaps(): boolean 4419 4420获取字形是否转换成位图处理的结果。 4421 4422**系统能力**:SystemCapability.Graphics.Drawing 4423 4424**返回值:** 4425 4426| 类型 | 说明 | 4427| ------ | ---------------- | 4428| boolean | 返回字形是否转换成位图处理结果,true表示转换成位图处理,false表示不转换成位图处理。 | 4429 4430**示例:** 4431 4432```ts 4433import { drawing } from '@kit.ArkGraphics2D'; 4434 4435let font : drawing.Font = new drawing.Font(); 4436font.setTypeface(new drawing.Typeface()); 4437font.setEmbeddedBitmaps(true); 4438console.info("draw isEmbeddedBitmaps: " + font.isEmbeddedBitmaps()); 4439``` 4440 4441### setForceAutoHinting<sup>12+</sup> 4442 4443setForceAutoHinting(isForceAutoHinting: boolean): void 4444 4445设置是否自动调整字形轮廓。 4446 4447**系统能力**:SystemCapability.Graphics.Drawing 4448 4449**参数:** 4450 4451| 参数名 | 类型 | 必填 | 说明 | 4452| -------- | ------ | ---- | ---------------- | 4453| isForceAutoHinting | boolean | 是 | 是否自动调整字形轮廓,true为自动调整,false为不自动调整。 | 4454 4455**错误码:** 4456 4457以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 4458 4459| 错误码ID | 错误信息 | 4460| ------- | --------------------------------------------| 4461| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. | 4462 4463**示例:** 4464 4465```ts 4466import { drawing } from '@kit.ArkGraphics2D'; 4467 4468let font : drawing.Font = new drawing.Font(); 4469font.setTypeface(new drawing.Typeface()); 4470font.setForceAutoHinting(false); 4471console.info("drawing isForceAutoHinting: " + font.isForceAutoHinting()); 4472``` 4473 4474### isForceAutoHinting<sup>12+</sup> 4475 4476isForceAutoHinting(): boolean 4477 4478获取字形轮廓是否自动调整的结果。 4479 4480**系统能力**:SystemCapability.Graphics.Drawing 4481 4482**返回值:** 4483 4484| 类型 | 说明 | 4485| ------ | ---------------- | 4486| boolean | 返回字形轮廓是否自动调整,true为自动调整,false为不自动调整。 | 4487 4488**示例:** 4489 4490```ts 4491import { drawing } from '@kit.ArkGraphics2D'; 4492 4493let font : drawing.Font = new drawing.Font(); 4494font.setTypeface(new drawing.Typeface()); 4495font.setForceAutoHinting(false); 4496console.info("drawing isForceAutoHinting: " + font.isForceAutoHinting()); 4497``` 4498 4499### getWidths<sup>12+</sup> 4500 4501getWidths(glyphs: Array\<number>): Array\<number> 4502 4503获取字形数组中每个字形对应的宽度。 4504 4505**系统能力**:SystemCapability.Graphics.Drawing 4506 4507**参数:** 4508 4509| 参数名 | 类型 | 必填 | 说明 | 4510| -------- | --------------------- | ---- | ------ | 4511| glyphs | Array\<number> | 是 | 字形索引数组,可由[textToGlyphs](#texttoglyphs12)生成。 | 4512 4513**返回值:** 4514 4515| 类型 | 说明 | 4516| ------ | ---------------- | 4517| Array\<number> | 返回得到的字形宽度数组。 | 4518 4519**错误码:** 4520 4521以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 4522 4523| 错误码ID | 错误信息 | 4524| ------- | --------------------------------------------| 4525| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. | 4526 4527**示例:** 4528 4529```ts 4530import { drawing } from '@kit.ArkGraphics2D'; 4531 4532let font: drawing.Font = new drawing.Font(); 4533let text: string = 'hello world'; 4534let glyphs: number[] = font.textToGlyphs(text); 4535let fontWidths: Array<number> = font.getWidths(glyphs); 4536for (let index = 0; index < fontWidths.length; index++) { 4537 console.info("get fontWidths[", index, "]:", fontWidths[index]); 4538} 4539``` 4540 4541### textToGlyphs<sup>12+</sup> 4542 4543textToGlyphs(text: string, glyphCount?: number): Array\<number> 4544 4545将文本转换为字形索引。 4546 4547**系统能力**:SystemCapability.Graphics.Drawing 4548 4549**参数:** 4550 4551| 参数名 | 类型 | 必填 | 说明 | 4552| -------- | ----------------------------- | ---- | ---------- | 4553| text | string | 是 | 文本字符串。 | 4554| glyphCount | number | 否 | 文本表示的字符数量,必须与[countText](#counttext12)获取的值相等,默认为text的字符数量,该参数为整数。 | 4555 4556**返回值:** 4557 4558| 类型 | 说明 | 4559| ------ | ---------------- | 4560| Array\<number> | 返回转换得到的字形索引数组。 | 4561 4562**错误码:** 4563 4564以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 4565 4566| 错误码ID | 错误信息 | 4567| ------- | --------------------------------------------| 4568| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. | 4569 4570**示例:** 4571 4572```ts 4573import { drawing } from '@kit.ArkGraphics2D'; 4574 4575let font : drawing.Font = new drawing.Font(); 4576let text : string = 'hello world'; 4577let glyphs : number[] = font.textToGlyphs(text); 4578console.info("drawing text toglyphs OnTestFunction num = " + glyphs.length ); 4579``` 4580 4581## FontMetricsFlags<sup>12+</sup> 4582 4583字体度量标志枚举,指示字体度量中的各字段数据是否有效。 4584 4585**系统能力**:SystemCapability.Graphics.Drawing 4586 4587| 名称 | 值 | 说明 | 4588| ----------------------------- | --------- | ------------------------------ | 4589| UNDERLINE_THICKNESS_VALID | 1 << 0 | 表示[FontMetrics](#fontmetrics)结构中的underlineThickness(下划线厚度)字有效。 | 4590| UNDERLINE_POSITION_VALID | 1 << 1 | 表示[FontMetrics](#fontmetrics)结构中的underlinePosition(下划线位置)字段有效。 | 4591| STRIKETHROUGH_THICKNESS_VALID | 1 << 2 | 表示[FontMetrics](#fontmetrics)结构中strikethroughThickness(删除线厚度)是有效的。| 4592| STRIKETHROUGH_POSITION_VALID | 1 << 3 | 表示[FontMetrics](#fontmetrics)结构中strikethroughPosition(删除线位置)字段有效。 | 4593| BOUNDS_INVALID | 1 << 4 | 表示[FontMetrics](#fontmetrics)结构中的边界度量值(如top, bottom, xMin, xMax)无效。 | 4594 4595## FontMetrics 4596 4597描述字形大小和布局的属性信息,同一种字体中的字符属性大致相同。 4598 4599**系统能力:** SystemCapability.Graphics.Drawing 4600 4601| 名称 | 类型 | 只读 | 可选 | 说明 | 4602| ------- | ------ | ---- | ---- | ------------------------------------------------------------ | 4603| flags<sup>12+</sup> | [FontMetricsFlags](#fontmetricsflags12) | 是 | 是 | 表明哪些字体度量标志有效。 | 4604| top | number | 是 | 否 | 文字最高处到基线之间的最大距离,浮点数。 | 4605| ascent | number | 是 | 否 | 文字最高处到基线之间的距离,浮点数。 | 4606| descent | number | 是 | 否 | 基线到文字最低处之间的距离,浮点数。 | 4607| bottom | number | 是 | 否 | 基线到文字最低处之间的最大距离,浮点数。 | 4608| leading | number | 是 | 否 | 行间距,从上一行文字descent到下一行文字ascent之间的距离,浮点数。 | 4609| avgCharWidth<sup>12+</sup> | number | 是 | 是 | 平均字符宽度。 | 4610| maxCharWidth<sup>12+</sup> | number | 是 | 是 | 最大字符宽度。 | 4611| xMin<sup>12+</sup> | number | 是 | 是 | 字体中任意字形边界框最左边沿到原点的水平距离,这个值往往小于零,意味着字形在水平方向上的最小边界。 | 4612| xMax<sup>12+</sup> | number | 是 | 是 | 字体中任意字形边界框最右边沿到原点的水平距离,此值多为正数,指示了字形在水平方向上的最大延伸范围。 | 4613| xHeight<sup>12+</sup> | number | 是 | 是 | 小写字母x的高度,通常为负值。 | 4614| capHeight<sup>12+</sup> | number | 是 | 是 | 大写字母的高度,通常为负值。 | 4615| underlineThickness<sup>12+</sup> | number | 是 | 是 | 下划线的厚度。 | 4616| underlinePosition<sup>12+</sup> | number | 是 | 是 | 文本基线到下划线顶部的垂直距离,通常是正数。 | 4617| strikethroughThickness<sup>12+</sup> | number | 是 | 是 | 文本删除线的厚度,即贯穿文本字符的水平线的宽度。 | 4618| strikethroughPosition<sup>12+</sup> | number | 是 | 是 | 文本基线到底部删除线的垂直距离,通常为负值。 | 4619 4620## ColorFilter 4621 4622颜色滤波器。 4623 4624### createBlendModeColorFilter 4625 4626createBlendModeColorFilter(color: common2D.Color, mode: BlendMode) : ColorFilter 4627 4628使用指定的颜色和混合模式创建颜色滤波器。 4629 4630**系统能力:** SystemCapability.Graphics.Drawing 4631 4632**参数:** 4633 4634| 参数名 | 类型 | 必填 | 说明 | 4635| ------ | ---------------------------------------------------- | ---- | ---------------- | 4636| color | [common2D.Color](js-apis-graphics-common2D.md#color) | 是 | ARGB格式的颜色,每个颜色通道是0到255之间的整数。 | 4637| mode | [BlendMode](#blendmode) | 是 | 颜色的混合模式。 | 4638 4639**返回值:** 4640 4641| 类型 | 说明 | 4642| --------------------------- | ------------------ | 4643| [ColorFilter](#colorfilter) | 返回一个颜色滤波器 | 4644 4645**错误码:** 4646 4647以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 4648 4649| 错误码ID | 错误信息 | 4650| ------- | --------------------------------------------| 4651| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types;3.Parameter verification failed. | 4652 4653**示例:** 4654 4655```ts 4656import { common2D, drawing } from '@kit.ArkGraphics2D'; 4657const color : common2D.Color = { alpha: 255, red: 255, green: 0, blue: 0 }; 4658let colorFilter = drawing.ColorFilter.createBlendModeColorFilter(color, drawing.BlendMode.SRC); 4659``` 4660 4661### createComposeColorFilter 4662 4663createComposeColorFilter(outer: ColorFilter, inner: ColorFilter) : ColorFilter 4664 4665创建一个先应用inner进行滤波,再应用outer进行滤波的组合颜色滤波器。 4666 4667**系统能力:** SystemCapability.Graphics.Drawing 4668 4669**参数:** 4670 4671| 参数名 | 类型 | 必填 | 说明 | 4672| ------ | --------------------------- | ---- | -------------------------------- | 4673| outer | [ColorFilter](#colorfilter) | 是 | 组合滤波器中后生效的颜色滤波器。 | 4674| inner | [ColorFilter](#colorfilter) | 是 | 组合滤波器中先生效的颜色滤波器。 | 4675 4676**返回值:** 4677 4678| 类型 | 说明 | 4679| --------------------------- | ------------------ | 4680| [ColorFilter](#colorfilter) | 返回一个颜色滤波器 | 4681 4682**错误码:** 4683 4684以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 4685 4686| 错误码ID | 错误信息 | 4687| ------- | --------------------------------------------| 4688| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. | 4689 4690**示例:** 4691 4692```ts 4693import { common2D, drawing } from '@kit.ArkGraphics2D'; 4694const color : common2D.Color = { alpha: 255, red: 255, green: 0, blue: 0 }; 4695let colorFilter1 = drawing.ColorFilter.createBlendModeColorFilter(color, drawing.BlendMode.SRC); 4696let colorFilter2 = drawing.ColorFilter.createBlendModeColorFilter(color, drawing.BlendMode.DST); 4697let colorFilter = drawing.ColorFilter.createComposeColorFilter(colorFilter1, colorFilter2); 4698``` 4699 4700### createLinearToSRGBGamma 4701 4702createLinearToSRGBGamma() : ColorFilter 4703 4704创建一个从线性颜色空间转换到SRGB颜色空间的颜色滤波器。 4705 4706**系统能力:** SystemCapability.Graphics.Drawing 4707 4708**返回值:** 4709 4710| 类型 | 说明 | 4711| --------------------------- | ------------------ | 4712| [ColorFilter](#colorfilter) | 返回一个颜色滤波器 | 4713 4714**示例:** 4715 4716```ts 4717import { drawing } from '@kit.ArkGraphics2D'; 4718let colorFilter = drawing.ColorFilter.createLinearToSRGBGamma(); 4719``` 4720 4721### createSRGBGammaToLinear 4722 4723createSRGBGammaToLinear() : ColorFilter 4724 4725创建一个从SRGB颜色空间转换到线性颜色空间的颜色滤波器。 4726 4727**系统能力:** SystemCapability.Graphics.Drawing 4728 4729**返回值:** 4730 4731| 类型 | 说明 | 4732| --------------------------- | ------------------ | 4733| [ColorFilter](#colorfilter) | 返回一个颜色滤波器 | 4734 4735**示例:** 4736 4737```ts 4738import { drawing } from '@kit.ArkGraphics2D'; 4739let colorFilter = drawing.ColorFilter.createSRGBGammaToLinear(); 4740``` 4741 4742### createLumaColorFilter 4743 4744createLumaColorFilter() : ColorFilter 4745 4746创建一个将亮度与透明度相乘的颜色滤波器。 4747 4748**系统能力:** SystemCapability.Graphics.Drawing 4749 4750**返回值:** 4751 4752| 类型 | 说明 | 4753| --------------------------- | ------------------ | 4754| [ColorFilter](#colorfilter) | 返回一个颜色滤波器 | 4755 4756**示例:** 4757 4758```ts 4759import { drawing } from '@kit.ArkGraphics2D'; 4760let colorFilter = drawing.ColorFilter.createLumaColorFilter(); 4761``` 4762 4763### createMatrixColorFilter<sup>12+</sup> 4764 4765static createMatrixColorFilter(matrix: Array\<number>): ColorFilter 4766 4767创建颜色滤波器,通过4x5颜色矩阵变换颜色。 4768 4769**系统能力:** SystemCapability.Graphics.Drawing 4770 4771**参数:** 4772 4773| 参数名 | 类型 | 必填 | 说明 | 4774| -------- | -------------------------------------------- | ---- | ------------------------------- | 4775| matrix | Array\<number> | 是 | 长度为20的数组,表示用于颜色变换的4*5矩阵。 | 4776 4777**返回值:** 4778 4779| 类型 | 说明 | 4780| --------------------------- | ------------------ | 4781| [ColorFilter](#colorfilter) | 返回一个颜色滤波器。 | 4782 4783**错误码:** 4784 4785以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 4786 4787| 错误码ID | 错误信息 | 4788| ------- | --------------------------------------------| 4789| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types;3.Parameter verification failed. | 4790 4791**示例:** 4792 4793```ts 4794import { drawing } from '@kit.ArkGraphics2D'; 4795let matrix: Array<number> = [ 4796 1, 0, 0, 0, 0, 4797 0, 1, 0, 0, 0, 4798 0, 0, 100, 0, 0, 4799 0, 0, 0, 1, 0 4800]; 4801let colorFilter = drawing.ColorFilter.createMatrixColorFilter(matrix); 4802``` 4803 4804## JoinStyle<sup>12+</sup> 4805 4806定义线条转角样式的枚举,即画笔在绘制折线段时,在折线转角处的样式。 4807 4808**系统能力:** SystemCapability.Graphics.Drawing 4809 4810| 名称 | 值 | 说明 | 示意图 | 4811| ----------- | ---- | ----------------------------------------------------------- | -------- | 4812| MITER_JOIN | 0 | 转角类型为尖角,如果折线角度比较小,则尖角会很长,需要使用限制值(miter limit)进行限制。 |  | 4813| ROUND_JOIN | 1 | 转角类型为圆头。 |  | 4814| BEVEL_JOIN | 2 | 转角类型为平头。 |  | 4815 4816## CapStyle<sup>12+</sup> 4817 4818定义线帽样式的枚举,即画笔在绘制线段时,在线段头尾端点的样式。 4819 4820**系统能力:** SystemCapability.Graphics.Drawing 4821 4822| 名称 | 值 | 说明 | 示意图 | 4823| ---------- | ---- | ----------------------------------------------------------- | -------- | 4824| FLAT_CAP | 0 | 没有线帽样式,线条头尾端点处横切。 |  | 4825| SQUARE_CAP | 1 | 线帽的样式为方框,线条的头尾端点处多出一个方框,方框宽度和线段一样宽,高度是线段宽度的一半。 |  | 4826| ROUND_CAP | 2 | 线帽的样式为圆弧,线条的头尾端点处多出一个半圆弧,半圆的直径与线段宽度一致。 |  | 4827 4828## BlurType<sup>12+</sup> 4829 4830定义蒙版滤镜模糊中操作类型的枚举。 4831 4832**系统能力:** SystemCapability.Graphics.Drawing 4833 4834| 名称 | 值 | 说明 | 示意图 | 4835| ------ | - | ------------------ | -------- | 4836| NORMAL | 0 | 内外模糊。 |  | 4837| SOLID | 1 | 内部实体,外部模糊。 |  | 4838| OUTER | 2 | 内部空白,外部模糊。 |  | 4839| INNER | 3 | 内部模糊,外部空白。 |  | 4840 4841## SamplingOptions<sup>12+</sup> 4842 4843采样选项对象。 4844 4845### constructor<sup>12+</sup> 4846 4847constructor() 4848 4849用于构造一个新的采样选项对象。 4850 4851**系统能力:** SystemCapability.Graphics.Drawing 4852 4853**示例:** 4854 4855```ts 4856import { RenderNode } from '@kit.ArkUI'; 4857import { common2D, drawing } from '@kit.ArkGraphics2D'; 4858class DrawingRenderNode extends RenderNode { 4859 draw(context : DrawContext) { 4860 const canvas = context.canvas; 4861 const pen = new drawing.Pen(); 4862 let samplingOptions = new drawing.SamplingOptions(); 4863 } 4864} 4865``` 4866 4867### constructor<sup>12+</sup> 4868 4869constructor(filterMode: FilterMode) 4870 4871用于构造一个新的采样选项对象。 4872 4873**系统能力:** SystemCapability.Graphics.Drawing 4874 4875**参数:** 4876 4877| 参数名 | 类型 | 必填 | 说明 | 4878| ---------- | --------------------- | ---- | ----------------------------------- | 4879| filterMode | [FilterMode](#filtermode12) | 是 | 过滤模式。 | 4880 4881**错误码:** 4882 4883以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 4884 4885| 错误码ID | 错误信息 | 4886| ------- | --------------------------------------------| 4887| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. | 4888 4889**示例:** 4890 4891```ts 4892import { RenderNode } from '@kit.ArkUI'; 4893import { common2D, drawing } from '@kit.ArkGraphics2D'; 4894class DrawingRenderNode extends RenderNode { 4895 draw(context : DrawContext) { 4896 const canvas = context.canvas; 4897 let samplingOptions = new drawing.SamplingOptions(drawing.FilterMode.FILTER_MODE_NEAREST); 4898 } 4899} 4900``` 4901 4902## Lattice<sup>12+</sup> 4903 4904矩形网格对象。该对象用于将图片按照矩形网格进行划分。 4905 4906### createImageLattice<sup>12+</sup> 4907 4908static createImageLattice(xDivs: Array\<number>, yDivs: Array\<number>, fXCount: number, fYCount: number, fBounds?: common2D.Rect | null, fRectTypes?: Array\<RectType> | null, fColors?: Array\<common2D.Color> | null): Lattice 4909 4910创建矩形网格对象。将图像划分为矩形网格,同时处于偶数列和偶数行上的网格是固定的,如果目标网格足够大,则这些固定网格以其原始大小进行绘制。如果目标网格太小,无法容纳这些固定网格,则所有固定网格都会按比例缩小以适应目标网格。其余网格将进行缩放,来适应剩余的空间。 4911 4912**系统能力:** SystemCapability.Graphics.Drawing 4913 4914**参数:** 4915 4916| 参数名 | 类型 | 必填 | 说明 | 4917| ------------ | ------------------------------------------------------------------ | ---- | --------------------------------------------------------------------------------- | 4918| xDivs | Array\<number> | 是 | 用于划分图像的X坐标值数组。该参数为整数。 | 4919| yDivs | Array\<number> | 是 | 用于划分图像的Y坐标值数组。该参数为整数。 | 4920| fXCount | number | 是 | X坐标值数组的大小。基于功能和性能的考虑,取值范围为[0, 5]。 | 4921| fYCount | number | 是 | Y坐标值数组的大小。基于功能和性能的考虑,取值范围为[0, 5]。 | 4922| fBounds | [common2D.Rect](js-apis-graphics-common2D.md#rect)\|null | 否 | 可选,要绘制的原始边界矩形,矩形参数须为整数,默认为原始图像矩形大小(若矩形参数为小数,会直接舍弃小数部分,转为整数)。 | 4923| fRectTypes | Array\<[RectType](#recttype12)>\|null | 否 | 可选,填充网格类型的数组,默认为空。如果设置,大小必须为(fXCount + 1) * (fYCount + 1)。 | 4924| fColors | Array\<[common2D.Color](js-apis-graphics-common2D.md#color)>\|null | 否 | 可选,填充网格的颜色数组,默认为空。如果设置,大小必须为(fXCount + 1) * (fYCount + 1)。 | 4925 4926**返回值:** 4927 4928| 类型 | 说明 | 4929| ------------------------- | ----------------------------------- | 4930| [Lattice](#lattice12) | 返回创建的矩形网格对象。 | 4931 4932**错误码:** 4933 4934以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 4935 4936| 错误码ID | 错误信息 | 4937| ------- | --------------------------------------------| 4938| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types;3.Parameter verification failed. | 4939 4940**示例:** 4941 4942```ts 4943import { RenderNode } from '@kit.ArkUI'; 4944import { drawing } from '@kit.ArkGraphics2D'; 4945class DrawingRenderNode extends RenderNode { 4946 draw(context : DrawContext) { 4947 let xDivs : Array<number> = [1, 2, 4]; 4948 let yDivs : Array<number> = [1, 2, 4]; 4949 let lattice = drawing.Lattice.createImageLattice(xDivs, yDivs, 3, 3); // 划分(3+1)*(3+1)的网格,下图蓝色填充矩形为固定网格 4950 } 4951} 4952``` 4953 4954 4955## RectType<sup>12+</sup> 4956 4957定义填充网格的矩形类型的枚举。仅在[Lattice](#lattice12)中使用。 4958 4959**系统能力:** SystemCapability.Graphics.Drawing 4960 4961| 名称 | 值 | 说明 | 4962| ------------ | ---- | --------------------------------------------------------------- | 4963| DEFAULT | 0 | 将图像绘制到矩形网格中。 | 4964| TRANSPARENT | 1 | 将矩形网格设置为透明的。 | 4965| FIXEDCOLOR | 2 | 将[Lattice](#lattice12)中fColors数组的颜色绘制到矩形网格中。 | 4966 4967## MaskFilter<sup>12+</sup> 4968 4969蒙版滤镜对象。 4970 4971### createBlurMaskFilter<sup>12+</sup> 4972 4973static createBlurMaskFilter(blurType: BlurType, sigma: number): MaskFilter 4974 4975用于创建具有模糊效果的蒙版滤镜。 4976 4977**系统能力:** SystemCapability.Graphics.Drawing 4978 4979**参数:** 4980 4981| 参数名 | 类型 | 必填 | 说明 | 4982| ---------- | --------------------- | ---- | ----------------------------------- | 4983| blurType | [BlurType](#blurtype12) | 是 | 模糊类型。 | 4984| sigma | number | 是 | 要应用的高斯模糊的标准偏差,必须为大于0的浮点数。 | 4985 4986**返回值:** 4987 4988| 类型 | 说明 | 4989| ------------------------- | ------------------ | 4990| [MaskFilter](#maskfilter12) | 返回创建的蒙版滤镜对象。 | 4991 4992**错误码:** 4993 4994以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 4995 4996| 错误码ID | 错误信息 | 4997| ------- | --------------------------------------------| 4998| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types;3.Parameter verification failed. | 4999 5000**示例:** 5001 5002```ts 5003import { RenderNode } from '@kit.ArkUI'; 5004import { common2D, drawing } from '@kit.ArkGraphics2D'; 5005class DrawingRenderNode extends RenderNode { 5006 draw(context : DrawContext) { 5007 const canvas = context.canvas; 5008 let maskFilter = drawing.MaskFilter.createBlurMaskFilter(drawing.BlurType.OUTER, 10); 5009 } 5010} 5011``` 5012 5013## PathEffect<sup>12+</sup> 5014 5015路径效果对象。 5016 5017### createDashPathEffect<sup>12+</sup> 5018 5019static createDashPathEffect(intervals: Array\<number>, phase: number): PathEffect 5020 5021用于创建将路径变为虚线的路径效果对象。 5022 5023**系统能力:** SystemCapability.Graphics.Drawing 5024 5025**参数:** 5026 5027| 参数名 | 类型 | 必填 | 说明 | 5028| ---------- | ------------- | ------- | -------------------------------------------------- | 5029| intervals | Array\<number> | 是 | 表示虚线的ON和OFF长度的数组,数组个数必须是偶数,且>=2,该参数为正整数。| 5030| phase | number | 是 | 绘制时的偏移量,该参数为浮点数。 | 5031 5032**返回值:** 5033 5034| 类型 | 说明 | 5035| ------------------------- | --------------------- | 5036| [PathEffect](#patheffect12) | 返回创建的路径效果对象。 | 5037 5038**错误码:** 5039 5040以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 5041 5042| 错误码ID | 错误信息 | 5043| ------- | --------------------------------------------| 5044| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types;3.Parameter verification failed. | 5045 5046**示例:** 5047 5048```ts 5049import { RenderNode } from '@kit.ArkUI'; 5050import { common2D, drawing } from '@kit.ArkGraphics2D'; 5051class DrawingRenderNode extends RenderNode { 5052 draw(context : DrawContext) { 5053 const canvas = context.canvas; 5054 let intervals = [10, 5]; 5055 let effect = drawing.PathEffect.createDashPathEffect(intervals, 5); 5056 } 5057} 5058``` 5059 5060### createCornerPathEffect<sup>12+</sup> 5061 5062static createCornerPathEffect(radius: number): PathEffect 5063 5064用于创建将路径的夹角变成指定半径的圆角的路径效果对象。 5065 5066**系统能力:** SystemCapability.Graphics.Drawing 5067 5068**参数:** 5069 5070| 参数名 | 类型 | 必填 | 说明 | 5071| ---------- | ------------- | ------- | -------------------------------------------------- | 5072| radius | number | 是 | 圆角的半径,必须大于0,该参数为浮点数。 | 5073 5074**返回值:** 5075 5076| 类型 | 说明 | 5077| ------------------------- | --------------------- | 5078| [PathEffect](#patheffect12) | 返回创建的路径效果对象。 | 5079 5080**错误码:** 5081 5082以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 5083 5084| 错误码ID | 错误信息 | 5085| ------- | --------------------------------------------| 5086| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types;3.Parameter verification failed. | 5087 5088**示例:** 5089 5090```ts 5091import { RenderNode } from '@kit.ArkUI'; 5092import { drawing } from '@kit.ArkGraphics2D'; 5093class DrawingRenderNode extends RenderNode { 5094 draw(context : DrawContext) { 5095 const canvas = context.canvas; 5096 let effect = drawing.PathEffect.createCornerPathEffect(30); 5097 } 5098} 5099``` 5100 5101## ShadowLayer<sup>12+</sup> 5102 5103阴影层对象。 5104 5105### create<sup>12+</sup> 5106 5107static create(blurRadius: number, x: number, y: number, color: common2D.Color): ShadowLayer 5108 5109用于创建一个阴影层对象。 5110 5111**系统能力:** SystemCapability.Graphics.Drawing 5112 5113**参数:** 5114 5115| 参数名 | 类型 | 必填 | 说明 | 5116| ---------- | -------- | ---- | ----------------------------------- | 5117| blurRadius | number | 是 | 阴影的半径,必须为大于零的浮点数。 | 5118| x | number | 是 | x轴上的偏移点,该参数为浮点数。 | 5119| y | number | 是 | Y轴上的偏移点,该参数为浮点数。 | 5120| color | [common2D.Color](js-apis-graphics-common2D.md#color) | 是 | ARGB格式的颜色,每个颜色通道是0到255之间的整数。 | 5121 5122**返回值:** 5123 5124| 类型 | 说明 | 5125| --------------------------- | -------------------- | 5126| [ShadowLayer](#shadowlayer12) | 返回创建的阴影层对象。 | 5127 5128**错误码:** 5129 5130以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 5131 5132| 错误码ID | 错误信息 | 5133| ------- | --------------------------------------------| 5134| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types;3.Parameter verification failed. | 5135 5136**示例:** 5137 5138```ts 5139import { RenderNode } from '@kit.ArkUI'; 5140import { common2D, drawing } from '@kit.ArkGraphics2D'; 5141class DrawingRenderNode extends RenderNode { 5142 draw(context : DrawContext) { 5143 const canvas = context.canvas; 5144 let color : common2D.Color = {alpha: 0xFF, red: 0x00, green: 0xFF, blue: 0x00}; 5145 let shadowLayer = drawing.ShadowLayer.create(3, -3, 3, color); 5146 } 5147} 5148``` 5149 5150## Pen 5151 5152画笔对象,描述所绘制图形形状的轮廓信息。 5153 5154### constructor<sup>12+</sup> 5155 5156constructor() 5157 5158构造一个新的画笔对象。 5159 5160**系统能力:** SystemCapability.Graphics.Drawing 5161 5162**示例:** 5163 5164```ts 5165import { drawing } from '@kit.ArkGraphics2D'; 5166 5167const pen = new drawing.Pen(); 5168``` 5169 5170### constructor<sup>12+</sup> 5171 5172constructor(pen: Pen) 5173 5174复制构造一个新的画笔对象。 5175 5176**系统能力:** SystemCapability.Graphics.Drawing 5177 5178**参数:** 5179 5180| 参数名 | 类型 | 必填 | 说明 | 5181| ------| ----------- | ---- | ---------------- | 5182| pen | [Pen](#pen) | 是 | 待复制的画笔对象。 | 5183 5184**错误码:** 5185 5186以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 5187 5188| 错误码ID | 错误信息 | 5189| ------- | --------------------------------------------| 5190| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. | 5191 5192**示例:** 5193 5194```ts 5195import { common2D, drawing } from '@kit.ArkGraphics2D'; 5196 5197const pen = new drawing.Pen(); 5198const penColor: common2D.Color = { alpha: 255, red: 0, green: 255, blue: 0 }; 5199pen.setColor(penColor); 5200pen.setStrokeWidth(10); 5201const newPen = new drawing.Pen(pen); 5202``` 5203 5204### setMiterLimit<sup>12+</sup> 5205 5206setMiterLimit(miter: number): void 5207 5208设置折线尖角长度与线宽的最大比值,当画笔绘制一条折线,并且[JoinStyle](#joinstyle12)为MITER_JOIN时,若尖角长度与线宽的比值大于限制值,则该折角使用BEVEL_JOIN绘制。 5209 5210**系统能力:** SystemCapability.Graphics.Drawing 5211 5212**参数:** 5213 5214| 参数名 | 类型 | 必填 | 说明 | 5215| ------ | ------ | ---- | ---------------- | 5216| miter | number | 是 | 折线尖角长度与线宽的最大比值,负数在绘制时会被视作4.0处理,非负数正常生效,该参数为浮点数。 | 5217 5218**错误码:** 5219 5220以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 5221 5222| 错误码ID | 错误信息 | 5223| ------- | --------------------------------------------| 5224| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. | 5225 5226**示例:** 5227 5228```ts 5229import { drawing } from '@kit.ArkGraphics2D'; 5230 5231const pen = new drawing.Pen(); 5232pen.setMiterLimit(5); 5233``` 5234 5235### getMiterLimit<sup>12+</sup> 5236 5237getMiterLimit(): number 5238 5239获取折线尖角的限制值。 5240 5241**系统能力:** SystemCapability.Graphics.Drawing 5242 5243**返回值:** 5244 5245| 类型 | 说明 | 5246| -------| -------------------- | 5247| number | 返回折线尖角长度与线宽的最大比值。 | 5248 5249**示例:** 5250 5251```ts 5252import { drawing } from '@kit.ArkGraphics2D'; 5253 5254const pen = new drawing.Pen(); 5255let miter = pen.getMiterLimit(); 5256``` 5257 5258### setImageFilter<sup>12+</sup> 5259 5260setImageFilter(filter: ImageFilter | null): void 5261 5262为画笔设置图像滤波器。 5263 5264**系统能力:** SystemCapability.Graphics.Drawing 5265 5266**参数:** 5267 5268| 参数名 | 类型 | 必填 | 说明 | 5269| ------ | ------ | ---- | ----------------------- | 5270| filter | [ImageFilter](#imagefilter12) \| null | 是 | 图像滤波器,为null表示清空画笔的图像滤波器效果。 | 5271 5272**错误码:** 5273 5274以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 5275 5276| 错误码ID | 错误信息 | 5277| ------- | --------------------------------------------| 5278| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified;2. Incorrect parameter types. | 5279 5280**示例:** 5281 5282```ts 5283import {drawing} from '@kit.ArkGraphics2D'; 5284let colorfilter = drawing.ColorFilter.createSRGBGammaToLinear(); 5285let imgFilter = drawing.ImageFilter.createFromColorFilter(colorfilter); 5286let pen = new drawing.Pen(); 5287pen.setImageFilter(imgFilter); 5288pen.setImageFilter(null); 5289``` 5290 5291### getColorFilter<sup>12+</sup> 5292 5293getColorFilter(): ColorFilter 5294 5295获取画笔的颜色滤波器。 5296 5297**系统能力:** SystemCapability.Graphics.Drawing 5298 5299**返回值:** 5300 5301| 类型 | 说明 | 5302| --------------------------- | ------------------ | 5303| [ColorFilter](#colorfilter) | 返回一个颜色滤波器。 | 5304 5305**示例:** 5306 5307```ts 5308import {drawing} from '@kit.ArkGraphics2D'; 5309let pen = new drawing.Pen(); 5310let colorfilter = drawing.ColorFilter.createLumaColorFilter(); 5311pen.setColorFilter(colorfilter); 5312let filter = pen.getColorFilter(); 5313``` 5314 5315### setColor 5316 5317setColor(color: common2D.Color) : void 5318 5319用于设置画笔的颜色。 5320 5321**系统能力:** SystemCapability.Graphics.Drawing 5322 5323**参数:** 5324 5325| 参数名 | 类型 | 必填 | 说明 | 5326| ------ | ---------------------------------------------------- | ---- | ---------------- | 5327| color | [common2D.Color](js-apis-graphics-common2D.md#color) | 是 | ARGB格式的颜色,每个颜色通道是0到255之间的整数。 | 5328 5329**错误码:** 5330 5331以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 5332 5333| 错误码ID | 错误信息 | 5334| ------- | --------------------------------------------| 5335| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types;3.Parameter verification failed. | 5336 5337**示例:** 5338 5339```ts 5340import { common2D, drawing } from '@kit.ArkGraphics2D'; 5341const color : common2D.Color = { alpha: 255, red: 255, green: 0, blue: 0 }; 5342const pen = new drawing.Pen(); 5343pen.setColor(color); 5344``` 5345 5346### setColor<sup>12+</sup> 5347 5348setColor(alpha: number, red: number, green: number, blue: number): void 5349 5350用于设置画笔的颜色。性能优于[setColor](#setcolor)接口,推荐使用本接口。 5351 5352**系统能力:** SystemCapability.Graphics.Drawing 5353 5354**参数:** 5355 5356| 参数名 | 类型 | 必填 | 说明 | 5357| ------ | ------ | ---- | -------------------------------------------------- | 5358| alpha | number | 是 | ARGB格式颜色的透明度通道值,该参数是0到255之间的整数,传入范围内的浮点数会向下取整。 | 5359| red | number | 是 | ARGB格式颜色的红色通道值,该参数是0到255之间的整数,传入范围内的浮点数会向下取整。 | 5360| green | number | 是 | ARGB格式颜色的绿色通道值,该参数是0到255之间的整数,传入范围内的浮点数会向下取整。 | 5361| blue | number | 是 | ARGB格式颜色的蓝色通道值,该参数是0到255之间的整数,传入范围内的浮点数会向下取整。 | 5362 5363**错误码:** 5364 5365以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 5366 5367| 错误码ID | 错误信息 | 5368| ------- | --------------------------------------------| 5369| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. | 5370 5371**示例:** 5372 5373```ts 5374import { drawing } from '@kit.ArkGraphics2D'; 5375const pen = new drawing.Pen(); 5376pen.setColor(255, 255, 0, 0); 5377``` 5378 5379### getColor<sup>12+</sup> 5380 5381getColor(): common2D.Color 5382 5383获取画笔的颜色。 5384 5385**系统能力:** SystemCapability.Graphics.Drawing 5386 5387**返回值:** 5388 5389| 类型 | 说明 | 5390| -------------- | -------------- | 5391| common2D.Color | 返回画笔的颜色。 | 5392 5393**示例:** 5394 5395```ts 5396import { common2D, drawing } from '@kit.ArkGraphics2D'; 5397 5398const color : common2D.Color = { alpha: 255, red: 255, green: 0, blue: 0 }; 5399const pen = new drawing.Pen(); 5400pen.setColor(color); 5401let colorGet = pen.getColor(); 5402``` 5403 5404### setStrokeWidth 5405 5406setStrokeWidth(width: number) : void 5407 5408用于设置画笔的线宽。0线宽被视作特殊的极细线宽,在绘制时始终会被绘制为1像素,不随画布的缩放而改变;负数线宽在实际绘制时会被视作0线宽。 5409 5410**系统能力:** SystemCapability.Graphics.Drawing 5411 5412**参数:** 5413 5414| 参数名 | 类型 | 必填 | 说明 | 5415| ------ | ------ | ---- | ---------------- | 5416| width | number | 是 | 表示线宽,该参数为浮点数。 | 5417 5418**错误码:** 5419 5420以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 5421 5422| 错误码ID | 错误信息 | 5423| ------- | --------------------------------------------| 5424| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. | 5425 5426**示例:** 5427 5428```ts 5429import { drawing } from '@kit.ArkGraphics2D'; 5430const pen = new drawing.Pen(); 5431pen.setStrokeWidth(5); 5432``` 5433 5434### getWidth<sup>12+</sup> 5435 5436getWidth(): number 5437 5438获取画笔的线宽属性,线宽描述了画笔绘制图形轮廓的宽度。 5439 5440**系统能力:** SystemCapability.Graphics.Drawing 5441 5442**返回值:** 5443 5444| 类型 | 说明 | 5445| ------ | -------------- | 5446| number | 返回画笔的线宽。 | 5447 5448**示例:** 5449 5450```ts 5451import { drawing } from '@kit.ArkGraphics2D'; 5452 5453const pen = new drawing.Pen(); 5454let width = pen.getWidth(); 5455``` 5456 5457### setAntiAlias 5458 5459setAntiAlias(aa: boolean) : void 5460 5461用于设置画笔是否开启抗锯齿。开启后,可以使得图形的边缘在显示时更平滑。 5462 5463**系统能力:** SystemCapability.Graphics.Drawing 5464 5465**参数:** 5466 5467| 参数名 | 类型 | 必填 | 说明 | 5468| ------ | ------- | ---- | ------------------------------------------------- | 5469| aa | boolean | 是 | 表示是否开启抗锯齿。true表示开启,false表示关闭。 | 5470 5471**错误码:** 5472 5473以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 5474 5475| 错误码ID | 错误信息 | 5476| ------- | --------------------------------------------| 5477| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. | 5478 5479**示例:** 5480 5481```ts 5482import { drawing } from '@kit.ArkGraphics2D'; 5483const pen = new drawing.Pen(); 5484pen.setAntiAlias(true); 5485``` 5486 5487### isAntiAlias<sup>12+</sup> 5488 5489isAntiAlias(): boolean 5490 5491获取画笔是否开启抗锯齿属性。 5492 5493**系统能力:** SystemCapability.Graphics.Drawing 5494 5495**返回值:** 5496 5497| 类型 | 说明 | 5498| ------- | ------------------------- | 5499| boolean | 返回画笔是否开启抗锯齿属性,true表示开启抗锯齿属性,false表示关闭抗锯齿属性。 | 5500 5501**示例:** 5502 5503```ts 5504import { drawing } from '@kit.ArkGraphics2D'; 5505 5506const pen = new drawing.Pen(); 5507let isAntiAlias = pen.isAntiAlias(); 5508``` 5509 5510### setAlpha 5511 5512setAlpha(alpha: number) : void 5513 5514用于设置画笔的透明度。 5515 5516**系统能力:** SystemCapability.Graphics.Drawing 5517 5518**参数:** 5519 5520| 参数名 | 类型 | 必填 | 说明 | 5521| ------ | ------ | ---- | ---------------------------------------- | 5522| alpha | number | 是 | 用于表示透明度的[0, 255]区间内的整数值,传入浮点类型时向下取整。 | 5523 5524**错误码:** 5525 5526以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 5527 5528| 错误码ID | 错误信息 | 5529| ------- | --------------------------------------------| 5530| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types;3.Parameter verification failed. | 5531 5532**示例:** 5533 5534```ts 5535import { drawing } from '@kit.ArkGraphics2D'; 5536const pen = new drawing.Pen(); 5537pen.setAlpha(128); 5538``` 5539 5540### getAlpha<sup>12+</sup> 5541 5542getAlpha(): number 5543 5544获取画笔的透明度。 5545 5546**系统能力:** SystemCapability.Graphics.Drawing 5547 5548**返回值:** 5549 5550| 类型 | 说明 | 5551| ------ | ---------------- | 5552| number | 返回画笔的透明度,该返回值为0到255之间的整数。 | 5553 5554**示例:** 5555 5556```ts 5557import { drawing } from '@kit.ArkGraphics2D'; 5558 5559const pen = new drawing.Pen(); 5560let alpha = pen.getAlpha(); 5561``` 5562 5563### setColorFilter 5564 5565setColorFilter(filter: ColorFilter) : void 5566 5567用于给画笔添加额外的颜色滤波器。 5568 5569**系统能力:** SystemCapability.Graphics.Drawing 5570 5571**参数:** 5572 5573| 参数名 | 类型 | 必填 | 说明 | 5574| ------ | --------------------------- | ---- | ------------ | 5575| filter | [ColorFilter](#colorfilter) | 是 | 颜色滤波器。为null时表示清空颜色滤波器。 | 5576 5577**错误码:** 5578 5579以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 5580 5581| 错误码ID | 错误信息 | 5582| ------- | --------------------------------------------| 5583| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. | 5584 5585**示例:** 5586 5587```ts 5588import { drawing } from '@kit.ArkGraphics2D'; 5589const pen = new drawing.Pen(); 5590let colorFilter = drawing.ColorFilter.createLinearToSRGBGamma(); 5591pen.setColorFilter(colorFilter); 5592``` 5593 5594### setMaskFilter<sup>12+</sup> 5595 5596setMaskFilter(filter: MaskFilter): void 5597 5598用于给画笔添加额外的蒙版滤镜。 5599 5600**系统能力:** SystemCapability.Graphics.Drawing 5601 5602**参数:** 5603 5604| 参数名 | 类型 | 必填 | 说明 | 5605| ------ | ------------------------- | ---- | --------- | 5606| filter | [MaskFilter](#maskfilter12) | 是 | 蒙版滤镜。为null时表示清空蒙版滤镜。 | 5607 5608**错误码:** 5609 5610以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 5611 5612| 错误码ID | 错误信息 | 5613| ------- | --------------------------------------------| 5614| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. | 5615 5616**示例:** 5617 5618```ts 5619import { RenderNode } from '@kit.ArkUI'; 5620import { common2D, drawing } from '@kit.ArkGraphics2D'; 5621class DrawingRenderNode extends RenderNode { 5622 draw(context : DrawContext) { 5623 const canvas = context.canvas; 5624 const pen = new drawing.Pen(); 5625 pen.setStrokeWidth(5); 5626 pen.setColor({alpha: 255, red: 255, green: 0, blue: 0}); 5627 let maskFilter = drawing.MaskFilter.createBlurMaskFilter(drawing.BlurType.OUTER, 10); 5628 pen.setMaskFilter(maskFilter); 5629 } 5630} 5631``` 5632 5633### setPathEffect<sup>12+</sup> 5634 5635setPathEffect(effect: PathEffect): void 5636 5637设置画笔路径效果。 5638 5639**系统能力:** SystemCapability.Graphics.Drawing 5640 5641**参数:** 5642 5643| 参数名 | 类型 | 必填 | 说明 | 5644| ------- | ------------------------- | ---- | ------------ | 5645| effect | [PathEffect](#patheffect12) | 是 | 路径效果对象。为null时表示清空路径效果。 | 5646 5647**错误码:** 5648 5649以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 5650 5651| 错误码ID | 错误信息 | 5652| ------- | --------------------------------------------| 5653| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. | 5654 5655**示例:** 5656 5657```ts 5658import { RenderNode } from '@kit.ArkUI'; 5659import { common2D, drawing } from '@kit.ArkGraphics2D'; 5660class DrawingRenderNode extends RenderNode { 5661 draw(context : DrawContext) { 5662 const canvas = context.canvas; 5663 const pen = new drawing.Pen(); 5664 pen.setStrokeWidth(5); 5665 pen.setColor({alpha: 255, red: 255, green: 0, blue: 0}); 5666 let pathEffect = drawing.PathEffect.createDashPathEffect([30, 10], 0); 5667 pen.setPathEffect(pathEffect); 5668 } 5669} 5670``` 5671 5672### setShaderEffect<sup>12+</sup> 5673 5674setShaderEffect(shaderEffect: ShaderEffect): void 5675 5676设置画笔着色器效果。 5677 5678**系统能力:** SystemCapability.Graphics.Drawing 5679 5680**参数:** 5681 5682| 参数名 | 类型 | 必填 | 说明 | 5683| ------- | ------------------------- | ---- | ------------ | 5684| shaderEffect | [ShaderEffect](#shadereffect12) | 是 | 着色器对象。为null时表示清空着色器效果。 | 5685 5686**错误码:** 5687 5688以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 5689 5690| 错误码ID | 错误信息 | 5691| ------- | --------------------------------------------| 5692| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. | 5693 5694**示例:** 5695 5696```ts 5697import { drawing } from '@kit.ArkGraphics2D'; 5698 5699const pen = new drawing.Pen(); 5700let shaderEffect = drawing.ShaderEffect.createLinearGradient({x: 100, y: 100}, {x: 300, y: 300}, [0xFF00FF00, 0xFFFF0000], drawing.TileMode.REPEAT); 5701pen.setShaderEffect(shaderEffect); 5702``` 5703 5704### setShadowLayer<sup>12+</sup> 5705 5706setShadowLayer(shadowLayer: ShadowLayer): void 5707 5708设置画笔阴影层效果。当前仅在绘制文字时生效。 5709 5710**系统能力:** SystemCapability.Graphics.Drawing 5711 5712**参数:** 5713 5714| 参数名 | 类型 | 必填 | 说明 | 5715| ------- | ------------------------- | ---- | --------- | 5716| shadowLayer | [ShadowLayer](#shadowlayer12) | 是 | 阴影层对象。为null时表示清空阴影层效果。 | 5717 5718**错误码:** 5719 5720以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 5721 5722| 错误码ID | 错误信息 | 5723| ------- | --------------------------------------------| 5724| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. | 5725 5726**示例:** 5727 5728```ts 5729import { RenderNode } from '@kit.ArkUI'; 5730import { common2D, drawing } from '@kit.ArkGraphics2D'; 5731class DrawingRenderNode extends RenderNode { 5732 draw(context : DrawContext) { 5733 const canvas = context.canvas; 5734 let font = new drawing.Font(); 5735 font.setSize(60); 5736 let textBlob = drawing.TextBlob.makeFromString("hello", font, drawing.TextEncoding.TEXT_ENCODING_UTF8); 5737 let pen = new drawing.Pen(); 5738 pen.setStrokeWidth(2.0); 5739 let pen_color : common2D.Color = {alpha: 0xFF, red: 0xFF, green: 0x00, blue: 0x00}; 5740 pen.setColor(pen_color); 5741 canvas.attachPen(pen); 5742 canvas.drawTextBlob(textBlob, 100, 100); 5743 canvas.detachPen(); 5744 let color : common2D.Color = {alpha: 0xFF, red: 0x00, green: 0xFF, blue: 0x00}; 5745 let shadowLayer = drawing.ShadowLayer.create(3, -3, 3, color); 5746 pen.setShadowLayer(shadowLayer); 5747 canvas.attachPen(pen); 5748 canvas.drawTextBlob(textBlob, 100, 200); 5749 canvas.detachPen(); 5750 } 5751} 5752``` 5753 5754### setBlendMode 5755 5756setBlendMode(mode: BlendMode) : void 5757 5758用于设置画笔的混合模式。 5759 5760**系统能力:** SystemCapability.Graphics.Drawing 5761 5762**参数:** 5763 5764| 参数名 | 类型 | 必填 | 说明 | 5765| ------ | ----------------------- | ---- | ---------------- | 5766| mode | [BlendMode](#blendmode) | 是 | 颜色的混合模式。 | 5767 5768**错误码:** 5769 5770以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 5771 5772| 错误码ID | 错误信息 | 5773| ------- | --------------------------------------------| 5774| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types;3.Parameter verification failed. | 5775 5776**示例:** 5777 5778```ts 5779import { drawing } from '@kit.ArkGraphics2D'; 5780const pen = new drawing.Pen(); 5781pen.setBlendMode(drawing.BlendMode.SRC); 5782``` 5783 5784### setJoinStyle<sup>12+</sup> 5785 5786setJoinStyle(style: JoinStyle): void 5787 5788用于设置画笔绘制转角的样式。 5789 5790**系统能力:** SystemCapability.Graphics.Drawing 5791 5792**参数:** 5793 5794| 参数名 | 类型 | 必填 | 说明 | 5795| ------ | ----------------------- | ---- | --------------- | 5796| style | [JoinStyle](#joinstyle12) | 是 | 折线转角样式 | 5797 5798**错误码:** 5799 5800以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 5801 5802| 错误码ID | 错误信息 | 5803| ------- | --------------------------------------------| 5804| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types;3.Parameter verification failed. | 5805 5806**示例:** 5807 5808```ts 5809import { RenderNode } from '@kit.ArkUI'; 5810import { common2D, drawing } from '@kit.ArkGraphics2D'; 5811class DrawingRenderNode extends RenderNode { 5812 draw(context : DrawContext) { 5813 const canvas = context.canvas; 5814 const pen = new drawing.Pen(); 5815 pen.setStrokeWidth(5); 5816 pen.setColor({alpha: 255, red: 255, green: 0, blue: 0}); 5817 pen.setJoinStyle(drawing.JoinStyle.ROUND_JOIN); 5818 } 5819} 5820``` 5821 5822### getJoinStyle<sup>12+</sup> 5823 5824getJoinStyle(): JoinStyle 5825 5826用于获取画笔绘制转角的样式。 5827 5828**系统能力:** SystemCapability.Graphics.Drawing 5829 5830**返回值:** 5831 5832| 类型 | 说明 | 5833| ------------- | ---------------------- | 5834| JoinStyle | 返回折线转角的样式。 | 5835 5836**示例:** 5837 5838```ts 5839import { RenderNode } from '@kit.ArkUI'; 5840import { common2D, drawing } from '@kit.ArkGraphics2D'; 5841class DrawingRenderNode extends RenderNode { 5842 draw(context : DrawContext) { 5843 const canvas = context.canvas; 5844 const pen = new drawing.Pen(); 5845 pen.setStrokeWidth(5); 5846 pen.setColor({alpha: 255, red: 255, green: 0, blue: 0}); 5847 pen.setJoinStyle(drawing.JoinStyle.ROUND_JOIN); 5848 let joinStyle = pen.getJoinStyle(); 5849 } 5850} 5851``` 5852 5853### setCapStyle<sup>12+</sup> 5854 5855setCapStyle(style: CapStyle): void 5856 5857用于设置线帽样式。 5858 5859**系统能力:** SystemCapability.Graphics.Drawing 5860 5861**参数:** 5862 5863| 参数名 | 类型 | 必填 | 说明 | 5864| ------ | ----------------------- | ---- | --------------------- | 5865| style | [CapStyle](#capstyle12) | 是 | 描述线帽样式的变量。 | 5866 5867**错误码:** 5868 5869以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 5870 5871| 错误码ID | 错误信息 | 5872| ------- | --------------------------------------------| 5873| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types;3.Parameter verification failed. | 5874 5875**示例:** 5876 5877```ts 5878import { RenderNode } from '@kit.ArkUI'; 5879import { common2D, drawing } from '@kit.ArkGraphics2D'; 5880class DrawingRenderNode extends RenderNode { 5881 draw(context : DrawContext) { 5882 const canvas = context.canvas; 5883 const pen = new drawing.Pen(); 5884 pen.setStrokeWidth(5); 5885 pen.setColor({alpha: 255, red: 255, green: 0, blue: 0}); 5886 pen.setCapStyle(drawing.CapStyle.SQUARE_CAP); 5887 } 5888} 5889``` 5890 5891### getCapStyle<sup>12+</sup> 5892 5893getCapStyle(): CapStyle 5894 5895用于获取画笔的线帽样式。 5896 5897**系统能力:** SystemCapability.Graphics.Drawing 5898 5899**返回值:** 5900 5901| 类型 | 说明 | 5902| ------------ | ------------------ | 5903| CapStyle | 返回画笔的线帽样式。 | 5904 5905**示例:** 5906 5907```ts 5908import { RenderNode } from '@kit.ArkUI'; 5909import { common2D, drawing } from '@kit.ArkGraphics2D'; 5910class DrawingRenderNode extends RenderNode { 5911 draw(context : DrawContext) { 5912 const canvas = context.canvas; 5913 const pen = new drawing.Pen(); 5914 pen.setStrokeWidth(5); 5915 pen.setColor({alpha: 255, red: 255, green: 0, blue: 0}); 5916 pen.setCapStyle(drawing.CapStyle.SQUARE_CAP); 5917 let capStyle = pen.getCapStyle(); 5918 } 5919} 5920``` 5921 5922### setDither 5923 5924setDither(dither: boolean) : void 5925 5926开启画笔的抖动绘制效果。抖动绘制可以使得绘制出的颜色更加真实。 5927 5928**系统能力:** SystemCapability.Graphics.Drawing 5929 5930**参数:** 5931 5932| 参数名 | 类型 | 必填 | 说明 | 5933| ------ | ------- | ---- | --------------------------------------------------------- | 5934| dither | boolean | 是 | 是否开启画笔的抖动绘制效果。true表示开启,false表示关闭。 | 5935 5936**错误码:** 5937 5938以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 5939 5940| 错误码ID | 错误信息 | 5941| ------- | --------------------------------------------| 5942| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. | 5943 5944**示例:** 5945 5946```ts 5947import { drawing } from '@kit.ArkGraphics2D'; 5948const pen = new drawing.Pen(); 5949pen.setDither(true); 5950``` 5951 5952### getFillPath<sup>12+</sup> 5953 5954getFillPath(src: Path, dst: Path): boolean 5955 5956获取使用画笔绘制的源路径轮廓,并用目标路径表示。 5957 5958**系统能力:** SystemCapability.Graphics.Drawing 5959 5960**参数:** 5961 5962| 参数名 | 类型 | 必填 | 说明 | 5963| -------- | -------------------------------------------- | ---- | ------------------------------- | 5964| src | [Path](#path) | 是 | 源路径对象。 | 5965| dst | [Path](#path) | 是 | 目标路径对象。 | 5966 5967**返回值:** 5968 5969| 类型 | 说明 | 5970| --------------------- | -------------- | 5971| boolean | 返回获取源路径轮廓是否成功的结果,true表示获取成功,false表示获取失败。 | 5972 5973**错误码:** 5974 5975以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 5976 5977| 错误码ID | 错误信息 | 5978| ------- | --------------------------------------------| 5979| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. | 5980 5981**示例:** 5982 5983```ts 5984import { drawing } from '@kit.ArkGraphics2D'; 5985let pen = new drawing.Pen(); 5986let pathSrc: drawing.Path = new drawing.Path(); 5987let pathDst: drawing.Path = new drawing.Path(); 5988pathSrc.moveTo(0, 0); 5989pathSrc.lineTo(700, 700); 5990let value = pen.getFillPath(pathSrc, pathDst); 5991``` 5992 5993### reset<sup>12+</sup> 5994 5995reset(): void 5996 5997重置当前画笔为初始状态。 5998 5999**系统能力:** SystemCapability.Graphics.Drawing 6000 6001**示例:** 6002 6003```ts 6004import { drawing } from '@kit.ArkGraphics2D'; 6005 6006const pen = new drawing.Pen(); 6007pen.reset(); 6008``` 6009 6010## Brush 6011 6012画刷对象,描述所绘制图形的填充信息。 6013 6014### constructor<sup>12+</sup> 6015 6016constructor() 6017 6018构造一个新的画刷对象。 6019 6020**系统能力:** SystemCapability.Graphics.Drawing 6021 6022**示例:** 6023 6024```ts 6025import { drawing } from '@kit.ArkGraphics2D'; 6026 6027const brush = new drawing.Brush(); 6028``` 6029 6030### constructor<sup>12+</sup> 6031 6032constructor(brush: Brush) 6033 6034复制构造一个新的画刷对象。 6035 6036**系统能力:** SystemCapability.Graphics.Drawing 6037 6038**参数:** 6039 6040| 参数名 | 类型 | 必填 | 说明 | 6041| ------| ----------- | ---- | ---------------- | 6042| brush | [Brush](#brush) | 是 | 待复制的画刷对象。 | 6043 6044**错误码:** 6045 6046以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 6047 6048| 错误码ID | 错误信息 | 6049| ------- | --------------------------------------------| 6050| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. | 6051 6052**示例:** 6053 6054```ts 6055import { common2D, drawing } from '@kit.ArkGraphics2D'; 6056 6057const brush = new drawing.Brush(); 6058const brushColor: common2D.Color = { alpha: 255, red: 0, green: 255, blue: 0 }; 6059brush.setColor(brushColor); 6060const newBrush = new drawing.Brush(brush); 6061``` 6062 6063### setColor 6064 6065setColor(color: common2D.Color) : void 6066 6067用于设置画刷的颜色。 6068 6069**系统能力:** SystemCapability.Graphics.Drawing 6070 6071**参数:** 6072 6073| 参数名 | 类型 | 必填 | 说明 | 6074| ------ | ---------------------------------------------------- | ---- | ---------------- | 6075| color | [common2D.Color](js-apis-graphics-common2D.md#color) | 是 | ARGB格式的颜色,每个颜色通道是0到255之间的整数。 | 6076 6077**错误码:** 6078 6079以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 6080 6081| 错误码ID | 错误信息 | 6082| ------- | --------------------------------------------| 6083| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types;3.Parameter verification failed. | 6084 6085**示例:** 6086 6087```ts 6088import { common2D, drawing } from '@kit.ArkGraphics2D'; 6089const color : common2D.Color = { alpha: 255, red: 255, green: 0, blue: 0 }; 6090const brush = new drawing.Brush(); 6091brush.setColor(color); 6092``` 6093 6094### setColor<sup>12+</sup> 6095 6096setColor(alpha: number, red: number, green: number, blue: number): void 6097 6098用于设置画刷的颜色。性能优于[setColor](#setcolor-1)接口,推荐使用本接口。 6099 6100**系统能力:** SystemCapability.Graphics.Drawing 6101 6102**参数:** 6103 6104| 参数名 | 类型 | 必填 | 说明 | 6105| ------ | ------ | ---- | -------------------------------------------------- | 6106| alpha | number | 是 | ARGB格式颜色的透明度通道值,该参数是0到255之间的整数,传入范围内的浮点数会向下取整。 | 6107| red | number | 是 | ARGB格式颜色的红色通道值,该参数是0到255之间的整数,传入范围内的浮点数会向下取整。 | 6108| green | number | 是 | ARGB格式颜色的绿色通道值,该参数是0到255之间的整数,传入范围内的浮点数会向下取整。 | 6109| blue | number | 是 | ARGB格式颜色的蓝色通道值,该参数是0到255之间的整数,传入范围内的浮点数会向下取整。 | 6110 6111**错误码:** 6112 6113以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 6114 6115| 错误码ID | 错误信息 | 6116| ------- | --------------------------------------------| 6117| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types;3.Parameter verification failed. | 6118 6119**示例:** 6120 6121```ts 6122import { drawing } from '@kit.ArkGraphics2D'; 6123const brush = new drawing.Brush(); 6124brush.setColor(255, 255, 0, 0); 6125``` 6126 6127### getColor<sup>12+</sup> 6128 6129getColor(): common2D.Color 6130 6131获取画刷的颜色。 6132 6133**系统能力:** SystemCapability.Graphics.Drawing 6134 6135**返回值:** 6136 6137| 类型 | 说明 | 6138| -------------- | -------------- | 6139| common2D.Color | 返回画刷的颜色。 | 6140 6141**示例:** 6142 6143```ts 6144import { common2D, drawing } from '@kit.ArkGraphics2D'; 6145 6146const color : common2D.Color = { alpha: 255, red: 255, green: 0, blue: 0 }; 6147const brush = new drawing.Brush(); 6148brush.setColor(color); 6149let colorGet = brush.getColor(); 6150``` 6151 6152### setAntiAlias 6153 6154setAntiAlias(aa: boolean) : void 6155 6156用于设置画刷是否开启抗锯齿。开启后,可以使得图形的边缘在显示时更平滑。 6157 6158**系统能力:** SystemCapability.Graphics.Drawing 6159 6160**参数:** 6161 6162| 参数名 | 类型 | 必填 | 说明 | 6163| ------ | ------- | ---- | ------------------------------------------------- | 6164| aa | boolean | 是 | 表示是否开启抗锯齿。true表示开启,false表示关闭。 | 6165 6166**错误码:** 6167 6168以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 6169 6170| 错误码ID | 错误信息 | 6171| ------- | --------------------------------------------| 6172| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. | 6173 6174**示例:** 6175 6176```ts 6177import { drawing } from '@kit.ArkGraphics2D'; 6178const brush = new drawing.Brush(); 6179brush.setAntiAlias(true); 6180``` 6181 6182### isAntiAlias<sup>12+</sup> 6183 6184isAntiAlias(): boolean 6185 6186获取画刷是否开启抗锯齿属性。 6187 6188**系统能力:** SystemCapability.Graphics.Drawing 6189 6190**返回值:** 6191 6192| 类型 | 说明 | 6193| ------- | ------------------------- | 6194| boolean | 返回画刷是否开启抗锯齿属性,true表示开启抗锯齿属性,false表示关闭抗锯齿属性。 | 6195 6196**示例:** 6197 6198```ts 6199import { drawing } from '@kit.ArkGraphics2D'; 6200 6201const brush = new drawing.Brush(); 6202let isAntiAlias = brush.isAntiAlias(); 6203``` 6204 6205### setAlpha 6206 6207setAlpha(alpha: number) : void 6208 6209用于设置画刷的透明度。 6210 6211**系统能力:** SystemCapability.Graphics.Drawing 6212 6213**参数:** 6214 6215| 参数名 | 类型 | 必填 | 说明 | 6216| ------ | ------ | ---- | ---------------------------------------- | 6217| alpha | number | 是 | 用于表示透明度的[0, 255]区间内的整数值,传入浮点类型时向下取整。 | 6218 6219**错误码:** 6220 6221以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 6222 6223| 错误码ID | 错误信息 | 6224| ------- | --------------------------------------------| 6225| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types;3.Parameter verification failed. | 6226 6227**示例:** 6228 6229```ts 6230import { drawing } from '@kit.ArkGraphics2D'; 6231const brush = new drawing.Brush(); 6232brush.setAlpha(128); 6233``` 6234 6235### getAlpha<sup>12+</sup> 6236 6237getAlpha(): number 6238 6239获取画刷的透明度。 6240 6241**系统能力:** SystemCapability.Graphics.Drawing 6242 6243**返回值:** 6244 6245| 类型 | 说明 | 6246| ------ | ---------------- | 6247| number | 返回画刷的透明度,该返回值为0到255之间的整数。 | 6248 6249**示例:** 6250 6251```ts 6252import { drawing } from '@kit.ArkGraphics2D'; 6253 6254const brush = new drawing.Brush(); 6255let alpha = brush.getAlpha(); 6256``` 6257 6258### setColorFilter 6259 6260setColorFilter(filter: ColorFilter) : void 6261 6262用于给画刷添加额外的颜色滤波器。 6263 6264**系统能力:** SystemCapability.Graphics.Drawing 6265 6266**参数:** 6267 6268| 参数名 | 类型 | 必填 | 说明 | 6269| ------ | --------------------------- | ---- | ------------ | 6270| filter | [ColorFilter](#colorfilter) | 是 | 颜色滤波器。为null时表示清空颜色滤波器。 | 6271 6272**错误码:** 6273 6274以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 6275 6276| 错误码ID | 错误信息 | 6277| ------- | --------------------------------------------| 6278| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. | 6279 6280**示例:** 6281 6282```ts 6283import { drawing } from '@kit.ArkGraphics2D'; 6284const brush = new drawing.Brush(); 6285let colorFilter = drawing.ColorFilter.createLinearToSRGBGamma(); 6286brush.setColorFilter(colorFilter); 6287``` 6288 6289### setMaskFilter<sup>12+</sup> 6290 6291setMaskFilter(filter: MaskFilter): void 6292 6293用于给画刷添加额外的蒙版滤镜。 6294 6295**系统能力:** SystemCapability.Graphics.Drawing 6296 6297**参数:** 6298 6299| 参数名 | 类型 | 必填 | 说明 | 6300| ------ | ------------------------- | ---- | --------- | 6301| filter | [MaskFilter](#maskfilter12) | 是 | 蒙版滤镜。为null时表示清空蒙版滤镜。 | 6302 6303**错误码:** 6304 6305以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 6306 6307| 错误码ID | 错误信息 | 6308| ------- | --------------------------------------------| 6309| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. | 6310 6311**示例:** 6312 6313```ts 6314import { RenderNode } from '@kit.ArkUI'; 6315import { common2D, drawing } from '@kit.ArkGraphics2D'; 6316class DrawingRenderNode extends RenderNode { 6317 draw(context : DrawContext) { 6318 const canvas = context.canvas; 6319 const brush = new drawing.Brush(); 6320 let maskFilter = drawing.MaskFilter.createBlurMaskFilter(drawing.BlurType.OUTER, 10); 6321 brush.setMaskFilter(maskFilter); 6322 } 6323} 6324``` 6325 6326### setShaderEffect<sup>12+</sup> 6327 6328setShaderEffect(shaderEffect: ShaderEffect): void 6329 6330设置画刷着色器效果。 6331 6332**系统能力:** SystemCapability.Graphics.Drawing 6333 6334**参数:** 6335 6336| 参数名 | 类型 | 必填 | 说明 | 6337| ------- | ------------------------- | ---- | ------------ | 6338| shaderEffect | [ShaderEffect](#shadereffect12) | 是 | 着色器对象。为null时表示清空着色器效果。 | 6339 6340**错误码:** 6341 6342以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 6343 6344| 错误码ID | 错误信息 | 6345| ------- | --------------------------------------------| 6346| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. | 6347 6348**示例:** 6349 6350```ts 6351import { drawing } from '@kit.ArkGraphics2D'; 6352 6353const brush = new drawing.Brush(); 6354let shaderEffect = drawing.ShaderEffect.createLinearGradient({x: 100, y: 100}, {x: 300, y: 300}, [0xFF00FF00, 0xFFFF0000], drawing.TileMode.REPEAT); 6355brush.setShaderEffect(shaderEffect); 6356``` 6357 6358### setShadowLayer<sup>12+</sup> 6359 6360setShadowLayer(shadowLayer: ShadowLayer): void 6361 6362设置画刷阴影层效果。当前仅在绘制文字时生效。 6363 6364**系统能力:** SystemCapability.Graphics.Drawing 6365 6366**参数:** 6367 6368| 参数名 | 类型 | 必填 | 说明 | 6369| ------- | ------------------------- | ---- | --------- | 6370| shadowLayer | [ShadowLayer](#shadowlayer12) | 是 | 阴影层对象。为null时表示清空阴影层效果 | 6371 6372**错误码:** 6373 6374以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 6375 6376| 错误码ID | 错误信息 | 6377| ------- | --------------------------------------------| 6378| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. | 6379 6380**示例:** 6381 6382```ts 6383import { RenderNode } from '@kit.ArkUI'; 6384import { common2D, drawing } from '@kit.ArkGraphics2D'; 6385class DrawingRenderNode extends RenderNode { 6386 draw(context : DrawContext) { 6387 const canvas = context.canvas; 6388 let font = new drawing.Font(); 6389 font.setSize(60); 6390 6391 let textBlob = drawing.TextBlob.makeFromString("hello", font, drawing.TextEncoding.TEXT_ENCODING_UTF8); 6392 let pen = new drawing.Pen(); 6393 pen.setStrokeWidth(2.0); 6394 6395 let pen_color : common2D.Color = {alpha: 0xFF, red: 0xFF, green: 0x00, blue: 0x00}; 6396 pen.setColor(pen_color); 6397 canvas.attachPen(pen); 6398 canvas.drawTextBlob(textBlob, 100, 100); 6399 canvas.detachPen(); 6400 6401 let color : common2D.Color = {alpha: 0xFF, red: 0x00, green: 0xFF, blue: 0x00}; 6402 let shadowLayer = drawing.ShadowLayer.create(3, -3, 3, color); 6403 pen.setShadowLayer(shadowLayer); 6404 canvas.attachPen(pen); 6405 canvas.drawTextBlob(textBlob, 100, 200); 6406 canvas.detachPen(); 6407 6408 let brush = new drawing.Brush(); 6409 let brush_color : common2D.Color = {alpha: 0xFF, red: 0xFF, green: 0x00, blue: 0x00}; 6410 brush.setColor(brush_color); 6411 canvas.attachBrush(brush); 6412 canvas.drawTextBlob(textBlob, 300, 100); 6413 canvas.detachBrush(); 6414 6415 brush.setShadowLayer(shadowLayer); 6416 canvas.attachBrush(brush); 6417 canvas.drawTextBlob(textBlob, 300, 200); 6418 canvas.detachBrush(); 6419 } 6420} 6421``` 6422 6423### setBlendMode 6424 6425setBlendMode(mode: BlendMode) : void 6426 6427用于设置画刷的混合模式。 6428 6429**系统能力:** SystemCapability.Graphics.Drawing 6430 6431**参数:** 6432 6433| 参数名 | 类型 | 必填 | 说明 | 6434| ------ | ----------------------- | ---- | ---------------- | 6435| mode | [BlendMode](#blendmode) | 是 | 颜色的混合模式。 | 6436 6437**错误码:** 6438 6439以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 6440 6441| 错误码ID | 错误信息 | 6442| ------- | --------------------------------------------| 6443| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types;3.Parameter verification failed. | 6444 6445**示例:** 6446 6447```ts 6448import { drawing } from '@kit.ArkGraphics2D'; 6449const brush = new drawing.Brush(); 6450brush.setBlendMode(drawing.BlendMode.SRC); 6451``` 6452 6453### setImageFilter<sup>12+</sup> 6454 6455setImageFilter(filter: ImageFilter | null): void 6456 6457为画刷设置图像滤波器。 6458 6459**系统能力:** SystemCapability.Graphics.Drawing 6460 6461**参数:** 6462 6463| 参数名 | 类型 | 必填 | 说明 | 6464| ------ | ------ | ---- | ----------------------- | 6465| filter | [ImageFilter](#imagefilter12) \| null | 是 | 图像滤波器,为null表示清空图像滤波器效果。 | 6466 6467**错误码:** 6468 6469以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 6470 6471| 错误码ID | 错误信息 | 6472| ------- | --------------------------------------------| 6473| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified;2. Incorrect parameter types. | 6474 6475**示例:** 6476 6477```ts 6478import {drawing} from '@kit.ArkGraphics2D'; 6479let brush = new drawing.Brush(); 6480let imgFilter = drawing.ImageFilter.createBlurImageFilter(5, 10, drawing.TileMode.DECAL); 6481brush.setImageFilter(imgFilter); 6482brush.setImageFilter(null); 6483``` 6484 6485### getColorFilter<sup>12+</sup> 6486 6487getColorFilter(): ColorFilter 6488 6489获取画刷的颜色滤波器。 6490 6491**系统能力:** SystemCapability.Graphics.Drawing 6492 6493**返回值:** 6494 6495| 类型 | 说明 | 6496| --------------------------- | ------------------ | 6497| [ColorFilter](#colorfilter) | 返回一个颜色滤波器。 | 6498 6499**示例:** 6500 6501```ts 6502import {drawing} from '@kit.ArkGraphics2D'; 6503let brush = new drawing.Brush(); 6504let setColorFilter = drawing.ColorFilter.createSRGBGammaToLinear(); 6505brush.setColorFilter(setColorFilter); 6506let filter = brush.getColorFilter(); 6507``` 6508 6509### reset<sup>12+</sup> 6510 6511reset(): void 6512 6513重置当前画刷为初始状态。 6514 6515**系统能力:** SystemCapability.Graphics.Drawing 6516 6517**示例:** 6518 6519```ts 6520import { drawing } from '@kit.ArkGraphics2D'; 6521 6522const brush = new drawing.Brush(); 6523brush.reset(); 6524``` 6525 6526## ScaleToFit<sup>12+</sup> 6527 6528源矩形到目标矩形的缩放方式枚举。 6529 6530**系统能力**:SystemCapability.Graphics.Drawing 6531 6532| 名称 | 值 | 说明 | 6533| ---------------------- | ---- | ------------------------------ | 6534| FILL_SCALE_TO_FIT | 0 | 将源矩形缩放以填充满整个目标矩形,可能会改变源矩形的长宽比。 | 6535| START_SCALE_TO_FIT | 1 | 保持源矩形的长宽比进行缩放,并对齐到目标矩形的左上方。 | 6536| CENTER_SCALE_TO_FIT | 2 | 保持源矩形的长宽比进行缩放,并居中对齐到目标矩形。 | 6537| END_SCALE_TO_FIT | 3 | 保持源矩形的长宽比进行缩放,并对齐到目标矩形的右下方。 | 6538 6539## Matrix<sup>12+</sup> 6540 6541矩阵对象。 6542 6543表示为3*3的矩阵,如下图所示: 6544 6545 6546 6547矩阵中的元素从左到右,从上到下分别表示水平缩放系数、水平倾斜系数、水平位移系数、垂直倾斜系数、垂直缩放系数、垂直位移系数、X轴透视系数、Y轴透视系数、透视缩放系数。 6548设(x<sub>1</sub>, y<sub>1</sub>)为源坐标点,(x<sub>2</sub>, y<sub>2</sub>)为源坐标点通过矩阵变换后的坐标点,则两个坐标点的关系如下: 6549 6550 6551 6552### constructor<sup>12+</sup> 6553 6554constructor() 6555 6556用于构造一个矩阵对象。 6557 6558**系统能力:** SystemCapability.Graphics.Drawing 6559 6560**示例:** 6561 6562```ts 6563import { drawing } from '@kit.ArkGraphics2D'; 6564 6565let matrix = new drawing.Matrix(); 6566``` 6567 6568### setRotation<sup>12+</sup> 6569 6570setRotation(degree: number, px: number, py: number): void 6571 6572设置矩阵为单位矩阵,并围绕位于(px, py)的旋转轴点进行旋转。 6573 6574**系统能力:** SystemCapability.Graphics.Drawing 6575 6576**参数:** 6577 6578| 参数名 | 类型 | 必填 | 说明 | 6579| ----------- | ---------------------------------------- | ---- | ------------------- | 6580| degree | number | 是 | 角度,单位为度。正数表示顺时针旋转,负数表示逆时针旋转,该参数为浮点数。| 6581| px | number | 是 | 旋转轴点的横坐标,该参数为浮点数。 | 6582| py | number | 是 | 旋转轴点的纵坐标,该参数为浮点数。 | 6583 6584**错误码:** 6585 6586以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 6587 6588| 错误码ID | 错误信息 | 6589| ------- | --------------------------------------------| 6590| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. | 6591 6592**示例:** 6593 6594```ts 6595import { drawing } from '@kit.ArkGraphics2D'; 6596 6597let matrix = new drawing.Matrix(); 6598matrix.setRotation(90, 100, 100); 6599``` 6600 6601### setScale<sup>12+</sup> 6602 6603setScale(sx: number, sy: number, px: number, py: number): void 6604 6605设置矩阵为单位矩阵围绕位于(px, py)的中心点,以sx和sy进行缩放后的结果。 6606 6607**系统能力:** SystemCapability.Graphics.Drawing 6608 6609**参数:** 6610 6611| 参数名 | 类型 | 必填 | 说明 | 6612| ----------- | ---------------------------------------- | ---- | ------------------- | 6613| sx | number | 是 | x轴方向缩放系数,为负数时可看作是先关于y = px作镜像翻转后再进行缩放,该参数为浮点数。 | 6614| sy | number | 是 | y轴方向缩放系数,为负数时可看作是先关于x = py作镜像翻转后再进行缩放,该参数为浮点数。 | 6615| px | number | 是 | 缩放中心点的横坐标,该参数为浮点数。 | 6616| py | number | 是 | 缩放中心点的纵坐标,该参数为浮点数。 | 6617 6618**错误码:** 6619 6620以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 6621 6622| 错误码ID | 错误信息 | 6623| ------- | --------------------------------------------| 6624| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. | 6625 6626**示例:** 6627 6628```ts 6629import { drawing } from '@kit.ArkGraphics2D'; 6630 6631let matrix = new drawing.Matrix(); 6632matrix.setScale(100, 100, 150, 150); 6633``` 6634 6635### setTranslation<sup>12+</sup> 6636 6637setTranslation(dx: number, dy: number): void 6638 6639设置矩阵为单位矩阵平移(dx, dy)后的结果。 6640 6641**系统能力:** SystemCapability.Graphics.Drawing 6642 6643**参数:** 6644 6645| 参数名 | 类型 | 必填 | 说明 | 6646| ----------- | ---------------------------------------- | ---- | ------------------- | 6647| dx | number | 是 | x轴方向平移距离,正数表示往x轴正方向平移,负数表示往x轴负方向平移,该参数为浮点数。 | 6648| dy | number | 是 | y轴方向平移距离,正数表示往y轴正方向平移,负数表示往y轴负方向平移,该参数为浮点数。 | 6649 6650**错误码:** 6651 6652以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 6653 6654| 错误码ID | 错误信息 | 6655| ------- | --------------------------------------------| 6656| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. | 6657 6658**示例:** 6659 6660```ts 6661import { drawing } from '@kit.ArkGraphics2D'; 6662 6663let matrix = new drawing.Matrix(); 6664matrix.setTranslation(100, 100); 6665``` 6666 6667### setMatrix<sup>12+</sup> 6668 6669setMatrix(values: Array\<number>): void 6670 6671用于设置矩阵对象的各项参数。 6672 6673**系统能力:** SystemCapability.Graphics.Drawing 6674 6675**参数:** 6676 6677| 参数名 | 类型 | 必填 | 说明 | 6678| ------ | ---------------------------------------------------- | ---- | ---------------- | 6679| values | Array\<number> | 是 | 长度为9的浮点数组,表示矩阵对象参数。数组中的值按下标从小,到大分别表示水平缩放系数、水平倾斜系数、水平位移系数、垂直倾斜系数、垂直缩放系数、垂直位移系数、X轴透视系数、Y轴透视系数、透视缩放系数。 | 6680 6681**错误码:** 6682 6683以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 6684 6685| 错误码ID | 错误信息 | 6686| ------- | --------------------------------------------| 6687| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types; 3. Parameter verification failed. | 6688 6689**示例:** 6690 6691```ts 6692import { drawing } from '@kit.ArkGraphics2D'; 6693 6694let matrix = new drawing.Matrix(); 6695let value : Array<number> = [2, 2, 2, 2, 2, 2, 2, 2, 2]; 6696matrix.setMatrix(value); 6697``` 6698 6699### preConcat<sup>12+</sup> 6700 6701preConcat(matrix: Matrix): void 6702 6703将当前矩阵设置为当前矩阵左乘matrix的结果。 6704 6705**系统能力:** SystemCapability.Graphics.Drawing 6706 6707**参数:** 6708 6709| 参数名 | 类型 | 必填 | 说明 | 6710| ------ | ---------------------------------------------------- | ---- | ---------------- | 6711| matrix | [Matrix](#matrix12) | 是 | 表示矩阵对象,位于乘法表达式右侧。 | 6712 6713**错误码:** 6714 6715以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 6716 6717| 错误码ID | 错误信息 | 6718| ------- | --------------------------------------------| 6719| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. | 6720 6721**示例:** 6722 6723```ts 6724import { drawing } from '@kit.ArkGraphics2D'; 6725 6726let matrix1 = new drawing.Matrix(); 6727matrix1.setMatrix([2, 1, 3, 1, 2, 1, 3, 1, 2]); 6728let matrix2 = new drawing.Matrix(); 6729matrix2.setMatrix([-2, 1, 3, 1, 0, -1, 3, -1, 2]); 6730matrix1.preConcat(matrix2); 6731``` 6732 6733### isEqual<sup>12+</sup> 6734 6735isEqual(matrix: Matrix): Boolean 6736 6737判断两个矩阵是否相等。 6738 6739**系统能力:** SystemCapability.Graphics.Drawing 6740 6741**参数:** 6742 6743| 参数名 | 类型 | 必填 | 说明 | 6744| ------ | ---------------------------------------------------- | ---- | ---------------- | 6745| matrix | [Matrix](#matrix12) | 是 | 另一个矩阵。 | 6746 6747**返回值:** 6748 6749| 类型 | 说明 | 6750| --------------------------- | -------------------- | 6751| Boolean | 返回两个矩阵的比较结果。true表示两个矩阵相等,false表示两个矩阵不相等。 | 6752 6753**错误码:** 6754 6755以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 6756 6757| 错误码ID | 错误信息 | 6758| ------- | --------------------------------------------| 6759| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. | 6760 6761**示例:** 6762 6763```ts 6764import { drawing } from '@kit.ArkGraphics2D'; 6765 6766let matrix1 = new drawing.Matrix(); 6767matrix1.setMatrix([2, 1, 3, 1, 2, 1, 3, 1, 2]); 6768let matrix2 = new drawing.Matrix(); 6769matrix2.setMatrix([-2, 1, 3, 1, 0, -1, 3, -1, 2]); 6770if (matrix1.isEqual(matrix2)) { 6771 console.info("matrix1 and matrix2 are equal."); 6772} else { 6773 console.info("matrix1 and matrix2 are not equal."); 6774} 6775``` 6776 6777### invert<sup>12+</sup> 6778 6779invert(matrix: Matrix): Boolean 6780 6781将矩阵matrix设置为当前矩阵的逆矩阵,并返回是否设置成功的结果。 6782 6783**系统能力:** SystemCapability.Graphics.Drawing 6784 6785**参数:** 6786 6787| 参数名 | 类型 | 必填 | 说明 | 6788| ------ | ---------------------------------------------------- | ---- | ---------------- | 6789| matrix | [Matrix](#matrix12) | 是 | 矩阵对象,用于存储获取到的逆矩阵。 | 6790 6791**返回值:** 6792 6793| 类型 | 说明 | 6794| --------------------------- | -------------------- | 6795| Boolean | 返回matrix是否被设置为逆矩阵的结果。true表示当前矩阵可逆,matrix被填充为逆矩阵,false表示当前矩阵不可逆,matrix不被改变。 | 6796 6797**错误码:** 6798 6799以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 6800 6801| 错误码ID | 错误信息 | 6802| ------- | --------------------------------------------| 6803| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. | 6804 6805**示例:** 6806 6807```ts 6808import { drawing } from '@kit.ArkGraphics2D'; 6809 6810let matrix1 = new drawing.Matrix(); 6811matrix1.setMatrix([2, 1, 3, 1, 2, 1, 3, 1, 2]); 6812let matrix2 = new drawing.Matrix(); 6813matrix2.setMatrix([-2, 1, 3, 1, 0, -1, 3, -1, 2]); 6814if (matrix1.invert(matrix2)) { 6815 console.info("matrix1 is invertible and matrix2 is set as an inverse matrix of the matrix1."); 6816} else { 6817 console.info("matrix1 is not invertible and matrix2 is not changed."); 6818} 6819``` 6820 6821### isIdentity<sup>12+</sup> 6822 6823isIdentity(): Boolean 6824 6825判断矩阵是否是单位矩阵。 6826 6827**系统能力:** SystemCapability.Graphics.Drawing 6828 6829**返回值:** 6830 6831| 类型 | 说明 | 6832| --------------------------- | -------------------- | 6833| Boolean | 返回矩阵是否是单位矩阵。true表示矩阵是单位矩阵,false表示矩阵不是单位矩阵。 | 6834 6835**示例:** 6836 6837```ts 6838import { drawing } from '@kit.ArkGraphics2D'; 6839 6840let matrix = new drawing.Matrix(); 6841if (matrix.isIdentity()) { 6842 console.info("matrix is identity."); 6843} else { 6844 console.info("matrix is not identity."); 6845} 6846``` 6847 6848### getValue<sup>12+</sup> 6849 6850getValue(index: number): number 6851 6852获取矩阵给定索引位的值。索引范围0-8。 6853 6854**系统能力**:SystemCapability.Graphics.Drawing 6855 6856**参数:** 6857 6858| 参数名 | 类型 | 必填 | 说明 | 6859| --------------- | ------- | ---- | ----------------------------------------------------------- | 6860| index | number | 是 | 索引位置,范围0-8,该参数为整数。 | 6861 6862**返回值:** 6863 6864| 类型 | 说明 | 6865| --------------------- | -------------- | 6866| number | 函数返回矩阵给定索引位对应的值,该返回值为整数。 | 6867 6868**错误码:** 6869 6870以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 6871 6872| 错误码ID | 错误信息 | 6873| ------- | --------------------------------------------| 6874| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified;2. Incorrect parameter types;3. Parameter verification failed.| 6875 6876**示例:** 6877 6878```ts 6879import {drawing} from "@kit.ArkGraphics2D" 6880let matrix = new drawing.Matrix(); 6881for (let i = 0; i < 9; i++) { 6882 console.info("matrix "+matrix.getValue(i).toString()); 6883} 6884``` 6885 6886### postRotate<sup>12+</sup> 6887 6888postRotate(degree: number, px: number, py: number): void 6889 6890将矩阵设置为矩阵右乘围绕轴心点旋转一定角度的单位矩阵后得到的矩阵。 6891 6892**系统能力**:SystemCapability.Graphics.Drawing 6893 6894**参数:** 6895 6896| 参数名 | 类型 | 必填 | 说明 | 6897| --------------- | ------- | ---- | ----------------------------------------------------------- | 6898| degree | number | 是 | 旋转角度,单位为度。正数表示顺时针旋转,负数表示逆时针旋转,该参数为浮点数。 | 6899| px | number | 是 | 旋转中心点的横坐标,该参数为浮点数。 | 6900| py | number | 是 | 旋转中心点的纵坐标,该参数为浮点数。 | 6901 6902**错误码:** 6903 6904以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 6905 6906| 错误码ID | 错误信息 | 6907| ------- | --------------------------------------------| 6908| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. | 6909 6910**示例:** 6911 6912```ts 6913import {drawing} from "@kit.ArkGraphics2D" 6914let matrix = new drawing.Matrix(); 6915let degree: number = 2; 6916let px: number = 3; 6917let py: number = 4; 6918matrix.postRotate(degree, px, py); 6919console.info("matrix= "+matrix.getAll().toString()); 6920``` 6921 6922### postScale<sup>12+</sup> 6923 6924postScale(sx: number, sy: number, px: number, py: number): void 6925 6926将矩阵设置为矩阵右乘围绕轴心点按一定缩放系数缩放后的单位矩阵后得到的矩阵。 6927 6928**系统能力**:SystemCapability.Graphics.Drawing 6929 6930**参数:** 6931 6932| 参数名 | 类型 | 必填 | 说明 | 6933| --------------- | ------- | ---- | ----------------------------------------------------------- | 6934| sx | number | 是 | x轴方向缩放系数,为负数时可看作是先关于y = px作镜像翻转后再进行缩放,该参数为浮点数。 | 6935| sy | number | 是 | y轴方向缩放系数,为负数时可看作是先关于x = py作镜像翻转后再进行缩放,该参数为浮点数。 | 6936| px | number | 是 | 缩放中心点的横坐标,该参数为浮点数。 | 6937| py | number | 是 | 缩放中心点的纵坐标,该参数为浮点数。 | 6938 6939**错误码:** 6940 6941以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 6942 6943| 错误码ID | 错误信息 | 6944| ------- | --------------------------------------------| 6945| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. | 6946 6947**示例:** 6948 6949```ts 6950import {drawing} from "@kit.ArkGraphics2D" 6951let matrix = new drawing.Matrix(); 6952let sx: number = 2; 6953let sy: number = 0.5; 6954let px: number = 1; 6955let py: number = 1; 6956matrix.postScale(sx, sy, px, py); 6957console.info("matrix= "+matrix.getAll().toString()); 6958``` 6959 6960### postTranslate<sup>12+</sup> 6961 6962postTranslate(dx: number, dy: number): void 6963 6964将矩阵设置为矩阵右乘平移一定距离后的单位矩阵后得到的矩阵。 6965 6966**系统能力**:SystemCapability.Graphics.Drawing 6967 6968**参数:** 6969 6970| 参数名 | 类型 | 必填 | 说明 | 6971| --------------- | ------- | ---- | ----------------------------------------------------------- | 6972| dx | number | 是 | x轴方向平移距离,正数表示往x轴正方向平移,负数表示往x轴负方向平移,该参数为浮点数。 | 6973| dy | number | 是 | y轴方向平移距离,正数表示往y轴正方向平移,负数表示往y轴负方向平移,该参数为浮点数。 | 6974 6975**错误码:** 6976 6977以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 6978 6979| 错误码ID | 错误信息 | 6980| ------- | --------------------------------------------| 6981| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. | 6982 6983**示例:** 6984 6985```ts 6986import {drawing} from "@kit.ArkGraphics2D" 6987let matrix = new drawing.Matrix(); 6988let dx: number = 3; 6989let dy: number = 4; 6990matrix.postTranslate(dx, dy); 6991console.info("matrix= "+matrix.getAll().toString()); 6992``` 6993 6994### preRotate<sup>12+</sup> 6995 6996preRotate(degree: number, px: number, py: number): void 6997 6998将矩阵设置为矩阵左乘围绕轴心点旋转一定角度的单位矩阵后得到的矩阵。 6999 7000**系统能力**:SystemCapability.Graphics.Drawing 7001 7002**参数:** 7003 7004| 参数名 | 类型 | 必填 | 说明 | 7005| --------------- | ------- | ---- | ----------------------------------------------------------- | 7006| degree | number | 是 | 旋转角度,单位为度。正数表示顺时针旋转,负数表示逆时针旋转,该参数为浮点数。 | 7007| px | number | 是 | 旋转中心点的横坐标,该参数为浮点数。 | 7008| py | number | 是 | 旋转中心点的纵坐标,该参数为浮点数。 | 7009 7010**错误码:** 7011 7012以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 7013 7014| 错误码ID | 错误信息 | 7015| ------- | --------------------------------------------| 7016| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. | 7017 7018**示例:** 7019 7020```ts 7021import {drawing} from "@kit.ArkGraphics2D" 7022let matrix = new drawing.Matrix(); 7023let degree: number = 2; 7024let px: number = 3; 7025let py: number = 4; 7026matrix.preRotate(degree, px, py); 7027console.info("matrix= "+matrix.getAll().toString()); 7028``` 7029 7030### preScale<sup>12+</sup> 7031 7032preScale(sx: number, sy: number, px: number, py: number): void 7033 7034将矩阵设置为矩阵左乘围绕轴心点按一定缩放系数缩放后的单位矩阵后得到的矩阵。 7035 7036**系统能力**:SystemCapability.Graphics.Drawing 7037 7038**参数:** 7039 7040| 参数名 | 类型 | 必填 | 说明 | 7041| --------------- | ------- | ---- | ----------------------------------------------------------- | 7042| sx | number | 是 | x轴方向缩放系数,为负数时可看作是先关于y = px作镜像翻转后再进行缩放,该参数为浮点数。 | 7043| sy | number | 是 | y轴方向缩放系数,为负数时可看作是先关于x = py作镜像翻转后再进行缩放,该参数为浮点数。 | 7044| px | number | 是 | 轴心点横坐标,该参数为浮点数。 | 7045| py | number | 是 | 轴心点纵坐标,该参数为浮点数。 | 7046 7047**错误码:** 7048 7049以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 7050 7051| 错误码ID | 错误信息 | 7052| ------- | --------------------------------------------| 7053| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. | 7054 7055**示例:** 7056 7057```ts 7058import {drawing} from "@kit.ArkGraphics2D" 7059let matrix = new drawing.Matrix(); 7060let sx: number = 2; 7061let sy: number = 0.5; 7062let px: number = 1; 7063let py: number = 1; 7064matrix.preScale(sx, sy, px, py); 7065console.info("matrix"+matrix.getAll().toString()); 7066``` 7067 7068### preTranslate<sup>12+</sup> 7069 7070preTranslate(dx: number, dy: number): void 7071 7072将矩阵设置为矩阵左乘平移一定距离后的单位矩阵后得到的矩阵。 7073 7074**系统能力**:SystemCapability.Graphics.Drawing 7075 7076**参数:** 7077 7078| 参数名 | 类型 | 必填 | 说明 | 7079| --------------- | ------- | ---- | ----------------------------------------------------------- | 7080| dx | number | 是 | x轴方向平移距离,正数表示往x轴正方向平移,负数表示往x轴负方向平移,该参数为浮点数。 | 7081| dy | number | 是 | y轴方向平移距离,正数表示往y轴正方向平移,负数表示往y轴负方向平移,该参数为浮点数。 | 7082 7083**错误码:** 7084 7085以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 7086 7087| 错误码ID | 错误信息 | 7088| ------- | --------------------------------------------| 7089| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. | 7090 7091**示例:** 7092 7093```ts 7094import {drawing} from "@kit.ArkGraphics2D" 7095let matrix = new drawing.Matrix(); 7096let dx: number = 3; 7097let dy: number = 4; 7098matrix.preTranslate(dx, dy); 7099console.info("matrix"+matrix.getAll().toString()); 7100``` 7101 7102### reset<sup>12+</sup> 7103 7104reset(): void 7105 7106重置当前矩阵为单位矩阵。 7107 7108**系统能力**:SystemCapability.Graphics.Drawing 7109 7110**示例:** 7111 7112```ts 7113import {drawing} from "@kit.ArkGraphics2D" 7114let matrix = new drawing.Matrix(); 7115matrix.postScale(2, 3, 4, 5); 7116matrix.reset(); 7117console.info("matrix= "+matrix.getAll().toString()); 7118``` 7119 7120### mapPoints<sup>12+</sup> 7121 7122mapPoints(src: Array\<common2D.Point>): Array\<common2D.Point> 7123 7124通过矩阵变换将源点数组映射到目标点数组。 7125 7126**系统能力**:SystemCapability.Graphics.Drawing 7127 7128**参数:** 7129 7130| 参数名 | 类型 | 必填 | 说明 | 7131| --------------- | ------- | ---- | ----------------------------------------------------------- | 7132| src | Array\<[common2D.Point](js-apis-graphics-common2D.md#point)> | 是 | 源点数组。 | 7133 7134**返回值:** 7135 7136| 类型 | 说明 | 7137| --------------------- | -------------- | 7138| Array\<[common2D.Point](js-apis-graphics-common2D.md#point)> | 源点数组经矩阵变换后的点数组。 | 7139 7140**错误码:** 7141 7142以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 7143 7144| 错误码ID | 错误信息 | 7145| ------- | --------------------------------------------| 7146| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. | 7147 7148**示例:** 7149 7150```ts 7151import {drawing,common2D} from "@kit.ArkGraphics2D" 7152let src: Array<common2D.Point> = []; 7153src.push({x: 15, y: 20}); 7154src.push({x: 20, y: 15}); 7155src.push({x: 30, y: 10}); 7156let matrix = new drawing.Matrix(); 7157let dst: Array<common2D.Point> = matrix.mapPoints(src); 7158console.info("matrix= src: "+JSON.stringify(src)); 7159console.info("matrix= dst: "+JSON.stringify(dst)); 7160``` 7161 7162### getAll<sup>12+</sup> 7163 7164getAll(): Array\<number> 7165 7166获取矩阵所有元素值。 7167 7168**系统能力**:SystemCapability.Graphics.Drawing 7169 7170**返回值:** 7171 7172| 类型 | 说明 | 7173| --------------------- | -------------- | 7174| Array\<number> | 存储矩阵元素值的浮点数组,长度为9。 | 7175 7176**示例:** 7177 7178```ts 7179import {drawing} from "@kit.ArkGraphics2D" 7180let matrix = new drawing.Matrix(); 7181console.info("matrix "+ matrix.getAll()); 7182``` 7183 7184### mapRect<sup>12+</sup> 7185 7186mapRect(dst: common2D.Rect, src: common2D.Rect): boolean 7187 7188将目标矩形设置为源矩形通过矩阵变换后的图形的外接矩形。如下图所示,蓝色矩形为源矩形,假设黄色矩形为源矩形通过矩阵变换形成的图形,此时黄色矩形的边不与坐标轴平行,无法使用矩形对象表示,因此,将目标矩形设置为黄色矩形的外接矩形,即黑色矩形。 7189 7190 7191 7192**系统能力**:SystemCapability.Graphics.Drawing 7193 7194**参数:** 7195 7196| 参数名 | 类型 | 必填 | 说明 | 7197| --------------- | ------- | ---- | ----------------------------------------------------------- | 7198| dst | [common2D.Rect](js-apis-graphics-common2D.md#rect) | 是 | 目标矩形对象,用于存储源矩形经矩阵变换后的的图形的外接矩形。 | 7199| src |[common2D.Rect](js-apis-graphics-common2D.md#rect) | 是 | 源矩形对象。 | 7200 7201**返回值:** 7202 7203| 类型 | 说明 | 7204| --------------------- | -------------- | 7205| boolean | 返回源矩形经过矩阵变换后的图形是否仍然是矩形的结果,true表示是矩形,false表示不是矩形。 | 7206 7207**错误码:** 7208 7209以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 7210 7211| 错误码ID | 错误信息 | 7212| ------- | --------------------------------------------| 7213| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. | 7214 7215**示例:** 7216 7217```ts 7218import {drawing,common2D} from "@kit.ArkGraphics2D" 7219let dst: common2D.Rect = { left: 100, top: 20, right: 130, bottom: 60 }; 7220let src: common2D.Rect = { left: 100, top: 80, right: 130, bottom: 120 }; 7221let matrix = new drawing.Matrix(); 7222if (matrix.mapRect(dst, src)) { 7223 console.info("matrix= dst "+JSON.stringify(dst)); 7224} 7225``` 7226 7227### setRectToRect<sup>12+</sup> 7228 7229setRectToRect(src: common2D.Rect, dst: common2D.Rect, scaleToFit: ScaleToFit): boolean 7230 7231将当前矩阵设置为能使源矩形映射到目标矩形的变换矩阵。 7232 7233**系统能力**:SystemCapability.Graphics.Drawing 7234 7235**参数:** 7236 7237| 参数名 | 类型 | 必填 | 说明 | 7238| --------------- | ------- | ---- | ----------------------------------------------------------- | 7239| src | [common2D.Rect](js-apis-graphics-common2D.md#rect) | 是 | 源矩形。 | 7240| dst | [common2D.Rect](js-apis-graphics-common2D.md#rect) | 是 | 目标矩形。 | 7241| scaleToFit | [ScaleToFit](#scaletofit12) | 是 | 源矩形到目标矩形的映射方式。 | 7242 7243**返回值:** 7244 7245| 类型 | 说明 | 7246| --------------------- | -------------- | 7247| boolean | 返回矩阵是否可以表示矩形之间的映射,true表示可以,false表示不可以。特别地,如果源矩形的宽高任意一个小于等于0,则返回false,并将矩阵设置为单位矩阵;如果目标矩形的宽高任意一个小于等于0,则返回true,并将矩阵设置为除透视缩放系数为1外其余值皆为0的矩阵。 | 7248 7249**错误码:** 7250 7251以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 7252 7253| 错误码ID | 错误信息 | 7254| ------- | --------------------------------------------| 7255| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types;3.Parameter verification failed. | 7256 7257**示例:** 7258 7259```ts 7260import {drawing,common2D} from "@kit.ArkGraphics2D" 7261let src: common2D.Rect = { left: 100, top: 100, right: 300, bottom: 300 }; 7262let dst: common2D.Rect = { left: 200, top: 200, right: 600, bottom: 600 }; 7263let scaleToFit: drawing.ScaleToFit = drawing.ScaleToFit.FILL_SCALE_TO_FIT 7264let matrix = new drawing.Matrix(); 7265if (matrix.setRectToRect(src, dst, scaleToFit)) { 7266 console.info("matrix"+matrix.getAll().toString()); 7267} 7268``` 7269 7270### setPolyToPoly<sup>12+</sup> 7271 7272setPolyToPoly(src: Array\<common2D.Point>, dst: Array\<common2D.Point>, count: number): boolean 7273 7274将当前矩阵设置为能使源点数组映射到目标点数组的变换矩阵。 7275 7276**系统能力**:SystemCapability.Graphics.Drawing 7277 7278**参数:** 7279 7280| 参数名 | 类型 | 必填 | 说明 | 7281| --------------- | ------- | ---- | ----------------------------------------------------------- | 7282| src | Array\<[common2D.Point](js-apis-graphics-common2D.md#point)> | 是 | 源点数组,长度必须为count。 | 7283| dst | Array\<[common2D.Point](js-apis-graphics-common2D.md#point)> | 是 | 目标点数组,长度必须为count。 | 7284| count | number | 是 | 在src和dst点的数量,该参数为整数。 | 7285 7286**返回值:** 7287 7288| 类型 | 说明 | 7289| --------------------- | -------------- | 7290| boolean | 返回设置矩阵是否成功的结果,true表示设置成功,false表示设置失败。 | 7291 7292**错误码:** 7293 7294以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 7295 7296| 错误码ID | 错误信息 | 7297| ------- | --------------------------------------------| 7298| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. | 7299 7300**示例:** 7301 7302```ts 7303import {drawing,common2D} from "@kit.ArkGraphics2D" 7304let srcPoints: Array<common2D.Point> = [ {x: 10, y: 20}, {x: 200, y: 150} ]; 7305let dstPoints: Array<common2D.Point> = [{ x:0, y: 10 }, { x:300, y: 600 }]; 7306let matrix = new drawing.Matrix(); 7307if (matrix.setPolyToPoly(srcPoints, dstPoints, 2)) { 7308 console.info("matrix"+matrix.getAll().toString()); 7309} 7310``` 7311 7312## RoundRect<sup>12+</sup> 7313 7314圆角矩形对象。 7315 7316### constructor<sup>12+</sup> 7317 7318constructor(rect: common2D.Rect, xRadii: number, yRadii: number) 7319 7320构造一个圆角矩形对象,当且仅当xRadii和yRadii均大于0时,圆角生效,否则只会构造一个矩形。 7321 7322**系统能力:** SystemCapability.Graphics.Drawing 7323 7324**参数:** 7325 7326| 参数名 | 类型 | 必填 | 说明 | 7327| ----------- | ---------------------------------------- | ---- | ------------------- | 7328| rect | [common2D.Rect](js-apis-graphics-common2D.md#rect) | 是 | 需要创建的圆角矩形区域。 | 7329| xRadii | number | 是 | X轴上的圆角半径,该参数为浮点数,小于等于0时无效。 | 7330| yRadii | number | 是 | Y轴上的圆角半径,该参数为浮点数,小于等于0时无效。 | 7331 7332**错误码:** 7333 7334以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 7335 7336| 错误码ID | 错误信息 | 7337| ------- | --------------------------------------------| 7338| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. | 7339 7340**示例:** 7341 7342```ts 7343import { common2D, drawing } from '@kit.ArkGraphics2D'; 7344 7345let rect: common2D.Rect = {left : 100, top : 100, right : 500, bottom : 300}; 7346let roundRect = new drawing.RoundRect(rect, 50, 50); 7347``` 7348### setCorner<sup>12+</sup> 7349 7350setCorner(pos: CornerPos, x: number, y: number): void 7351 7352用于设置圆角矩形中指定圆角位置的圆角半径。 7353 7354**系统能力:** SystemCapability.Graphics.Drawing 7355 7356**参数:** 7357 7358| 参数名 | 类型 | 必填 | 说明 | 7359| -------- | -------------------------------------------- | ---- | ------------------------------- | 7360| pos | [CornerPos](#cornerpos12) | 是 | 圆角位置。 | 7361| x | number | 是 | x轴方向的圆角半径,该参数为浮点数。 | 7362| y | number | 是 | y轴方向的圆角半径,该参数为浮点数。 | 7363 7364**错误码:** 7365 7366以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 7367 7368| 错误码ID | 错误信息 | 7369| ------- | --------------------------------------------| 7370| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types;3.Parameter verification failed. | 7371 7372**示例:** 7373 7374```ts 7375import { drawing } from '@kit.ArkGraphics2D'; 7376let roundRect : drawing.RoundRect = new drawing.RoundRect({left: 0, top: 0, right: 300, bottom: 300}, 50, 50); 7377roundRect.setCorner(drawing.CornerPos.TOP_LEFT_POS, 150, 150); 7378``` 7379 7380### getCorner<sup>12+</sup> 7381 7382getCorner(pos: CornerPos): common2D.Point 7383 7384获取圆角矩形中指定圆角位置的圆角半径。 7385 7386**系统能力:** SystemCapability.Graphics.Drawing 7387 7388**参数:** 7389 7390| 参数名 | 类型 | 必填 | 说明 | 7391| -------- | -------------------------------------------- | ---- | ------------------------------- | 7392| pos | [CornerPos](#cornerpos12) | 是 | 圆角位置。 | 7393 7394**返回值:** 7395 7396| 类型 | 说明 | 7397| --------------------- | -------------- | 7398| [common2D.Point](js-apis-graphics-common2D.md#point) | 返回一个点,其横坐标表示圆角x轴方向上的半径,纵坐标表示y轴方向上的半径。 | 7399 7400**错误码:** 7401 7402以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 7403 7404| 错误码ID | 错误信息 | 7405| ------- | --------------------------------------------| 7406| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types;3.Parameter verification failed. | 7407 7408**示例:** 7409 7410```ts 7411import { drawing } from '@kit.ArkGraphics2D'; 7412let roundRect : drawing.RoundRect = new drawing.RoundRect({left: 0, top: 0, right: 300, bottom: 300}, 50, 50); 7413let cornerRadius = roundRect.getCorner(drawing.CornerPos.BOTTOM_LEFT_POS); 7414console.info("getCorner---"+cornerRadius.x) 7415console.info("getCorner---"+cornerRadius.y) 7416``` 7417 7418### offset<sup>12+</sup> 7419 7420offset(dx: number, dy: number): void 7421 7422将圆角矩形分别沿x轴方向和y轴方向平移dx,dy。 7423 7424**系统能力:** SystemCapability.Graphics.Drawing 7425 7426**参数:** 7427 7428| 参数名 | 类型 | 必填 | 说明 | 7429| -------- | -------------------------------------------- | ---- | ------------------------------- | 7430| dx | number | 是 | 表示x轴方向上的偏移量,正数表示往x轴正方向平移,负数表示往x轴负方向平移,该参数为浮点数。 | 7431| dy | number | 是 | 表示y轴方向上的偏移量,正数表示往y轴正方向平移,负数表示往y轴负方向平移,该参数为浮点数。 | 7432 7433**错误码:** 7434 7435以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 7436 7437| 错误码ID | 错误信息 | 7438| ------- | --------------------------------------------| 7439| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. | 7440 7441**示例:** 7442 7443```ts 7444import { drawing } from '@kit.ArkGraphics2D'; 7445let roundRect : drawing.RoundRect = new drawing.RoundRect({left: 0, top: 0, right: 300, bottom: 300}, 50, 50); 7446roundRect.offset(100, 100); 7447``` 7448 7449## Region<sup>12+</sup> 7450 7451区域对象,用于描述所绘制图形的区域信息。 7452 7453### isPointContained<sup>12+</sup> 7454 7455isPointContained(x: number, y: number) : boolean 7456 7457用于判断测试点是否在区域内。 7458 7459**系统能力:** SystemCapability.Graphics.Drawing 7460 7461**参数:** 7462 7463| 参数名 | 类型 | 必填 | 说明 | 7464| ------ | ------ | ---- | ----------------------- | 7465| x | number | 是 | 测试点的x轴坐标。该参数必须为整数。当输入的数字带小数时,小数部分会被舍去。 | 7466| y | number | 是 | 测试点的y轴坐标。该参数必须为整数。当输入的数字带小数时,小数部分会被舍去。 | 7467 7468**返回值:** 7469 7470| 类型 | 说明 | 7471| ------- | -------------- | 7472| boolean | 返回测试点是否在区域内的结果。true表示测试点在区域内,false表示测试点不在区域内。 | 7473 7474**错误码:** 7475 7476以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 7477 7478| 错误码ID | 错误信息 | 7479| ------- | --------------------------------------------| 7480| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. | 7481 7482**示例:** 7483 7484```ts 7485import { RenderNode } from '@kit.ArkUI'; 7486class DrawingRenderNode extends RenderNode { 7487 draw(context : DrawContext) { 7488 const canvas = context.canvas; 7489 const pen = new drawing.Pen(); 7490 pen.setColor({ alpha: 255, red: 255, green: 0, blue: 0 }); 7491 pen.setStrokeWidth(10); 7492 canvas.attachPen(pen); 7493 let region = new drawing.Region(); 7494 region.setRect(100, 100, 400, 400); 7495 let flag: boolean = false; 7496 flag = region.isPointContained(200,200); 7497 console.info("region isPointContained : " + flag); 7498 canvas.drawPoint(200,200); 7499 canvas.drawRegion(region); 7500 canvas.detachPen(); 7501 } 7502} 7503``` 7504 7505### isRegionContained<sup>12+</sup> 7506 7507isRegionContained(other: Region) : boolean 7508 7509用于判断其他区域是否在当前区域内。 7510 7511**系统能力:** SystemCapability.Graphics.Drawing 7512 7513**参数:** 7514 7515| 参数名 | 类型 | 必填 | 说明 | 7516| ------ | ------ | ---- | ----------------------- | 7517| other | [Region](#region12) | 是 | 区域对象。 | 7518 7519**返回值:** 7520 7521| 类型 | 说明 | 7522| ------- | -------------- | 7523| boolean | 返回其他区域是否在当前区域内的结果。true表示其他区域在当前区域内,false表示其他区域不在当前区域内。 | 7524 7525**错误码:** 7526 7527以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 7528 7529| 错误码ID | 错误信息 | 7530| ------- | --------------------------------------------| 7531| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. | 7532 7533**示例:** 7534 7535```ts 7536import { RenderNode } from '@kit.ArkUI'; 7537class DrawingRenderNode extends RenderNode { 7538 draw(context : DrawContext) { 7539 const canvas = context.canvas; 7540 const pen = new drawing.Pen(); 7541 pen.setColor({ alpha: 255, red: 255, green: 0, blue: 0 }); 7542 pen.setStrokeWidth(10); 7543 canvas.attachPen(pen); 7544 let region = new drawing.Region(); 7545 let other = new drawing.Region(); 7546 region.setRect(100, 100, 400, 400); 7547 other.setRect(150, 150, 250 ,250); 7548 let flag: boolean = false; 7549 flag = region.isRegionContained(other); 7550 console.info("region isRegionContained : " + flag); 7551 canvas.drawRegion(region); 7552 canvas.drawRegion(other); 7553 canvas.detachPen(); 7554 } 7555} 7556``` 7557 7558### op<sup>12+</sup> 7559 7560op(region: Region, regionOp: RegionOp) : boolean 7561 7562用于将当前区域与指定区域进行指定运算操作,并将当前区域替换为运算结果。 7563 7564**系统能力:** SystemCapability.Graphics.Drawing 7565 7566**参数:** 7567 7568| 参数名 | 类型 | 必填 | 说明 | 7569| ------ | ------ | ---- | ----------------------- | 7570| region | [Region](#region12) | 是 | 区域对象。 | 7571| regionOp | [RegionOp](#regionop12) | 是 | 区域合并操作类型。 | 7572 7573**返回值:** 7574 7575| 类型 | 说明 | 7576| ------- | -------------- | 7577| boolean | 返回区域运算结果是否成功替换当前区域。true表示区域运算结果替换当前区域成功,false表示区域运算结果替换当前区域失败。 | 7578 7579**错误码:** 7580 7581以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 7582 7583| 错误码ID | 错误信息 | 7584| ------- | --------------------------------------------| 7585| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. | 7586 7587**示例:** 7588 7589```ts 7590import { RenderNode } from '@kit.ArkUI'; 7591class DrawingRenderNode extends RenderNode { 7592 draw(context : DrawContext) { 7593 const canvas = context.canvas; 7594 const pen = new drawing.Pen(); 7595 pen.setColor({ alpha: 255, red: 255, green: 0, blue: 0 }); 7596 pen.setStrokeWidth(10); 7597 canvas.attachPen(pen); 7598 let region = new drawing.Region(); 7599 region.setRect(200, 200, 400, 400); 7600 let othregion = new drawing.Region(); 7601 othregion.setRect(110, 110, 240, 240); 7602 let flag: boolean = false; 7603 flag = region.op(othregion,drawing.RegionOp.REPLACE); 7604 console.info("region op : " + flag); 7605 canvas.drawRegion(region); 7606 canvas.detachPen(); 7607 } 7608} 7609``` 7610 7611### quickReject<sup>12+</sup> 7612 7613quickReject(left: number, top: number, right: number, bottom: number) : boolean 7614 7615用于快速判断矩形和区域是否不相交,实际上比较的是矩形和区域的外接矩形是否不相交,因此会有误差。 7616 7617**系统能力:** SystemCapability.Graphics.Drawing 7618 7619**参数:** 7620 7621| 参数名 | 类型 | 必填 | 说明 | 7622| ------ | ------ | ---- | ----------------------- | 7623| left | number | 是 | 矩形区域的左侧位置。该参数必须为整数。当输入的数字带小数时,小数部分会被舍去。 | 7624| top | number | 是 | 矩形区域的顶部位置。该参数必须为整数。当输入的数字带小数时,小数部分会被舍去。 | 7625| right | number | 是 | 矩形区域的右侧位置。该参数必须为整数。当输入的数字带小数时,小数部分会被舍去。 | 7626| bottom | number | 是 | 矩形区域的底部位置。该参数必须为整数。当输入的数字带小数时,小数部分会被舍去。 | 7627 7628**返回值:** 7629 7630| 类型 | 说明 | 7631| ------- | -------------- | 7632| boolean | 返回矩形是否与区域不相交的结果。true表示矩形与区域不相交,false表示矩形与区域相交。 | 7633 7634**错误码:** 7635 7636以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 7637 7638| 错误码ID | 错误信息 | 7639| ------- | --------------------------------------------| 7640| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. | 7641 7642**示例:** 7643 7644```ts 7645import { RenderNode } from '@kit.ArkUI'; 7646class DrawingRenderNode extends RenderNode { 7647 draw(context : DrawContext) { 7648 const canvas = context.canvas; 7649 const pen = new drawing.Pen(); 7650 pen.setColor({ alpha: 255, red: 255, green: 0, blue: 0 }); 7651 pen.setStrokeWidth(10); 7652 canvas.attachPen(pen); 7653 let region = new drawing.Region(); 7654 region.setRect(100, 100, 400, 400); 7655 let flag: boolean = false; 7656 flag = region.quickReject(50, 50, 70, 70); 7657 console.info("region quickReject : " + flag); 7658 canvas.drawRegion(region); 7659 canvas.detachPen(); 7660 } 7661} 7662``` 7663 7664### setPath<sup>12+</sup> 7665 7666setPath(path: Path, clip: Region) : boolean 7667 7668设置一个与裁剪区域内路径的轮廓相匹配的区域。 7669 7670**系统能力:** SystemCapability.Graphics.Drawing 7671 7672**参数:** 7673 7674| 参数名 | 类型 | 必填 | 说明 | 7675| ------ | ------ | ---- | ----------------------- | 7676| path | [Path](#path) | 是 | 路径对象。 | 7677| clip | [Region](#region12) | 是 | 区域对象。 | 7678 7679**返回值:** 7680 7681| 类型 | 说明 | 7682| ------- | -------------- | 7683| boolean | 返回是否成功设置一个与裁剪区域内路径的轮廓相匹配的区域。true表示设置成功,false表示设置失败。 | 7684 7685**错误码:** 7686 7687以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 7688 7689| 错误码ID | 错误信息 | 7690| ------- | --------------------------------------------| 7691| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. | 7692 7693**示例:** 7694 7695```ts 7696import { RenderNode } from '@kit.ArkUI'; 7697class DrawingRenderNode extends RenderNode { 7698 draw(context : DrawContext) { 7699 const canvas = context.canvas; 7700 const pen = new drawing.Pen(); 7701 pen.setColor({ alpha: 255, red: 255, green: 0, blue: 0 }); 7702 pen.setStrokeWidth(10); 7703 canvas.attachPen(pen); 7704 let region = new drawing.Region(); 7705 let path = new drawing.Path(); 7706 region.setRect(100, 100, 400, 400); 7707 path.arcTo(50, 50, 300, 300, 0, 359); 7708 let flag: boolean = false; 7709 flag = region.setPath(path,region); 7710 console.info("region setPath : " + flag); 7711 canvas.drawRegion(region); 7712 canvas.detachPen(); 7713 } 7714} 7715``` 7716 7717### setRect<sup>12+</sup> 7718 7719setRect(left: number, top: number, right: number, bottom: number) : boolean 7720 7721设置一个矩形区域。 7722 7723**系统能力:** SystemCapability.Graphics.Drawing 7724 7725**参数:** 7726 7727| 参数名 | 类型 | 必填 | 说明 | 7728| ------ | ------ | ---- | ----------------------- | 7729| left | number | 是 | 矩形区域的左侧位置。该参数必须为整数。当输入的数字带小数时,小数部分会被舍去。 | 7730| top | number | 是 | 矩形区域的顶部位置。该参数必须为整数。当输入的数字带小数时,小数部分会被舍去。 | 7731| right | number | 是 | 矩形区域的右侧位置。该参数必须为整数。当输入的数字带小数时,小数部分会被舍去。 | 7732| bottom | number | 是 | 矩形区域的底部位置。该参数必须为整数。当输入的数字带小数时,小数部分会被舍去。 | 7733 7734**返回值:** 7735 7736| 类型 | 说明 | 7737| ------- | -------------- | 7738| boolean | 返回设置矩形区域是否成功的结果。true表示设置矩形区域成功,false表示设置矩形区域失败。 | 7739 7740**错误码:** 7741 7742以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 7743 7744| 错误码ID | 错误信息 | 7745| ------- | --------------------------------------------| 7746| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. | 7747 7748**示例:** 7749 7750```ts 7751import { RenderNode } from '@kit.ArkUI'; 7752class DrawingRenderNode extends RenderNode { 7753 draw(context : DrawContext) { 7754 const canvas = context.canvas; 7755 const pen = new drawing.Pen(); 7756 pen.setColor({ alpha: 255, red: 255, green: 0, blue: 0 }); 7757 pen.setStrokeWidth(10); 7758 canvas.attachPen(pen); 7759 let region = new drawing.Region(); 7760 let flag: boolean = false; 7761 flag = region.setRect(50, 50, 300, 300); 7762 console.info("region setRect : " + flag); 7763 canvas.drawRegion(region); 7764 canvas.detachPen(); 7765 } 7766} 7767``` 7768 7769## TileMode<sup>12+</sup> 7770 7771着色器效果平铺模式的枚举。 7772 7773**系统能力**:SystemCapability.Graphics.Drawing 7774 7775| 名称 | 值 | 说明 | 7776| ---------------------- | ---- | ------------------------------ | 7777| CLAMP | 0 | 如果着色器效果超出其原始边界,剩余区域使用着色器的边缘颜色填充。 | 7778| REPEAT | 1 | 在水平和垂直方向上重复着色器效果。 | 7779| MIRROR | 2 | 在水平和垂直方向上重复着色器效果,交替镜像图像,以便相邻图像始终接合。 | 7780| DECAL | 3 | 仅在其原始边界内渲染着色器效果。| 7781 7782## ShaderEffect<sup>12+</sup> 7783 7784着色器。画刷和画笔设置着色器后,会使用着色器效果而不是颜色属性去绘制,但此时画笔和画刷的透明度属性仍然生效。 7785 7786### createColorShader<sup>12+</sup> 7787 7788static createColorShader(color: number): ShaderEffect 7789 7790创建具有单一颜色的着色器。 7791 7792**系统能力:** SystemCapability.Graphics.Drawing 7793 7794**参数:** 7795 7796| 参数名 | 类型 | 必填 | 说明 | 7797| ------ | -------------------------------------------------- | ---- | -------------- | 7798| color | number | 是 | 表示着色器的ARGB格式颜色,该参数为32位无符号整数。 | 7799 7800**返回值:** 7801 7802| 类型 | 说明 | 7803| ------- | ------------------------- | 7804| [ShaderEffect](#shadereffect12) | 返回具有单一颜色的着色器对象。 | 7805 7806**错误码:** 7807 7808以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 7809 7810| 错误码ID | 错误信息 | 7811| ------- | --------------------------------------------| 7812| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. | 7813 7814**示例:** 7815 7816```ts 7817import { drawing } from '@kit.ArkGraphics2D'; 7818 7819let shaderEffect = drawing.ShaderEffect.createColorShader(0xFFFF0000); 7820``` 7821 7822### createLinearGradient<sup>12+</sup> 7823 7824static createLinearGradient(startPt: common2D.Point, endPt: common2D.Point, colors: Array 7825\<number>, mode: TileMode, pos?: Array\<number> | null, matrix?: Matrix | null): ShaderEffect 7826 7827创建着色器,在两个指定点之间生成线性渐变。 7828 7829**系统能力:** SystemCapability.Graphics.Drawing 7830 7831**参数:** 7832 7833| 参数名 | 类型 | 必填 | 说明 | 7834| ------ | -------------------------------------------------- | ---- | -------------- | 7835| startPt | [common2D.Point](js-apis-graphics-common2D.md#point) | 是 | 表示渐变的起点。 | 7836| endPt | [common2D.Point](js-apis-graphics-common2D.md#point) | 是 | 表示渐变的终点。 | 7837| colors | Array\<number> | 是 | 表示在两个点之间分布的颜色数组,数组中的值为32位(ARGB)无符号整数。 | 7838| mode | [TileMode](#tilemode12) | 是 | 着色器效果平铺模式。 | 7839| pos | Array\<number> \|null| 否 | 表示每种对应颜色在颜色数组中的相对位置。数组长度需和colors保持一致,数组的首个元素应当是0.0,末尾元素应当是1.0,中间的元素应当在0与1之间并且逐下标递增,表示colors中每个对应颜色的相对位置。默认为null,表示颜色均匀分布在起点和终点之间。 | 7840| matrix | [Matrix](#matrix12) \| null | 否 | 矩阵对象,用于对着色器做矩阵变换。默认为null,表示单位矩阵。 | 7841 7842 7843 7844如上图是设置颜色数组为红绿蓝,位置数组为0.0,0.75,1.0后的显示效果。三角下标即为对应的颜色所在起始点和终点之间的相对位置,颜色与颜色之间使用渐变填充。 7845 7846**返回值:** 7847 7848| 类型 | 说明 | 7849| ------- | ------------------------- | 7850| [ShaderEffect](#shadereffect12) | 返回创建的着色器对象。 | 7851 7852**错误码:** 7853 7854以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 7855 7856| 错误码ID | 错误信息 | 7857| ------- | --------------------------------------------| 7858| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types; 3. Parameter verification failed. | 7859 7860**示例:** 7861 7862```ts 7863import { common2D,drawing } from '@kit.ArkGraphics2D'; 7864 7865let startPt: common2D.Point = { x: 100, y: 100 }; 7866let endPt: common2D.Point = { x: 300, y: 300 }; 7867let shaderEffect =drawing.ShaderEffect.createLinearGradient(startPt, endPt, [0xFF00FF00, 0xFFFF0000], drawing.TileMode.REPEAT); 7868``` 7869 7870### createRadialGradient<sup>12+</sup> 7871 7872static createRadialGradient(centerPt: common2D.Point, radius: number, colors: Array\<number>, mode: TileMode, pos?: Array\<number> | null, matrix?: Matrix | null): ShaderEffect; 7873 7874创建着色器,使用给定圆心和半径生成径向渐变。从圆心到圆边界,颜色由内到外生成圆形渐变(从圆心向外一圈圈扩散)称为径向渐变。 7875 7876**系统能力:** SystemCapability.Graphics.Drawing 7877 7878**参数:** 7879 7880| 参数名 | 类型 | 必填 | 说明 | 7881| ------ | -------------------------------------------------- | ---- | -------------- | 7882| centerPt | [common2D.Point](js-apis-graphics-common2D.md#point) | 是 | 表示渐变的圆心。 | 7883| radius | number | 是 | 表示渐变的半径,小于等于0时无效,该参数为浮点数。 | 7884| colors | Array\<number> | 是 | 表示在圆心和圆边界之间分布的颜色数组,数组中的值为32位(ARGB)无符号整数。 | 7885| mode | [TileMode](#tilemode12) | 是 | 着色器效果平铺模式。 | 7886| pos | Array\<number> \| null | 否 | 表示每种对应颜色在颜色数组中的相对位置。数组长度需和colors保持一致,数组的首个元素应当是0.0,末尾元素应当是1.0,中间的元素应当在0与1之间并且逐下标递增,表示colors中每个对应颜色的相对位置。默认为null,表示颜色均匀分布在圆心和圆边界之间。 | 7887| matrix | [Matrix](#matrix12) \| null | 否 | 矩阵对象,用于对着色器做矩阵变换。默认为null,表示单位矩阵。 | 7888 7889 7890 7891如上图是设置颜色数组为红绿蓝,位置数组为0.0,0.75,1.0后的显示效果。三角下标即为对应的颜色所在圆心和圆边界之间的相对位置,颜色与颜色之间使用渐变填充。 7892 7893**返回值:** 7894 7895| 类型 | 说明 | 7896| ------- | ------------------------- | 7897| [ShaderEffect](#shadereffect12) | 返回创建的着色器对象。 | 7898 7899**错误码:** 7900 7901以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 7902 7903| 错误码ID | 错误信息 | 7904| ------- | --------------------------------------------| 7905| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types; 3. Parameter verification failed. | 7906 7907**示例:** 7908 7909```ts 7910import { common2D,drawing } from '@kit.ArkGraphics2D'; 7911 7912let centerPt: common2D.Point = { x: 100, y: 100 }; 7913let shaderEffect = drawing.ShaderEffect.createRadialGradient(centerPt, 100, [0xFF00FF00, 0xFFFF0000], drawing.TileMode.REPEAT); 7914``` 7915 7916### createSweepGradient<sup>12+</sup> 7917 7918static createSweepGradient(centerPt: common2D.Point, colors: Array\<number>, 7919 mode: TileMode, startAngle: number, endAngle: number, pos?: Array\<number> | null, 7920 matrix?: Matrix | null): ShaderEffect; 7921 7922创建着色器,该着色器在给定中心的情况下生成扫描渐变。以给定中心为圆心,颜色在顺时针或逆时针方向上生成渐变称为扫描渐变。 7923 7924**系统能力:** SystemCapability.Graphics.Drawing 7925 7926**参数:** 7927 7928| 参数名 | 类型 | 必填 | 说明 | 7929| ------ | -------------------------------------------------- | ---- | -------------- | 7930| centerPt | [common2D.Point](js-apis-graphics-common2D.md#point) | 是 | 表示渐变的圆心。 | 7931| colors | Array\<number> | 是 | 表示在起始角度和结束角度之间分布的颜色数组,数组中的值为32位(ARGB)无符号整数。 | 7932| mode | [TileMode](#tilemode12) | 是 | 着色器效果平铺模式。 | 7933| startAngle | number | 是 | 表示扇形渐变的起始角度,单位为度。0度时为x轴正方向,正数往顺时针方向偏移,负数往逆时针方向偏移。该参数为浮点数。 | 7934| endAngle | number | 是 | 表示扇形渐变的结束角度,单位为度。0度时为x轴正方向,正数往顺时针方向偏移,负数往逆时针方向偏移。小于起始角度时无效。该参数为浮点数。 | 7935| pos | Array\<number> \| null | 否 | 表示每种对应颜色在颜色数组中的相对位置。数组长度需和colors保持一致,数组的首个元素应当是0.0,末尾元素应当是1.0,中间的元素应当在0与1之间并且逐下标递增,表示colors中每个对应颜色的相对位置。默认为null,表示颜色均匀分布在起始角度和结束角度之间。 | 7936| matrix | [Matrix](#matrix12) \| null | 否 |矩阵对象,用于对着色器做矩阵变换。默认为null,表示单位矩阵。 | 7937 7938 7939 7940如上图是设置颜色数组为红绿蓝,位置数组为0.0,0.75,1.0,起始角度设置为0度,结束角度设置为180度后的显示效果。0.0对应0度的位置,0.75对应135度的位置,1.0对应180度的位置,颜色与颜色之间使用渐变填充。 7941 7942**返回值:** 7943 7944| 类型 | 说明 | 7945| ------- | ------------------------- | 7946| [ShaderEffect](#shadereffect12) | 返回创建的着色器对象。 | 7947 7948**错误码:** 7949 7950以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 7951 7952| 错误码ID | 错误信息 | 7953| ------- | --------------------------------------------| 7954| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types; 3. Parameter verification failed. | 7955 7956**示例:** 7957 7958```ts 7959import { common2D,drawing } from '@kit.ArkGraphics2D'; 7960 7961let centerPt: common2D.Point = { x: 100, y: 100 }; 7962let shaderEffect = drawing.ShaderEffect.createSweepGradient(centerPt, [0xFF00FF00, 0xFFFF0000], drawing.TileMode.REPEAT, 100, 200); 7963``` 7964 7965### createConicalGradient<sup>12+</sup> 7966 7967static createConicalGradient(startPt: common2D.Point, startRadius: number, endPt: common2D.Point, endRadius: number, colors: Array\<number>, mode: TileMode, 7968pos?: Array\<number> | null, matrix?: Matrix | null): ShaderEffect; 7969 7970创建着色器,在给定两个圆之间生成径向渐变。 7971 7972**系统能力:** SystemCapability.Graphics.Drawing 7973 7974**参数:** 7975 7976| 参数名 | 类型 | 必填 | 说明 | 7977| ------ | -------------------------------------------------- | ---- | -------------- | 7978| startPt | [common2D.Point](js-apis-graphics-common2D.md#point) | 是 |表示渐变的起始圆的圆心。 | 7979| startRadius | number | 是 | 表示渐变的起始圆的半径,小于0时无效。该参数为浮点数。 | 7980| endPt | [common2D.Point](js-apis-graphics-common2D.md#point) | 是 | 表示渐变的结束圆的圆心。 | 7981| endRadius | number | 是 | 表示渐变的结束圆的半径,小于0时无效。该参数为浮点数。 | 7982| colors | Array\<number> | 是 | 表示在起始圆和结束圆之间分布的颜色数组,数组中的值为32位(ARGB)无符号整数。 | 7983| mode | [TileMode](#tilemode12) | 是 | 着色器效果平铺模式。 | 7984| pos | Array\<number> \| null | 否 | 表示每种对应颜色在颜色数组中的相对位置。数组长度需和colors保持一致,数组的首个元素应当是0.0,末尾元素应当是1.0,中间的元素应当在0与1之间并且逐下标递增,表示colors中每个对应颜色的相对位置。默认为null,表示颜色均匀分布在起始圆和结束圆之间。| 7985| matrix | [Matrix](#matrix12) \| null | 否 | 矩阵对象,用于对着色器做矩阵变换。默认为null,表示单位矩阵。 | 7986 7987 7988 7989如上图是设置颜色数组为红绿蓝,位置数组为0.0,0.5,1.0的绘制结果。左侧为起始圆不在结束圆内的绘制结果,右侧为起始圆在结束圆内的绘制结果。 7990 7991**返回值:** 7992 7993| 类型 | 说明 | 7994| ------- | ------------------------- | 7995| [ShaderEffect](#shadereffect12) | 返回创建的着色器对象。 | 7996 7997**错误码:** 7998 7999以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 8000 8001| 错误码ID | 错误信息 | 8002| ------- | --------------------------------------------| 8003| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types; 3. Parameter verification failed. | 8004 8005**示例:** 8006 8007```ts 8008import { common2D,drawing } from '@kit.ArkGraphics2D'; 8009 8010let startPt: common2D.Point = { x: 100, y: 100 }; 8011let endPt: common2D.Point = {x: 200, y: 200}; 8012let shaderEffect = drawing.ShaderEffect.createConicalGradient(startPt, 100, endPt, 50, [0xFF00FF00, 0xFFFF0000], drawing.TileMode.REPEAT); 8013``` 8014 8015## RegionOp<sup>12+</sup> 8016 8017两个区域合并时的操作的枚举。 8018 8019**系统能力**:SystemCapability.Graphics.Drawing 8020 8021| 名称 | 值 | 说明 | 示意图 | 8022| --------------------- | ---- | ------------------------------ | -------- | 8023| DIFFERENCE | 0 | 两个区域相减操作。 |  | 8024| INTERSECT | 1 | 两个区域相交操作。 |  | 8025| UNION | 2 | 两个区域联合操作。 |  | 8026| XOR | 3 | 两个区域异或操作。 |  | 8027| REVERSE_DIFFERENCE | 4 | 两个区域反向相减操作。 |  | 8028| REPLACE | 5 | 两个区域替换操作。 |  | 8029 8030> **说明:** 8031> 8032> 示意图展示的是以一个红色区域为基础,使用不同枚举值与另一个蓝色区域合并后获得的结果,其中绿色区域为最终得到的区域。 8033 8034## CornerPos<sup>12+</sup> 8035 8036圆角位置枚举。 8037 8038**系统能力**:SystemCapability.Graphics.Drawing 8039 8040| 名称 | 值 | 说明 | 8041| --------------------- | ---- | ------------------------------ | 8042| TOP_LEFT_POS | 0 | 左上角圆角位置。 | 8043| TOP_RIGHT_POS | 1 | 右上角圆角位置。 | 8044| BOTTOM_RIGHT_POS | 2 | 右下角圆角位置。 | 8045| BOTTOM_LEFT_POS | 3 | 左下角圆角位置。 |