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