1# @ohos.graphics.drawing (绘制模块) 2 3drawing模块提供了基本的绘制能力,如绘制矩形、圆形、点、直线、自定义Path、字体等等。 4 5> **说明:** 6> 7> - 本模块首批接口从API version 11开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。 8> 9> - 本模块采用屏幕物理像素单位px。 10> 11> - 本模块为单线程模型策略,需要调用方自行管理线程安全和上下文状态的切换。 12 13## 导入模块 14 15```ts 16import { drawing } from '@kit.ArkGraphics2D'; 17``` 18 19## BlendMode 20 21混合模式枚举。混合模式的操作会为两种颜色(源色、目标色)生成一种新的颜色。 这些操作在红、绿、蓝3个颜色通道上是相同的(透明度有另外的处理规则)。 对于这些,我们使用透明度通道作为示例,而不是单独命名每个通道。 22 23为简洁起见,我们使用以下缩写: 24 25s : source 源的缩写。 d : destination 目标的缩写。 sa : source alpha 源透明度的缩写。 da : destination alpha 目标透明度的缩写。 26 27计算结果用如下缩写表示: 28 29r : 如果4个通道(透明度、红、绿、蓝)的计算方式相同,用r表示。 ra : 如果只操作透明度通道,用ra表示。 rc : 如果操作3个颜色通道,用rc表示。 30 31以黄色矩形为源图像,蓝色圆形为目标图像,各混合模式枚举生成的效果示意图请参考下表。 32 33**系统能力:** SystemCapability.Graphics.Drawing 34 35| 名称 | 值 | 说明 | 示意图 | 36| ----------- | ---- | ------------------------------------------------------------ | -------- | 37| CLEAR | 0 | 清除模式,r = 0,设置为全透明。 |  | 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 | 叠加模式,根据目标像素的亮度,选择性地应用MULTIPLY或SCREEN模式,增强对比度。 |  | 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 | 强光模式,根据源像素的亮度,选择性地应用MULTIPLY或SCREEN模式。 |  | 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,类似于DIFFERENCE,但对比度较低。 |  | 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 | 是 | 起始的角度。角度的起始方向(0°)为x轴正方向。 | 242| sweepDeg | number | 是 | 扫描的度数,为正数时顺时针扫描,为负数时逆时针扫描。实际扫描的度数为该入参对360取模的结果。 | 243 244**错误码:** 245 246以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 247 248| 错误码ID | 错误信息 | 249| ------- | --------------------------------------------| 250| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. | 251 252**示例:** 253 254```ts 255import { drawing } from '@kit.ArkGraphics2D'; 256let path = new drawing.Path(); 257path.moveTo(10,10); 258path.arcTo(10, 15, 10, 10, 10, 10); 259``` 260 261### quadTo 262 263quadTo(ctrlX: number, ctrlY: number, endX: number, endY: number): void 264 265用于添加一条从路径最后点位置(若路径没有内容则默认为 (0, 0))到目标点位置的二阶贝塞尔圆滑曲线。 266 267**系统能力**:SystemCapability.Graphics.Drawing 268 269**参数:** 270 271| 参数名 | 类型 | 必填 | 说明 | 272| ------ | ------ | ---- | --------------------- | 273| ctrlX | number | 是 | 控制点的x坐标,该参数为浮点数。 | 274| ctrlY | number | 是 | 控制点的y坐标,该参数为浮点数。 | 275| endX | number | 是 | 目标点的x坐标,该参数为浮点数。 | 276| endY | number | 是 | 目标点的y坐标,该参数为浮点数。 | 277 278**错误码:** 279 280以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 281 282| 错误码ID | 错误信息 | 283| ------- | --------------------------------------------| 284| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. | 285 286**示例:** 287 288```ts 289import { drawing } from '@kit.ArkGraphics2D'; 290let path = new drawing.Path(); 291path.moveTo(10,10); 292path.quadTo(10, 15, 10, 10); 293``` 294 295### conicTo<sup>12+</sup> 296 297conicTo(ctrlX: number, ctrlY: number, endX: number, endY: number, weight: number): void 298 299在当前路径上添加一条路径终点(若路径没有内容则默认为 (0, 0))到目标点位置的圆锥曲线,其控制点为 (ctrlX, ctrlY),结束点为 (endX, endY)。 300 301**系统能力**:SystemCapability.Graphics.Drawing 302 303**参数:** 304 305| 参数名 | 类型 | 必填 | 说明 | 306| ------ | ------ | ---- | --------------------- | 307| ctrlX | number | 是 | 控制点的x坐标,该参数为浮点数。 | 308| ctrlY | number | 是 | 控制点的y坐标,该参数为浮点数。 | 309| endX | number | 是 | 目标点的x坐标,该参数为浮点数。 | 310| endY | number | 是 | 目标点的y坐标,该参数为浮点数。 | 311| weight | number | 是 | 表示曲线的权重,决定了曲线的形状,越大越接近控制点。若小于等于0则等同于使用[lineTo](#lineto)添加一条到结束点的线段,若为1则等同于[quadTo](#quadto),该参数为浮点数。 | 312 313**错误码:** 314 315以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 316 317| 错误码ID | 错误信息 | 318| ------- | --------------------------------------------| 319| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. | 320 321**示例:** 322 323```ts 324import { drawing } from '@kit.ArkGraphics2D'; 325 326const path = new drawing.Path(); 327path.conicTo(200, 400, 100, 200, 0); 328``` 329 330### cubicTo 331 332cubicTo(ctrlX1: number, ctrlY1: number, ctrlX2: number, ctrlY2: number, endX: number, endY: number): void 333 334用于添加一条从路径最后点位置(若路径没有内容则默认为 (0, 0))到目标点位置的三阶贝塞尔圆滑曲线。 335 336**系统能力**:SystemCapability.Graphics.Drawing 337 338**参数:** 339 340| 参数名 | 类型 | 必填 | 说明 | 341| ------ | ------ | ---- | --------------------------- | 342| ctrlX1 | number | 是 | 第一个控制点的x坐标,该参数为浮点数。 | 343| ctrlY1 | number | 是 | 第一个控制点的y坐标,该参数为浮点数。 | 344| ctrlX2 | number | 是 | 第二个控制点的x坐标,该参数为浮点数。 | 345| ctrlY2 | number | 是 | 第二个控制点的y坐标,该参数为浮点数。 | 346| endX | number | 是 | 目标点的x坐标,该参数为浮点数。 | 347| endY | number | 是 | 目标点的y坐标,该参数为浮点数。 | 348 349**错误码:** 350 351以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 352 353| 错误码ID | 错误信息 | 354| ------- | --------------------------------------------| 355| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. | 356 357**示例:** 358 359```ts 360import { drawing } from '@kit.ArkGraphics2D'; 361let path = new drawing.Path(); 362path.moveTo(10,10); 363path.cubicTo(100, 100, 80, 150, 300, 150); 364``` 365 366### rMoveTo<sup>12+</sup> 367 368rMoveTo(dx : number, dy : number): void 369 370设置一个相对于当前路径终点(若路径没有内容则默认为 (0, 0))的路径起始点位置。 371 372**系统能力**:SystemCapability.Graphics.Drawing 373 374**参数:** 375 376| 参数名 | 类型 | 必填 | 说明 | 377| ------ | ------ | ---- | ----------------------- | 378| dx | number | 是 | 路径新起始点相对于当前路径终点的x轴偏移量,正数往x轴正方向偏移,负数往x轴负方向偏移,该参数为浮点数。 | 379| dy | number | 是 | 路径新起始点相对于当前路径终点的y轴偏移量,正数往y轴正方向偏移,负数往y轴负方向偏移,该参数为浮点数。 | 380 381**错误码:** 382 383以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 384 385| 错误码ID | 错误信息 | 386| ------- | --------------------------------------------| 387| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. | 388 389**示例:** 390 391```ts 392import { drawing } from '@kit.ArkGraphics2D'; 393 394const path = new drawing.Path(); 395path.rMoveTo(10, 10); 396``` 397 398### rLineTo<sup>12+</sup> 399 400rLineTo(dx : number, dy : number): void 401 402使用相对位置在当前路径上添加一条当前路径终点(若路径没有内容则默认为 (0, 0))到目标点位置的线段。 403 404**系统能力**:SystemCapability.Graphics.Drawing 405 406**参数:** 407 408| 参数名 | 类型 | 必填 | 说明 | 409| ------ | ------ | ---- | ----------------------- | 410| dx | number | 是 | 目标点相对于当前路径终点的x轴偏移量,正数往x轴正方向偏移,负数往x轴负方向偏移,该参数为浮点数。 | 411| dy | number | 是 | 目标点相对于当前路径终点的y轴偏移量,正数往y轴正方向偏移,负数往y轴负方向偏移,该参数为浮点数。 | 412 413**错误码:** 414 415以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 416 417| 错误码ID | 错误信息 | 418| ------- | --------------------------------------------| 419| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. | 420 421**示例:** 422 423```ts 424import { drawing } from '@kit.ArkGraphics2D'; 425 426const path = new drawing.Path(); 427path.rLineTo(400, 200); 428``` 429 430### rQuadTo<sup>12+</sup> 431 432rQuadTo(dx1: number, dy1: number, dx2: number, dy2: number): void 433 434使用相对位置在当前路径上添加一条当前路径终点(若路径没有内容则默认为 (0, 0))到目标点位置的二阶贝塞尔曲线。 435 436**系统能力**:SystemCapability.Graphics.Drawing 437 438**参数:** 439 440| 参数名 | 类型 | 必填 | 说明 | 441| ------ | ------ | ---- | --------------------- | 442| dx1 | number | 是 | 控制点相对于路径终点的x轴偏移量,正数往x轴正方向偏移,负数往x轴负方向偏移,该参数为浮点数。 | 443| dy1 | number | 是 | 控制点相对于路径终点的y轴偏移量,正数往y轴正方向偏移,负数往y轴负方向偏移,该参数为浮点数。 | 444| dx2 | number | 是 | 目标点相对于路径终点的x轴偏移量,正数往x轴正方向偏移,负数往x轴负方向偏移,该参数为浮点数。 | 445| dy2 | number | 是 | 目标点相对于路径终点的y轴偏移量,正数往y轴正方向偏移,负数往y轴负方向偏移,该参数为浮点数。 | 446 447**错误码:** 448 449以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 450 451| 错误码ID | 错误信息 | 452| ------- | --------------------------------------------| 453| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. | 454 455**示例:** 456 457```ts 458import { drawing } from '@kit.ArkGraphics2D'; 459 460const path = new drawing.Path(); 461path.rQuadTo(100, 0, 0, 200); 462``` 463 464### rConicTo<sup>12+</sup> 465 466rConicTo(ctrlX: number, ctrlY: number, endX: number, endY: number, weight: number): void 467 468使用相对位置在当前路径上添加一条路径终点(若路径没有内容则默认为 (0, 0))到目标点位置的圆锥曲线。 469 470**系统能力**:SystemCapability.Graphics.Drawing 471 472**参数:** 473 474| 参数名 | 类型 | 必填 | 说明 | 475| ------ | ------ | ---- | --------------------- | 476| ctrlX | number | 是 | 控制点相对于路径终点的x轴偏移量,正数往x轴正方向偏移,负数往x轴负方向偏移,该参数为浮点数。 | 477| ctrlY | number | 是 | 控制点相对于路径终点的y轴偏移量,正数往y轴正方向偏移,负数往y轴负方向偏移,该参数为浮点数。 | 478| endX | number | 是 | 目标点相对于路径终点的x轴偏移量,正数往x轴正方向偏移,负数往x轴负方向偏移,该参数为浮点数。 | 479| endY | number | 是 | 目标点相对于路径终点的y轴偏移量,正数往y轴正方向偏移,负数往y轴负方向偏移,该参数为浮点数。 | 480| weight | number | 是 | 表示曲线的权重,决定了曲线的形状,越大越接近控制点。若小于等于0则等同于使用[rLineTo](#rlineto12)添加一条到结束点的线段,若为1则等同于[rQuadTo](#rquadto12),该参数为浮点数。 | 481 482**错误码:** 483 484以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 485 486| 错误码ID | 错误信息 | 487| ------- | --------------------------------------------| 488| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. | 489 490**示例:** 491 492```ts 493import { drawing } from '@kit.ArkGraphics2D'; 494 495const path = new drawing.Path(); 496path.rConicTo(200, 400, 100, 200, 0); 497``` 498 499### rCubicTo<sup>12+</sup> 500 501rCubicTo(ctrlX1: number, ctrlY1: number, ctrlX2: number, ctrlY2: number, endX: number, endY: number): void 502 503使用相对位置在当前路径上添加一条当前路径终点(若路径没有内容则默认为 (0, 0))到目标点位置的三阶贝塞尔曲线。 504 505**系统能力**:SystemCapability.Graphics.Drawing 506 507**参数:** 508 509| 参数名 | 类型 | 必填 | 说明 | 510| ------ | ------ | ---- | --------------------------- | 511| ctrlX1 | number | 是 | 第一个控制点相对于路径终点的x轴偏移量,正数往x轴正方向偏移,负数往x轴负方向偏移,该参数为浮点数。 | 512| ctrlY1 | number | 是 | 第一个控制点相对于路径终点的y轴偏移量,正数往y轴正方向偏移,负数往y轴负方向偏移,该参数为浮点数。 | 513| ctrlX2 | number | 是 | 第二个控制点相对于路径终点的x轴偏移量,正数往x轴正方向偏移,负数往x轴负方向偏移,该参数为浮点数。 | 514| ctrlY2 | number | 是 | 第二个控制点相对于路径终点的y轴偏移量,正数往y轴正方向偏移,负数往y轴负方向偏移,该参数为浮点数。 | 515| endX | number | 是 | 目标点相对于路径终点的x轴偏移量,正数往x轴正方向偏移,负数往x轴负方向偏移,该参数为浮点数。 | 516| endY | number | 是 | 目标点相对于路径终点的y轴偏移量,正数往y轴正方向偏移,负数往y轴负方向偏移,该参数为浮点数。 | 517 518**错误码:** 519 520以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 521 522| 错误码ID | 错误信息 | 523| ------- | --------------------------------------------| 524| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. | 525 526**示例:** 527 528```ts 529import { drawing } from '@kit.ArkGraphics2D'; 530 531const path = new drawing.Path(); 532path.rCubicTo(200, 0, 0, 200, -20, 0); 533``` 534 535### addArc<sup>12+</sup> 536 537addArc(rect: common2D.Rect, startAngle: number, sweepAngle: number): void 538 539向路径添加一段圆弧。 540当startAngle和sweepAngle同时满足以下两种情况时,添加整个椭圆而不是圆弧: 5411.startAngle对90取余接近于0; 5422.sweepAngle不在(-360, 360)区间内。 543其余情况sweepAngle会对360取余后添加圆弧。 544 545**系统能力**:SystemCapability.Graphics.Drawing 546 547**参数:** 548 549| 参数名 | 类型 | 必填 | 说明 | 550| ----------- | ---------------------------------------- | ---- | ------------------- | 551| rect | [common2D.Rect](js-apis-graphics-common2D.md#rect) | 是 | 包含弧的椭圆的矩形边界。 | 552| startAngle | number | 是 | 弧的起始角度,单位为度,0度为x轴正方向,该参数为浮点数。 | 553| sweepAngle | number | 是 | 扫描角度,单位为度。正数表示顺时针方向,负数表示逆时针方向,该参数为浮点数。 | 554 555**错误码:** 556 557以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 558 559| 错误码ID | 错误信息 | 560| ------- | --------------------------------------------| 561| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. | 562 563**示例:** 564 565```ts 566import { common2D, drawing } from '@kit.ArkGraphics2D'; 567 568let path = new drawing.Path(); 569const rect: common2D.Rect = {left:100, top:100, right:500, bottom:500}; 570path.addArc(rect, 90, 180); 571``` 572 573### addCircle<sup>12+</sup> 574 575addCircle(x: number, y: number, radius: number, pathDirection?: PathDirection): void 576 577按指定方向,向路径添加圆形,圆的起点位于(x + radius, y)。 578 579**系统能力**:SystemCapability.Graphics.Drawing 580 581**参数:** 582 583| 参数名 | 类型 | 必填 | 说明 | 584| ----------- | ---------------------------------------- | ---- | ------------------- | 585| x | number | 是 | 表示圆心的x轴坐标,该参数为浮点数。 | 586| y | number | 是 | 表示圆心的y轴坐标,该参数为浮点数。 | 587| radius | number | 是 | 表示圆形的半径,该参数为浮点数,小于等于0时不会有任何效果。 | 588| pathDirection | [PathDirection](#pathdirection12) | 否 | 表示路径方向,默认为顺时针方向。 | 589 590**错误码:** 591 592以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 593 594| 错误码ID | 错误信息 | 595| ------- | --------------------------------------------| 596| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified;2. Incorrect parameter types; 3. Parameter verification failed. | 597 598**示例:** 599 600```ts 601 602import { drawing } from '@kit.ArkGraphics2D'; 603 604let path = new drawing.Path(); 605path.addCircle(100, 200, 50, drawing.PathDirection.CLOCKWISE); 606``` 607 608### addOval<sup>12+</sup> 609 610addOval(rect: common2D.Rect, start: number, pathDirection?: PathDirection): void 611 612按指定方向,将椭圆添加到路径中,其中矩形对象作为椭圆的外切矩形区域。 613 614**系统能力**:SystemCapability.Graphics.Drawing 615 616**参数:** 617 618| 参数名 | 类型 | 必填 | 说明 | 619| ----------- | ---------------------------------------- | ---- | ------------------- | 620| rect | [common2D.Rect](js-apis-graphics-common2D.md#rect) | 是 | 椭圆的矩形边界。 | 621| start | number | 是 | 表示椭圆初始点的索引,0,1,2,3分别对应椭圆的上端点,右端点,下端点,左端点,该参数为不小于0的整数,大于等于4时会对4取余。 | 622| pathDirection | [PathDirection](#pathdirection12) | 否 | 表示路径方向,默认为顺时针方向。 | 623 624**错误码:** 625 626以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 627 628| 错误码ID | 错误信息 | 629| ------- | --------------------------------------------| 630| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified;2. Incorrect parameter types; 3. Parameter verification failed.| 631 632**示例:** 633 634```ts 635import { common2D, drawing } from '@kit.ArkGraphics2D'; 636 637let path = new drawing.Path(); 638const rect: common2D.Rect = {left:100, top:100, right:500, bottom:500}; 639path.addOval(rect, 5, drawing.PathDirection.CLOCKWISE); 640``` 641 642### addRect<sup>12+</sup> 643 644addRect(rect: common2D.Rect, pathDirection?: PathDirection): void 645 646按指定方向,将矩形添加到路径中,添加的路径的起始点为矩形左上角。 647 648**系统能力**:SystemCapability.Graphics.Drawing 649 650**参数:** 651 652| 参数名 | 类型 | 必填 | 说明 | 653| ----------- | ---------------------------------------- | ---- | ------------------- | 654| rect | [common2D.Rect](js-apis-graphics-common2D.md#rect) | 是 | 向路径中添加的矩形轮廓。 | 655| pathDirection | [PathDirection](#pathdirection12) | 否 | 表示路径方向,默认为顺时针方向。 | 656 657**错误码:** 658 659以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 660 661| 错误码ID | 错误信息 | 662| ------- | --------------------------------------------| 663| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified;2. Incorrect parameter types; 3. Parameter verification failed.| 664 665**示例:** 666 667```ts 668import { common2D, drawing } from '@kit.ArkGraphics2D'; 669 670let path = new drawing.Path(); 671const rect: common2D.Rect = {left:100, top:100, right:500, bottom:500}; 672path.addRect(rect, drawing.PathDirection.CLOCKWISE); 673``` 674 675### addRoundRect<sup>12+</sup> 676 677addRoundRect(roundRect: RoundRect, pathDirection?: PathDirection): void 678 679按指定方向,向路径添加圆角矩形轮廓。路径添加方向为顺时针时,起始点位于圆角矩形左下方圆角与左边界的交点;路径添加方向为逆时针时,起始点位于圆角矩形左上方圆角与左边界的交点。 680 681**系统能力**:SystemCapability.Graphics.Drawing 682 683**参数:** 684 685| 参数名 | 类型 | 必填 | 说明 | 686| ----------- | ---------------------------------------- | ---- | ------------------- | 687| roundRect | [RoundRect](#roundrect12) | 是 | 圆角矩形对象。 | 688| pathDirection | [PathDirection](#pathdirection12) | 否 | 表示路径方向,默认为顺时针方向。 | 689 690**错误码:** 691 692以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 693 694| 错误码ID | 错误信息 | 695| ------- | --------------------------------------------| 696| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified;2. Incorrect parameter types; 3. Parameter verification failed.| 697 698**示例:** 699 700```ts 701import { common2D, drawing } from '@kit.ArkGraphics2D'; 702 703let path = new drawing.Path(); 704const rect: common2D.Rect = {left:100, top:100, right:500, bottom:500}; 705let roundRect = new drawing.RoundRect(rect, 50, 50); 706path.addRoundRect(roundRect, drawing.PathDirection.CLOCKWISE); 707``` 708 709### addPath<sup>12+</sup> 710 711addPath(path: Path, matrix?: Matrix | null): void 712 713将源路径进行矩阵变换后,添加到当前路径中。 714 715**系统能力**:SystemCapability.Graphics.Drawing 716 717**参数:** 718 719| 参数名 | 类型 | 必填 | 说明 | 720| ----------- | ---------------------------------------- | ---- | ------------------- | 721| path | [Path](#path) | 是 | 表示源路径对象。 | 722| matrix | [Matrix](#matrix12)\|null | 否 | 表示矩阵对象,默认为单位矩阵。 | 723 724**错误码:** 725 726以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 727 728| 错误码ID | 错误信息 | 729| ------- | --------------------------------------------| 730| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. | 731 732**示例:** 733 734```ts 735import { common2D, drawing } from '@kit.ArkGraphics2D'; 736 737let path = new drawing.Path(); 738let matrix = new drawing.Matrix(); 739const rect: common2D.Rect = {left:100, top:100, right:500, bottom:500}; 740let roundRect = new drawing.RoundRect(rect, 50, 50); 741path.addRoundRect(roundRect, drawing.PathDirection.CLOCKWISE); 742let dstPath = new drawing.Path(); 743dstPath.addPath(path, matrix); 744``` 745 746### transform<sup>12+</sup> 747 748transform(matrix: Matrix): void 749 750对路径进行矩阵变换。 751 752**系统能力**:SystemCapability.Graphics.Drawing 753 754**参数:** 755 756| 参数名 | 类型 | 必填 | 说明 | 757| ----------- | ---------------------------------------- | ---- | ------------------- | 758| matrix | [Matrix](#matrix12) | 是 | 表示矩阵对象。 | 759 760**错误码:** 761 762以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 763 764| 错误码ID | 错误信息 | 765| ------- | --------------------------------------------| 766| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. | 767 768**示例:** 769 770```ts 771import { common2D, drawing } from '@kit.ArkGraphics2D'; 772 773let path = new drawing.Path(); 774let matrix = new drawing.Matrix(); 775matrix.setScale(1.5, 1.5, 10, 10); 776const rect: common2D.Rect = {left:100, top:100, right:500, bottom:500}; 777let roundRect = new drawing.RoundRect(rect, 50, 50); 778path.addRoundRect(roundRect, drawing.PathDirection.CLOCKWISE); 779path.transform(matrix); 780``` 781 782### contains<sup>12+</sup> 783 784contains(x: number, y: number): boolean 785 786判断指定坐标点是否被路径包含,判定是否被路径包含的规则参考[PathFillType](#pathfilltype12)。 787 788**系统能力:** SystemCapability.Graphics.Drawing 789 790**参数:** 791 792| 参数名 | 类型 | 必填 | 说明 | 793| ------ | ------ | ---- | ----------------------- | 794| x | number | 是 | x轴上坐标点,该参数必须为浮点数。 | 795| y | number | 是 | y轴上坐标点,该参数必须为浮点数。 | 796 797**返回值:** 798 799| 类型 | 说明 | 800| ------- | -------------- | 801| boolean | 返回指定坐标点是否在路径内。true表示点在路径内,false表示点不在路径内。 | 802 803**错误码:** 804 805以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 806 807| 错误码ID | 错误信息 | 808| ------- | --------------------------------------------| 809| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. | 810 811**示例:** 812 813```ts 814import { common2D, drawing } from '@kit.ArkGraphics2D'; 815 816const path = new drawing.Path(); 817let rect : common2D.Rect = {left: 50, top: 50, right: 250, bottom: 250}; 818path.addRect(rect, drawing.PathDirection.CLOCKWISE); 819console.info("test contains: " + path.contains(0, 0)); 820console.info("test contains: " + path.contains(60, 60)); 821``` 822 823### setFillType<sup>12+</sup> 824 825setFillType(pathFillType: PathFillType): void 826 827设置路径的填充类型,这个决定了路径内部区域的定义方式。例如,使用 Winding 填充类型时,路径内部区域由路径环绕的次数决定,而使用 EvenOdd 填充类型时,路径内部区域由路径环绕的次数是否为奇数决定。 828 829**系统能力**:SystemCapability.Graphics.Drawing 830 831**参数:** 832 833| 参数名 | 类型 | 必填 | 说明 | 834| ----------- | ---------------------------------------- | ---- | ------------------- | 835| pathFillType | [PathFillType](#pathfilltype12) | 是 | 表示路径填充规则。 | 836 837**错误码:** 838 839以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 840 841| 错误码ID | 错误信息 | 842| ------- | --------------------------------------------| 843| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified;2. Incorrect parameter types; 3. Parameter verification failed.| 844 845**示例:** 846 847```ts 848import { drawing } from '@kit.ArkGraphics2D'; 849 850const path = new drawing.Path(); 851path.setFillType(drawing.PathFillType.WINDING); 852``` 853 854### getBounds<sup>12+</sup> 855 856getBounds(): common2D.Rect 857 858获取包含路径的最小矩形边界。 859 860**系统能力**:SystemCapability.Graphics.Drawing 861 862**返回值:** 863 864| 类型 | 说明 | 865| -------------------------------------------------- | ---------------------- | 866| [common2D.Rect](js-apis-graphics-common2D.md#rect) | 包含路径的最小矩形区域。 | 867 868**示例:** 869 870```ts 871import { common2D, drawing } from '@kit.ArkGraphics2D'; 872 873const path = new drawing.Path(); 874path.lineTo(50, 40) 875let rect : common2D.Rect = {left: 0, top: 0, right: 0, bottom: 0}; 876rect = path.getBounds(); 877console.info("test rect.left: " + rect.left); 878console.info("test rect.top: " + rect.top); 879console.info("test rect.right: " + rect.right); 880console.info("test rect.bottom: " + rect.bottom); 881``` 882 883### addPolygon<sup>12+</sup> 884 885addPolygon(points: Array\<common2D.Point>, close: boolean): void 886 887通过坐标点列表添加多条连续的线段。 888 889**系统能力**:SystemCapability.Graphics.Drawing 890 891**参数:** 892 893| 参数名 | 类型 | 必填 | 说明 | 894| ------ | ------ | ---- | ----------------------- | 895| points | Array\<[common2D.Point](js-apis-graphics-common2D.md#point)> | 是 | 坐标点数组。 | 896| close | boolean | 是 | 表示是否将路径闭合,即是否添加路径起始点到终点的连线。true表示将路径闭合,false表示不将路径闭合。 | 897 898**错误码:** 899 900以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 901 902| 错误码ID | 错误信息 | 903| ------- | --------------------------------------------| 904| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. | 905 906**示例:** 907 908```ts 909import { common2D, drawing } from '@kit.ArkGraphics2D'; 910 911let pointsArray = new Array<common2D.Point>(); 912const point1: common2D.Point = { x: 200, y: 200 }; 913const point2: common2D.Point = { x: 400, y: 200 }; 914const point3: common2D.Point = { x: 100, y: 400 }; 915const point4: common2D.Point = { x: 300, y: 400 }; 916pointsArray.push(point1); 917pointsArray.push(point2); 918pointsArray.push(point3); 919pointsArray.push(point4); 920const path = new drawing.Path(); 921path.addPolygon(pointsArray, false); 922``` 923 924### offset<sup>12+</sup> 925 926offset(dx: number, dy: number): Path 927 928将路径沿着x轴和y轴方向偏移一定距离并保存在返回的路径对象中。 929 930**系统能力**:SystemCapability.Graphics.Drawing 931 932**参数:** 933 934| 参数名 | 类型 | 必填 | 说明 | 935| ------ | ------ | ---- | ----------------------- | 936| dx | number | 是 | x轴方向偏移量,正数往x轴正方向偏移,负数往x轴负方向偏移,该参数为浮点数。 | 937| dy | number | 是 | y轴方向偏移量,正数往y轴正方向偏移,负数往y轴负方向偏移,该参数为浮点数。 | 938 939**返回值:** 940 941| 类型 | 说明 | 942| ------ | ------------------ | 943| [Path](#path) | 返回当前路径偏移(dx,dy)后生成的新路径对象。 | 944 945**错误码:** 946 947以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 948 949| 错误码ID | 错误信息 | 950| ------- | --------------------------------------------| 951| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. | 952 953**示例:** 954 955```ts 956import { drawing } from '@kit.ArkGraphics2D'; 957 958const path = new drawing.Path(); 959path.moveTo(200, 200); 960path.lineTo(300, 300); 961const dst = path.offset(200, 200); 962``` 963 964### op<sup>12+</sup> 965 966op(path: Path, pathOp: PathOp): boolean 967 968将当前路径置为和path按照指定的路径操作类型合并后的结果。 969 970**系统能力**:SystemCapability.Graphics.Drawing 971 972**参数:** 973 974| 参数名 | 类型 | 必填 | 说明 | 975| ------ | ------ | ---- | ----------------------- | 976| path | [Path](#path) | 是 | 路径对象,用于与当前路径合并。 | 977| pathOp | [PathOp](#pathop12) | 是 | 路径操作类型枚举。 | 978 979**返回值:** 980 981| 类型 | 说明 | 982| ------ | ------------------ | 983| boolean | 返回路径合并是否成功的结果。true表示合并成功,false表示合并失败。 | 984 985**错误码:** 986 987以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 988 989| 错误码ID | 错误信息 | 990| ------- | --------------------------------------------| 991| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types;3.Parameter verification failed. | 992 993**示例:** 994 995```ts 996import { drawing } from '@kit.ArkGraphics2D'; 997 998const path = new drawing.Path(); 999const path2 = new drawing.Path(); 1000path.addCircle(100, 200, 100, drawing.PathDirection.CLOCKWISE); 1001console.info("get pathOp: ", path2.op(path, drawing.PathOp.DIFFERENCE)); 1002``` 1003 1004### close 1005 1006close(): void 1007 1008用于闭合路径,会添加一条从路径起点位置到最后点位置的线段。 1009 1010**系统能力**:SystemCapability.Graphics.Drawing 1011 1012**示例:** 1013 1014```ts 1015import { drawing } from '@kit.ArkGraphics2D'; 1016let path = new drawing.Path(); 1017path.moveTo(10,10); 1018path.cubicTo(10, 10, 10, 10, 15, 15); 1019path.close(); 1020``` 1021 1022### reset 1023 1024reset(): void 1025 1026用于重置自定义路径数据。 1027 1028**系统能力**:SystemCapability.Graphics.Drawing 1029 1030**示例:** 1031 1032```ts 1033import { drawing } from '@kit.ArkGraphics2D'; 1034let path = new drawing.Path(); 1035path.moveTo(10,10); 1036path.cubicTo(10, 10, 10, 10, 15, 15); 1037path.reset(); 1038``` 1039 1040### getLength<sup>12+</sup> 1041 1042getLength(forceClosed: boolean): number 1043 1044用于获取路径长度。 1045 1046**系统能力**:SystemCapability.Graphics.Drawing 1047 1048**参数:** 1049 1050| 参数名| 类型 | 必填| 说明 | 1051| ----- | ------ | ---- | --------- | 1052| forceClosed | boolean | 是 | 表示是否按照闭合路径测量,true表示测量时路径会被强制视为已闭合,false表示会根据路径的实际闭合状态测量。| 1053 1054**返回值:** 1055 1056| 类型 | 说明 | 1057| ------ | ---- | 1058| number | 路径长度。| 1059 1060**示例:** 1061 1062```ts 1063import { drawing } from '@kit.ArkGraphics2D' 1064let path = new drawing.Path(); 1065path.arcTo(20, 20, 180, 180, 180, 90); 1066let len = path.getLength(false); 1067console.info("path length = " + len); 1068``` 1069 1070### getPositionAndTangent<sup>12+</sup> 1071 1072getPositionAndTangent(forceClosed: boolean, distance: number, position: common2D.Point, tangent: common2D.Point): boolean 1073 1074获取距路径起始点指定距离的坐标点和切线值。 1075 1076**系统能力**:SystemCapability.Graphics.Drawing 1077 1078**参数:** 1079 1080| 参数名 | 类型 | 必填 | 说明 | 1081| -------- | -------------------------------------------- | ---- | ------------------------------- | 1082| forceClosed | boolean | 是 | 表示是否按照闭合路径测量,true表示测量时路径会被强制视为已闭合,false表示会根据路径的实际闭合状态测量。 | 1083| distance | number | 是 | 表示与路径起始点的距离,小于0时会被视作0,大于路径长度时会被视作路径长度。该参数为浮点数。 | 1084| position | [common2D.Point](js-apis-graphics-common2D.md#point) | 是 | 存储获取到的距离路径起始点distance处的点的坐标。 | 1085| tangent | [common2D.Point](js-apis-graphics-common2D.md#point) | 是 | 存储获取到的距离路径起始点distance处的点的的切线值,tangent.x表示该点切线的余弦值,tangent.y表示该点切线的正弦值。 | 1086 1087**返回值:** 1088 1089| 类型 | 说明 | 1090| --------------------- | -------------- | 1091| boolean |表示是否成功获取距离路径起始点distance处的点的坐标和正切值的结果,true表示获取成功,false表示获取失败,position和tangent不会被改变。 | 1092 1093**错误码:** 1094 1095以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 1096 1097| 错误码ID | 错误信息 | 1098| ------- | --------------------------------------------| 1099| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. | 1100 1101**示例:** 1102 1103```ts 1104import { common2D, drawing } from '@kit.ArkGraphics2D'; 1105let path: drawing.Path = new drawing.Path(); 1106path.moveTo(0, 0); 1107path.lineTo(0, 700); 1108path.lineTo(700, 0); 1109let position: common2D.Point = { x: 0.0, y: 0.0 }; 1110let tangent: common2D.Point = { x: 0.0, y: 0.0 }; 1111if (path.getPositionAndTangent(false, 0.1, position, tangent)) { 1112 console.info("getPositionAndTangent-----position: "+ position.x); 1113 console.info("getPositionAndTangent-----position: "+ position.y); 1114 console.info("getPositionAndTangent-----tangent: "+ tangent.x); 1115 console.info("getPositionAndTangent-----tangent: "+ tangent.y); 1116} 1117``` 1118 1119### isClosed<sup>12+</sup> 1120 1121isClosed(): boolean 1122 1123获取路径是否闭合。 1124 1125**系统能力**:SystemCapability.Graphics.Drawing 1126 1127**返回值:** 1128 1129| 类型 | 说明 | 1130| --------------------- | -------------- | 1131| boolean | 表示当前路径是否闭合,true表示闭合,false表示不闭合。 | 1132 1133**示例:** 1134 1135```ts 1136import { drawing } from '@kit.ArkGraphics2D'; 1137let path: drawing.Path = new drawing.Path(); 1138path.moveTo(0, 0); 1139path.lineTo(0, 700); 1140if (path.isClosed()) { 1141 console.info("path is closed."); 1142} else { 1143 console.info("path is not closed."); 1144} 1145``` 1146 1147### getMatrix<sup>12+</sup> 1148 1149getMatrix(forceClosed: boolean, distance: number, matrix: Matrix, flags: PathMeasureMatrixFlags): boolean 1150 1151获取距路径起始点指定距离的相应变换矩阵。 1152 1153**系统能力**:SystemCapability.Graphics.Drawing 1154 1155**参数:** 1156 1157| 参数名 | 类型 | 必填 | 说明 | 1158| -------- | -------------------------------------------- | ---- | ------------------------------- | 1159| forceClosed | boolean | 是 | 表示是否按照闭合路径测量,true表示测量时路径会被强制视为已闭合,false表示会根据路径的实际闭合状态测量。 | 1160| distance | number | 是 | 表示与路径起始点的距离,小于0时会被视作0,大于路径长度时会被视作路径长度。该参数为浮点数。 | 1161| matrix | [Matrix](#matrix12) | 是 | 矩阵对象,用于存储得到的矩阵。 | 1162| flags | [PathMeasureMatrixFlags](#pathmeasurematrixflags12) | 是 | 矩阵信息维度枚举。 | 1163 1164**返回值:** 1165 1166| 类型 | 说明 | 1167| --------------------- | -------------- | 1168| boolean | 返回获取变换矩阵是否成功的结果,true表示获取成功,false表示获取失败。 | 1169 1170**错误码:** 1171 1172以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 1173 1174| 错误码ID | 错误信息 | 1175| ------- | --------------------------------------------| 1176| 401 | Parameter error. Possible causes: Mandatory parameters are left unspecified. | 1177 1178**示例:** 1179 1180```ts 1181import { drawing } from '@kit.ArkGraphics2D'; 1182let path: drawing.Path = new drawing.Path(); 1183let matrix = new drawing.Matrix(); 1184if(path.getMatrix(false, 10, matrix, drawing.PathMeasureMatrixFlags.GET_TANGENT_MATRIX)) { 1185 console.info("path.getMatrix return true"); 1186} else { 1187 console.info("path.getMatrix return false"); 1188} 1189``` 1190 1191### buildFromSvgString<sup>12+</sup> 1192 1193buildFromSvgString(str: string): boolean 1194 1195解析SVG字符串表示的路径。 1196 1197**系统能力**:SystemCapability.Graphics.Drawing 1198 1199**参数:** 1200 1201| 参数名 | 类型 | 必填 | 说明 | 1202| -------- | -------------------------------------------- | ---- | ------------------------------- | 1203| str | string | 是 | SVG格式的字符串,用于描述绘制路径。 | 1204 1205**返回值:** 1206 1207| 类型 | 说明 | 1208| --------------------- | -------------- | 1209| boolean | 返回解析SVG字符串是否成功的结果,true表示解析成功,false表示解析失败。 | 1210 1211**错误码:** 1212 1213以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 1214 1215| 错误码ID | 错误信息 | 1216| ------- | --------------------------------------------| 1217| 401 | Parameter error. Possible causes: Mandatory parameters are left unspecified. | 1218 1219**示例:** 1220 1221```ts 1222import { drawing } from '@kit.ArkGraphics2D'; 1223let path: drawing.Path = new drawing.Path(); 1224let svgStr: string = "M150 100 L75 300 L225 300 Z"; 1225if(path.buildFromSvgString(svgStr)) { 1226 console.info("buildFromSvgString return true"); 1227} else { 1228 console.info("buildFromSvgString return false"); 1229} 1230``` 1231 1232## Canvas 1233 1234承载绘制内容与绘制状态的载体。 1235 1236> **说明:** 1237> 1238> 画布自带一个黑色,开启反走样,不具备其他任何样式效果的默认画刷,当且仅当画布中主动设置的画刷和画笔都不存在时生效。 1239 1240### constructor 1241 1242constructor(pixelmap: image.PixelMap) 1243 1244Canvas对象的构造函数。 1245 1246**系统能力**:SystemCapability.Graphics.Drawing 1247 1248**参数:** 1249 1250| 参数名 | 类型 | 必填 | 说明 | 1251| -------- | -------------------------------------------- | ---- | -------------- | 1252| pixelmap | [image.PixelMap](../apis-image-kit/js-apis-image.md#pixelmap7) | 是 | 构造函数入参。 | 1253 1254**错误码:** 1255 1256以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 1257 1258| 错误码ID | 错误信息 | 1259| ------- | --------------------------------------------| 1260| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. | 1261 1262**示例:** 1263 1264```ts 1265import { drawing } from '@kit.ArkGraphics2D'; 1266import { image } from '@kit.ImageKit'; 1267const color = new ArrayBuffer(96); 1268let opts : image.InitializationOptions = { 1269 editable: true, 1270 pixelFormat: 3, 1271 size: { 1272 height: 4, 1273 width: 6 1274 } 1275} 1276image.createPixelMap(color, opts).then((pixelMap) => { 1277 const canvas = new drawing.Canvas(pixelMap); 1278}) 1279``` 1280 1281### drawRect 1282 1283drawRect(rect: common2D.Rect): void 1284 1285用于绘制一个矩形,默认使用黑色填充。 1286 1287**系统能力**:SystemCapability.Graphics.Drawing 1288 1289**参数:** 1290 1291| 参数名 | 类型 | 必填 | 说明 | 1292| ------ | -------------------------------------------------- | ---- | -------------- | 1293| rect | [common2D.Rect](js-apis-graphics-common2D.md#rect) | 是 | 绘制的矩形区域。 | 1294 1295**错误码:** 1296 1297以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 1298 1299| 错误码ID | 错误信息 | 1300| ------- | --------------------------------------------| 1301| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. | 1302 1303**示例:** 1304 1305```ts 1306import { RenderNode } from '@kit.ArkUI'; 1307import { common2D, drawing } from '@kit.ArkGraphics2D'; 1308class DrawingRenderNode extends RenderNode { 1309 draw(context : DrawContext) { 1310 const canvas = context.canvas; 1311 const pen = new drawing.Pen(); 1312 pen.setStrokeWidth(5); 1313 pen.setColor({alpha: 255, red: 255, green: 0, blue: 0}); 1314 canvas.attachPen(pen); 1315 canvas.drawRect({ left : 0, right : 10, top : 0, bottom : 10 }); 1316 canvas.detachPen(); 1317 } 1318} 1319``` 1320 1321### drawRect<sup>12+</sup> 1322 1323drawRect(left: number, top: number, right: number, bottom: number): void 1324 1325用于绘制一个矩形,默认使用黑色填充。性能优于[drawRect](#drawrect)接口,推荐使用本接口。 1326 1327**系统能力**:SystemCapability.Graphics.Drawing 1328 1329**参数:** 1330 1331| 参数名 | 类型 | 必填 | 说明 | 1332| ------ | ------ | ---- | -------------- | 1333| left | number | 是 | 矩形的左上角x轴坐标,该参数为浮点数。 | 1334| top | number | 是 | 矩形的左上角y轴坐标,该参数为浮点数。 | 1335| right | number | 是 | 矩形的右下角x轴坐标,该参数为浮点数。 | 1336| bottom | number | 是 | 矩形的右下角y轴坐标,该参数为浮点数。 | 1337 1338**错误码:** 1339 1340以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 1341 1342| 错误码ID | 错误信息 | 1343| ------- | --------------------------------------------| 1344| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. | 1345 1346**示例:** 1347 1348```ts 1349import { RenderNode } from '@kit.ArkUI'; 1350import { drawing } from '@kit.ArkGraphics2D'; 1351class DrawingRenderNode extends RenderNode { 1352 1353 draw(context : DrawContext) { 1354 const canvas = context.canvas; 1355 const pen = new drawing.Pen(); 1356 pen.setStrokeWidth(5); 1357 pen.setColor({alpha: 255, red: 255, green: 0, blue: 0}); 1358 canvas.attachPen(pen); 1359 canvas.drawRect(0, 0, 10, 10); 1360 canvas.detachPen(); 1361 } 1362} 1363``` 1364 1365### drawRoundRect<sup>12+</sup> 1366 1367drawRoundRect(roundRect: RoundRect): void 1368 1369画一个圆角矩形。 1370 1371**系统能力**:SystemCapability.Graphics.Drawing 1372 1373**参数** 1374 1375| 参数名 | 类型 | 必填 | 说明 | 1376| ---------- | ----------------------- | ---- | ------------ | 1377| roundRect | [RoundRect](#roundrect12) | 是 | 圆角矩形对象。| 1378 1379**错误码:** 1380 1381以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 1382 1383| 错误码ID | 错误信息 | 1384| ------- | --------------------------------------------| 1385| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. | 1386 1387**示例** 1388 1389```ts 1390import { RenderNode } from '@kit.ArkUI'; 1391import { common2D, drawing } from '@kit.ArkGraphics2D'; 1392class DrawingRenderNode extends RenderNode { 1393 draw(context : DrawContext) { 1394 const canvas = context.canvas; 1395 let rect: common2D.Rect = { left : 100, top : 100, right : 400, bottom : 500 }; 1396 let roundRect = new drawing.RoundRect(rect, 10, 10); 1397 canvas.drawRoundRect(roundRect); 1398 } 1399} 1400``` 1401 1402### drawNestedRoundRect<sup>12+</sup> 1403 1404drawNestedRoundRect(outer: RoundRect, inner: RoundRect): void 1405 1406绘制两个嵌套的圆角矩形,外部矩形边界必须包含内部矩形边界,否则无绘制效果。 1407 1408**系统能力**:SystemCapability.Graphics.Drawing 1409 1410**参数** 1411 1412| 参数名 | 类型 | 必填 | 说明 | 1413| ------ | ----------------------- | ---- | ------------ | 1414| outer | [RoundRect](#roundrect12) | 是 | 圆角矩形对象,表示外部圆角矩形边界。| 1415| inner | [RoundRect](#roundrect12) | 是 | 圆角矩形对象,表示内部圆角矩形边界。| 1416 1417**错误码:** 1418 1419以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 1420 1421| 错误码ID | 错误信息 | 1422| ------- | --------------------------------------------| 1423| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. | 1424 1425**示例** 1426 1427```ts 1428import { RenderNode } from '@kit.ArkUI'; 1429import { common2D, drawing } from '@kit.ArkGraphics2D'; 1430class DrawingRenderNode extends RenderNode { 1431 draw(context : DrawContext) { 1432 const canvas = context.canvas; 1433 let inRect: common2D.Rect = { left : 200, top : 200, right : 400, bottom : 500 }; 1434 let outRect: common2D.Rect = { left : 100, top : 100, right : 400, bottom : 500 }; 1435 let outRoundRect = new drawing.RoundRect(outRect, 10, 10); 1436 let inRoundRect = new drawing.RoundRect(inRect, 10, 10); 1437 canvas.drawNestedRoundRect(outRoundRect, inRoundRect); 1438 canvas.drawRoundRect(outRoundRect); 1439 } 1440} 1441``` 1442 1443### drawBackground<sup>12+</sup> 1444 1445drawBackground(brush: Brush): void 1446 1447使用画刷填充画布的可绘制区域。 1448 1449**系统能力**:SystemCapability.Graphics.Drawing 1450 1451**参数** 1452 1453| 参数名 | 类型 | 必填 | 说明 | 1454| ------ | --------------- | ---- | ---------- | 1455| brush | [Brush](#brush) | 是 | 画刷对象。 | 1456 1457**错误码:** 1458 1459以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 1460 1461| 错误码ID | 错误信息 | 1462| ------- | --------------------------------------------| 1463| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. | 1464 1465**示例** 1466 1467```ts 1468import { RenderNode } from '@kit.ArkUI'; 1469import { common2D, drawing } from '@kit.ArkGraphics2D'; 1470class DrawingRenderNode extends RenderNode { 1471 draw(context : DrawContext) { 1472 const canvas = context.canvas; 1473 const brush = new drawing.Brush(); 1474 const color : common2D.Color = { alpha: 255, red: 255, green: 0, blue: 0 }; 1475 brush.setColor(color); 1476 canvas.drawBackground(brush); 1477 } 1478} 1479``` 1480 1481### drawShadow<sup>12+</sup> 1482 1483drawShadow(path: Path, planeParams: common2D.Point3d, devLightPos: common2D.Point3d, lightRadius: number, ambientColor: common2D.Color, spotColor: common2D.Color, flag: ShadowFlag) : void 1484 1485绘制射灯类型阴影,使用路径描述环境光阴影的轮廓。 1486 1487**系统能力**:SystemCapability.Graphics.Drawing 1488 1489**参数:** 1490 1491| 参数名 | 类型 | 必填 | 说明 | 1492| ------------ | ---------------------------------------- | ---- | ---------- | 1493| path | [Path](#path) | 是 | 路径对象,可生成阴影。 | 1494| planeParams | [common2D.Point3d](js-apis-graphics-common2D.md#point3d12) | 是 | 表示一个三维向量,用于计算遮挡物相对于画布在z轴上的偏移量,其值取决于x与y坐标。 | 1495| devLightPos | [common2D.Point3d](js-apis-graphics-common2D.md#point3d12) | 是 | 光线相对于画布的位置。 | 1496| lightRadius | number | 是 | 圆形灯半径,该参数为浮点数。 | 1497| ambientColor | [common2D.Color](js-apis-graphics-common2D.md#color) | 是 | 环境阴影颜色。 | 1498| spotColor | [common2D.Color](js-apis-graphics-common2D.md#color) | 是 | 点阴影颜色。 | 1499| flag | [ShadowFlag](#shadowflag12) | 是 | 阴影标志枚举。 | 1500 1501**错误码:** 1502 1503以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 1504 1505| 错误码ID | 错误信息 | 1506| ------- | --------------------------------------------| 1507| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types;3.Parameter verification failed. | 1508 1509**示例:** 1510 1511```ts 1512import { RenderNode } from '@kit.ArkUI'; 1513import { common2D, drawing } from '@kit.ArkGraphics2D'; 1514class DrawingRenderNode extends RenderNode { 1515 draw(context : DrawContext) { 1516 const canvas = context.canvas; 1517 const path = new drawing.Path(); 1518 path.addCircle(100, 200, 100, drawing.PathDirection.CLOCKWISE); 1519 let pen = new drawing.Pen(); 1520 pen.setAntiAlias(true); 1521 let pen_color : common2D.Color = { alpha: 0xFF, red: 0xFF, green: 0x00, blue: 0x00 }; 1522 pen.setColor(pen_color); 1523 pen.setStrokeWidth(10.0); 1524 canvas.attachPen(pen); 1525 let brush = new drawing.Brush(); 1526 let brush_color : common2D.Color = { alpha: 0xFF, red: 0x00, green: 0xFF, blue: 0x00 }; 1527 brush.setColor(brush_color); 1528 canvas.attachBrush(brush); 1529 let point1 : common2D.Point3d = {x: 100, y: 80, z:80}; 1530 let point2 : common2D.Point3d = {x: 200, y: 10, z:40}; 1531 let color1 : common2D.Color = {alpha: 0xFF, red:0, green:0, blue:0xFF}; 1532 let color2 : common2D.Color = {alpha: 0xFF, red:0xFF, green:0, blue:0}; 1533 let shadowFlag : drawing.ShadowFlag = drawing.ShadowFlag.ALL; 1534 canvas.drawShadow(path, point1, point2, 30, color1, color2, shadowFlag); 1535 } 1536} 1537``` 1538 1539### getLocalClipBounds<sup>12+</sup> 1540 1541getLocalClipBounds(): common2D.Rect 1542 1543获取画布裁剪区域的边界。 1544 1545**系统能力**:SystemCapability.Graphics.Drawing 1546 1547**返回值:** 1548 1549| 类型 | 说明 | 1550| ---------------------------------------- | -------- | 1551| [common2D.Rect](js-apis-graphics-common2D.md#rect) | 返回画布裁剪区域的矩形边界。 | 1552 1553**示例:** 1554 1555```ts 1556import { RenderNode } from '@kit.ArkUI'; 1557import { common2D, drawing } from '@kit.ArkGraphics2D'; 1558class DrawingRenderNode extends RenderNode { 1559 draw(context : DrawContext) { 1560 const canvas = context.canvas; 1561 let clipRect: common2D.Rect = { 1562 left : 150, top : 150, right : 300, bottom : 400 1563 }; 1564 canvas.clipRect(clipRect,drawing.ClipOp.DIFFERENCE, true); 1565 console.info("test rect.left: " + clipRect.left); 1566 console.info("test rect.top: " + clipRect.top); 1567 console.info("test rect.right: " + clipRect.right); 1568 console.info("test rect.bottom: " + clipRect.bottom); 1569 canvas.getLocalClipBounds(); 1570 } 1571} 1572``` 1573 1574### getTotalMatrix<sup>12+</sup> 1575 1576getTotalMatrix(): Matrix 1577 1578获取画布矩阵。 1579 1580**系统能力**:SystemCapability.Graphics.Drawing 1581 1582**返回值:** 1583 1584| 类型 | 说明 | 1585| ----------------- | -------- | 1586| [Matrix](#matrix12) |返回画布矩阵。 | 1587 1588**示例:** 1589 1590```ts 1591import { RenderNode } from '@kit.ArkUI'; 1592import { drawing } from '@kit.ArkGraphics2D'; 1593class DrawingRenderNode extends RenderNode { 1594 draw(context : DrawContext) { 1595 const canvas = context.canvas; 1596 let matrix = new drawing.Matrix(); 1597 matrix.setMatrix([5, 0, 0, 0, 1, 1, 0, 0, 1]); 1598 canvas.setMatrix(matrix); 1599 let matrixResult =canvas.getTotalMatrix(); 1600 } 1601} 1602``` 1603 1604### drawCircle 1605 1606drawCircle(x: number, y: number, radius: number): void 1607 1608用于画一个圆形。如果半径小于等于零,则不绘制任何内容。默认使用黑色填充。 1609 1610**系统能力**:SystemCapability.Graphics.Drawing 1611 1612**参数:** 1613 1614| 参数名 | 类型 | 必填 | 说明 | 1615| ------ | ------ | ---- | ------------------- | 1616| x | number | 是 | 圆心的x坐标,该参数为浮点数。 | 1617| y | number | 是 | 圆心的y坐标,该参数为浮点数。 | 1618| radius | number | 是 | 圆的半径,大于0的浮点数。 | 1619 1620**错误码:** 1621 1622以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 1623 1624| 错误码ID | 错误信息 | 1625| ------- | --------------------------------------------| 1626| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types;3.Parameter verification failed. | 1627 1628**示例:** 1629 1630```ts 1631import { RenderNode } from '@kit.ArkUI'; 1632import { drawing } from '@kit.ArkGraphics2D'; 1633class DrawingRenderNode extends RenderNode { 1634 draw(context : DrawContext) { 1635 const canvas = context.canvas; 1636 const pen = new drawing.Pen(); 1637 pen.setStrokeWidth(5); 1638 pen.setColor({alpha: 255, red: 255, green: 0, blue: 0}); 1639 canvas.attachPen(pen); 1640 canvas.drawCircle(10, 10, 2); 1641 canvas.detachPen(); 1642 } 1643} 1644``` 1645 1646### drawImage 1647 1648drawImage(pixelmap: image.PixelMap, left: number, top: number, samplingOptions?: SamplingOptions): void 1649 1650用于画一张图片,图片的左上角坐标为(left, top)。 1651 1652**系统能力**:SystemCapability.Graphics.Drawing 1653 1654**参数:** 1655 1656| 参数名 | 类型 | 必填 | 说明 | 1657| -------- | -------------------------------------------- | ---- | ------------------------------- | 1658| pixelmap | [image.PixelMap](../apis-image-kit/js-apis-image.md#pixelmap7) | 是 | 图片的PixelMap。 | 1659| left | number | 是 | 图片位置的左上角x轴坐标,该参数为浮点数。 | 1660| top | number | 是 | 图片位置的左上角y轴坐标,该参数为浮点数。 | 1661| samplingOptions<sup>12+</sup> | [SamplingOptions](#samplingoptions12) | 否 | 采样选项对象,默认为不使用任何参数构造的原始采样选项对象。 | 1662 1663**错误码:** 1664 1665以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 1666 1667| 错误码ID | 错误信息 | 1668| ------- | --------------------------------------------| 1669| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. | 1670 1671**示例:** 1672 1673```ts 1674import { RenderNode } from '@kit.ArkUI'; 1675import { image } from '@kit.ImageKit'; 1676import { drawing } from '@kit.ArkGraphics2D'; 1677class DrawingRenderNode extends RenderNode { 1678 pixelMap: image.PixelMap | null = null; 1679 1680 async draw(context : DrawContext) { 1681 const canvas = context.canvas; 1682 let options = new drawing.SamplingOptions(drawing.FilterMode.FILTER_MODE_NEAREST); 1683 if (this.pixelMap != null) { 1684 canvas.drawImage(this.pixelMap, 0, 0, options); 1685 } 1686 } 1687} 1688``` 1689 1690### drawImageRect<sup>12+</sup> 1691 1692drawImageRect(pixelmap: image.PixelMap, dstRect: common2D.Rect, samplingOptions?: SamplingOptions): void 1693 1694将图片绘制到画布的指定区域上。 1695 1696**系统能力**:SystemCapability.Graphics.Drawing 1697 1698**参数:** 1699 1700| 参数名 | 类型 | 必填 | 说明 | 1701| -------- | -------------------------------------------- | ---- | ------------------------------- | 1702| pixelmap | [image.PixelMap](../apis-image-kit/js-apis-image.md#pixelmap7) | 是 | 图片的PixelMap。 | 1703| dstRect | [common2D.Rect](js-apis-graphics-common2D.md#rect) | 是 | 矩形对象,用于指定画布上图片的绘制区域。 | 1704| samplingOptions | [SamplingOptions](#samplingoptions12) | 否 | 采样选项对象,默认为不使用任何参数构造的原始采样选项对象。 | 1705 1706**错误码:** 1707 1708以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 1709 1710| 错误码ID | 错误信息 | 1711| ------- | --------------------------------------------| 1712| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. | 1713 1714**示例:** 1715 1716```ts 1717import { RenderNode } from '@kit.ArkUI'; 1718import { image } from '@kit.ImageKit'; 1719import { common2D, drawing } from '@kit.ArkGraphics2D'; 1720class DrawingRenderNode extends RenderNode { 1721pixelMap: image.PixelMap | null = null; 1722 draw(context : DrawContext) { 1723 const canvas = context.canvas; 1724 let pen = new drawing.Pen(); 1725 canvas.attachPen(pen); 1726 let rect: common2D.Rect = { left: 0, top: 0, right: 200, bottom: 200 }; 1727 canvas.drawImageRect(this.pixelMap, rect); 1728 canvas.detachPen(); 1729 } 1730} 1731``` 1732 1733### drawImageRectWithSrc<sup>12+</sup> 1734 1735drawImageRectWithSrc(pixelmap: image.PixelMap, srcRect: common2D.Rect, dstRect: common2D.Rect, samplingOptions?: SamplingOptions, constraint?: SrcRectConstraint): void 1736 1737将图片的指定区域绘制到画布的指定区域。 1738 1739**系统能力**:SystemCapability.Graphics.Drawing 1740 1741**参数:** 1742 1743| 参数名 | 类型 | 必填 | 说明 | 1744| -------- | -------------------------------------------- | ---- | ------------------------------- | 1745| pixelmap | [image.PixelMap](../apis-image-kit/js-apis-image.md#pixelmap7) | 是 | 图片的PixelMap。 | 1746| srcRect | [common2D.Rect](js-apis-graphics-common2D.md#rect) | 是 | 矩形对象,用于指定图片的待绘制区域。 | 1747| dstRect | [common2D.Rect](js-apis-graphics-common2D.md#rect) | 是 | 矩形对象,用于指定画布上图片的绘制区域。 | 1748| samplingOptions | [SamplingOptions](#samplingoptions12) | 否 | 采样选项对象,默认为不使用任何参数构造的原始采样选项对象。 | 1749| constraint | [SrcRectConstraint](#srcrectconstraint12) | 否 | 源矩形区域约束类型,默认为STRICT。 | 1750 1751**错误码:** 1752 1753以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 1754 1755| 错误码ID | 错误信息 | 1756| ------- | --------------------------------------------| 1757| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. | 1758 1759**示例:** 1760 1761```ts 1762import { RenderNode } from '@kit.ArkUI'; 1763import { image } from '@kit.ImageKit'; 1764import { common2D, drawing } from '@kit.ArkGraphics2D'; 1765class DrawingRenderNode extends RenderNode { 1766pixelMap: image.PixelMap | null = null; 1767 draw(context : DrawContext) { 1768 const canvas = context.canvas; 1769 let pen = new drawing.Pen(); 1770 canvas.attachPen(pen); 1771 let srcRect: common2D.Rect = { left: 0, top: 0, right: 100, bottom: 100 }; 1772 let dstRect: common2D.Rect = { left: 100, top: 100, right: 200, bottom: 200 }; 1773 canvas.drawImageRectWithSrc(this.pixelMap, srcRect, dstRect); 1774 canvas.detachPen(); 1775 } 1776} 1777``` 1778 1779### drawColor 1780 1781drawColor(color: common2D.Color, blendMode?: BlendMode): void 1782 1783绘制背景颜色。 1784 1785**系统能力**:SystemCapability.Graphics.Drawing 1786 1787**参数:** 1788 1789| 参数名 | 类型 | 必填 | 说明 | 1790| --------- | ---------------------------------------------------- | ---- | -------------------------------- | 1791| color | [common2D.Color](js-apis-graphics-common2D.md#color) | 是 | ARGB格式的颜色,每个颜色通道是0到255之间的整数。 | 1792| blendMode | [BlendMode](#blendmode) | 否 | 颜色混合模式,默认模式为SRC_OVER。 | 1793 1794**错误码:** 1795 1796以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 1797 1798| 错误码ID | 错误信息 | 1799| ------- | --------------------------------------------| 1800| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types;3.Parameter verification failed. | 1801 1802**示例:** 1803 1804```ts 1805import { RenderNode } from '@kit.ArkUI'; 1806import { common2D, drawing } from '@kit.ArkGraphics2D'; 1807class DrawingRenderNode extends RenderNode { 1808 draw(context : DrawContext) { 1809 const canvas = context.canvas; 1810 let color: common2D.Color = { 1811 alpha : 255, 1812 red: 0, 1813 green: 10, 1814 blue: 10 1815 } 1816 canvas.drawColor(color, drawing.BlendMode.CLEAR); 1817 } 1818} 1819``` 1820 1821### drawColor<sup>12+</sup> 1822 1823drawColor(alpha: number, red: number, green: number, blue: number, blendMode?: BlendMode): void 1824 1825绘制背景颜色。性能优于[drawColor](#drawcolor)接口,推荐使用本接口。 1826 1827**系统能力**:SystemCapability.Graphics.Drawing 1828 1829**参数:** 1830 1831| 参数名 | 类型 | 必填 | 说明 | 1832| --------- | ----------------------- | ---- | ------------------------------------------------- | 1833| alpha | number | 是 | ARGB格式颜色的透明度通道值,该参数是0到255之间的整数,传入范围内的浮点数会向下取整。 | 1834| red | number | 是 | ARGB格式颜色的红色通道值,该参数是0到255之间的整数,传入范围内的浮点数会向下取整。 | 1835| green | number | 是 | ARGB格式颜色的绿色通道值,该参数是0到255之间的整数,传入范围内的浮点数会向下取整。 | 1836| blue | number | 是 | ARGB格式颜色的蓝色通道值,该参数是0到255之间的整数,传入范围内的浮点数会向下取整。 | 1837| blendMode | [BlendMode](#blendmode) | 否 | 颜色混合模式,默认模式为SRC_OVER。 | 1838 1839**错误码:** 1840 1841以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 1842 1843| 错误码ID | 错误信息 | 1844| ------- | --------------------------------------------| 1845| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types;3.Parameter verification failed. | 1846 1847**示例:** 1848 1849```ts 1850import { RenderNode } from '@kit.ArkUI'; 1851import { drawing } from '@kit.ArkGraphics2D'; 1852class DrawingRenderNode extends RenderNode { 1853 draw(context : DrawContext) { 1854 const canvas = context.canvas; 1855 canvas.drawColor(255, 0, 10, 10, drawing.BlendMode.CLEAR); 1856 } 1857} 1858``` 1859 1860### drawPixelMapMesh<sup>12+</sup> 1861 1862drawPixelMapMesh(pixelmap: image.PixelMap, meshWidth: number, meshHeight: number, vertices: Array\<number>, vertOffset: number, colors: Array\<number>, colorOffset: number): void 1863 1864在网格上绘制像素图,网格均匀分布在像素图上。 1865 1866**系统能力**:SystemCapability.Graphics.Drawing 1867 1868**参数:** 1869 1870| 参数名 | 类型 | 必填 | 说明 | 1871| ----------- | ------------- | ---- | ------------------------------- | 1872| pixelmap | [image.PixelMap](../apis-image-kit/js-apis-image.md#pixelmap7) | 是 | 用于绘制网格的像素图。 | 1873| meshWidth | number | 是 | 网格中的列数,大于0的整数。 | 1874| meshHeight | number | 是 | 网格中的行数,大于0的整数。 | 1875| vertices | Array\<number> | 是 | 顶点数组,指定网格的绘制位置,浮点数组,大小必须为((meshWidth+1) * (meshHeight+1) + vertOffset) * 2。 | 1876| vertOffset | number | 是 | 绘图前要跳过的vert元素数,大于等于0的整数。 | 1877| colors | Array\<number> | 是 | 颜色数组,在每个顶点指定一种颜色,整数数组,可为null,大小必须为(meshWidth+1) * (meshHeight+1) + colorOffset。 | 1878| colorOffset | number | 是 | 绘制前要跳过的颜色元素数,大于等于0的整数。 | 1879 1880**错误码:** 1881 1882以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 1883 1884| 错误码ID | 错误信息 | 1885| ------- | --------------------------------------------| 1886| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. | 1887 1888**示例:** 1889 1890```ts 1891import { RenderNode } from '@kit.ArkUI'; 1892import { image } from '@kit.ImageKit'; 1893import { drawing } from '@kit.ArkGraphics2D'; 1894class DrawingRenderNode extends RenderNode { 1895 pixelMap: image.PixelMap | null = null; 1896 1897 async draw(context : DrawContext) { 1898 const canvas = context.canvas; 1899 if (this.pixelMap != null) { 1900 const brush = new drawing.Brush(); // 只支持brush,使用pen没有绘制效果。 1901 canvas.attachBrush(brush); 1902 let verts : Array<number> = [0, 0, 50, 0, 410, 0, 0, 180, 50, 180, 410, 180, 0, 360, 50, 360, 410, 360]; // 18 1903 canvas.drawPixelMapMesh(this.pixelMap, 2, 2, verts, 0, null, 0); 1904 canvas.detachBrush(); 1905 } 1906 } 1907} 1908``` 1909 1910### clear<sup>12+</sup> 1911 1912clear(color: common2D.Color): void 1913 1914使用指定颜色填充画布上的裁剪区域。 1915 1916**系统能力**:SystemCapability.Graphics.Drawing 1917 1918**参数:** 1919 1920| 参数名 | 类型 | 必填 | 说明 | 1921| --------- | ---------------------------------------------------- | ---- | -------------------------------- | 1922| color | [common2D.Color](js-apis-graphics-common2D.md#color) | 是 | ARGB格式的颜色,每个颜色通道是0到255之间的整数。 | 1923 1924**错误码:** 1925 1926以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 1927 1928| 错误码ID | 错误信息 | 1929| ------- | --------------------------------------------| 1930| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. | 1931 1932**示例:** 1933 1934```ts 1935import { RenderNode } from '@kit.ArkUI'; 1936import { common2D, drawing } from '@kit.ArkGraphics2D'; 1937class DrawingRenderNode extends RenderNode { 1938 draw(context : DrawContext) { 1939 const canvas = context.canvas; 1940 let color: common2D.Color = {alpha: 255, red: 255, green: 0, blue: 0}; 1941 canvas.clear(color); 1942 } 1943} 1944``` 1945 1946### getWidth<sup>12+</sup> 1947 1948getWidth(): number 1949 1950获取画布的宽度。 1951 1952**系统能力**:SystemCapability.Graphics.Drawing 1953 1954**返回值:** 1955 1956| 类型 | 必填 | 说明 | 1957| ------ | ---- | -------------- | 1958| number | 是 | 返回画布的宽度,该参数为浮点数。 | 1959 1960**示例:** 1961 1962```ts 1963import { RenderNode } from '@kit.ArkUI'; 1964import { drawing } from '@kit.ArkGraphics2D'; 1965class DrawingRenderNode extends RenderNode { 1966 draw(context : DrawContext) { 1967 const canvas = context.canvas; 1968 let width = canvas.getWidth(); 1969 console.info('get canvas width:' + width); 1970 } 1971} 1972``` 1973 1974### getHeight<sup>12+</sup> 1975 1976getHeight(): number 1977 1978获取画布的高度。 1979 1980**系统能力**:SystemCapability.Graphics.Drawing 1981 1982**返回值:** 1983 1984| 类型 | 必填 | 说明 | 1985| ------ | ---- | -------------- | 1986| number | 是 | 返回画布的高度,该参数为浮点数。 | 1987 1988**示例:** 1989 1990```ts 1991import { RenderNode } from '@kit.ArkUI'; 1992import { drawing } from '@kit.ArkGraphics2D'; 1993class DrawingRenderNode extends RenderNode { 1994 draw(context : DrawContext) { 1995 const canvas = context.canvas; 1996 let height = canvas.getHeight(); 1997 console.log('get canvas height:' + height); 1998 } 1999} 2000``` 2001 2002### drawOval<sup>12+</sup> 2003 2004drawOval(oval: common2D.Rect): void 2005 2006在画布上绘制一个椭圆,椭圆的形状和位置由定义椭圆边界的矩形参数定义。 2007 2008**系统能力**:SystemCapability.Graphics.Drawing 2009 2010**参数** 2011 2012| 参数名 | 类型 | 必填 | 说明 | 2013| ------ | -------------------------------------------------- | ---- | -------------- | 2014| oval | [common2D.Rect](js-apis-graphics-common2D.md#rect) | 是 | 矩形区域,该矩形的内切椭圆即为待绘制椭圆。 | 2015 2016**错误码:** 2017 2018以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 2019 2020| 错误码ID | 错误信息 | 2021| ------- | --------------------------------------------| 2022| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. | 2023 2024**示例** 2025 2026```ts 2027import { RenderNode } from '@kit.ArkUI'; 2028import { common2D, drawing } from '@kit.ArkGraphics2D'; 2029class DrawingRenderNode extends RenderNode { 2030 draw(context : DrawContext) { 2031 const canvas = context.canvas; 2032 const pen = new drawing.Pen(); 2033 pen.setStrokeWidth(5); 2034 const color : common2D.Color = { alpha: 255, red: 255, green: 0, blue: 0 }; 2035 pen.setColor(color); 2036 canvas.attachPen(pen); 2037 const rect: common2D.Rect = {left:100, top:50, right:400, bottom:500}; 2038 canvas.drawOval(rect); 2039 canvas.detachPen(); 2040 } 2041} 2042``` 2043 2044### drawArc<sup>12+</sup> 2045 2046drawArc(arc: common2D.Rect, startAngle: number, sweepAngle: number): void 2047 2048在画布上绘制一段圆弧。该方法允许指定圆弧的起始角度、扫描角度。当扫描角度的绝对值大于360度时,该方法绘制的是一个椭圆。 2049 2050**系统能力**:SystemCapability.Graphics.Drawing 2051 2052**参数** 2053 2054| 参数名 | 类型 | 必填 | 说明 | 2055| ------ | -------------------------------------------------- | ---- | -------------- | 2056| arc | [common2D.Rect](js-apis-graphics-common2D.md#rect) | 是 | 包含要绘制的圆弧的椭圆的矩形边界。 | 2057| startAngle | number | 是 | 弧的起始角度,单位为度,该参数为浮点数。0度时起始点位于椭圆的右端点,正数时以顺时针方向放置起始点,负数时以逆时针方向放置起始点。 | 2058| sweepAngle | number | 是 | 弧的扫描角度,单位为度,该参数为浮点数。为正数时顺时针扫描,为负数时逆时针扫描。它的有效范围在-360度到360度之间,当绝对值大于360度时,该方法绘制的是一个椭圆。 | 2059 2060**错误码:** 2061 2062以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 2063 2064| 错误码ID | 错误信息 | 2065| ------- | --------------------------------------------| 2066| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. | 2067 2068**示例** 2069 2070```ts 2071import { RenderNode } from '@kit.ArkUI'; 2072import { common2D, drawing } from '@kit.ArkGraphics2D'; 2073class DrawingRenderNode extends RenderNode { 2074 draw(context : DrawContext) { 2075 const canvas = context.canvas; 2076 const pen = new drawing.Pen(); 2077 pen.setStrokeWidth(5); 2078 const color : common2D.Color = { alpha: 255, red: 255, green: 0, blue: 0 }; 2079 pen.setColor(color); 2080 canvas.attachPen(pen); 2081 const rect: common2D.Rect = {left:100, top:50, right:400, bottom:200}; 2082 canvas.drawArc(rect, 90, 180); 2083 canvas.detachPen(); 2084 } 2085} 2086``` 2087 2088### drawPoint 2089 2090drawPoint(x: number, y: number): void 2091 2092用于绘制一个点。 2093 2094**系统能力**:SystemCapability.Graphics.Drawing 2095 2096**参数:** 2097 2098| 参数名 | 类型 | 必填 | 说明 | 2099| ------ | ------ | ---- | ------------------- | 2100| x | number | 是 | 点的x轴坐标,该参数为浮点数。 | 2101| y | number | 是 | 点的y轴坐标,该参数为浮点数。 | 2102 2103**错误码:** 2104 2105以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 2106 2107| 错误码ID | 错误信息 | 2108| ------- | --------------------------------------------| 2109| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. | 2110 2111**示例:** 2112 2113```ts 2114import { RenderNode } from '@kit.ArkUI'; 2115import { drawing } from '@kit.ArkGraphics2D'; 2116class DrawingRenderNode extends RenderNode { 2117 draw(context : DrawContext) { 2118 const canvas = context.canvas; 2119 const pen = new drawing.Pen(); 2120 pen.setStrokeWidth(5); 2121 pen.setColor({alpha: 255, red: 255, green: 0, blue: 0}); 2122 canvas.attachPen(pen); 2123 canvas.drawPoint(10, 10); 2124 canvas.detachPen(); 2125 } 2126} 2127``` 2128 2129### drawPoints<sup>12+</sup> 2130 2131drawPoints(points: Array\<common2D.Point>, mode?: PointMode): void 2132 2133在画布上绘制一组点、线段或多边形。通过指定点的数组和绘制模式来决定如何绘制这些点。 2134 2135**系统能力**:SystemCapability.Graphics.Drawing 2136 2137**参数:** 2138 2139| 参数名 | 类型 | 必填 | 说明 | 2140| ---- | ---------------------------------------- | ---- | --------- | 2141| points | Array\<[common2D.Point](js-apis-graphics-common2D.md#point)> | 是 | 要绘制的点的数组。长度不能为0。 | 2142| mode | [PointMode](#pointmode12) | 否 | 绘制数组中的点的方式,默认为drawing.PointMode.POINTS。 | 2143 2144**错误码:** 2145 2146以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 2147 2148| 错误码ID | 错误信息 | 2149| ------- | --------------------------------------------| 2150| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified;2. Incorrect parameter types; 3. Parameter verification failed.| 2151 2152**示例:** 2153 2154```ts 2155import { RenderNode } from '@kit.ArkUI'; 2156import { common2D, drawing } from '@kit.ArkGraphics2D'; 2157class DrawingRenderNode extends RenderNode { 2158 draw(context : DrawContext) { 2159 const canvas = context.canvas; 2160 const pen = new drawing.Pen(); 2161 pen.setStrokeWidth(30); 2162 const color : common2D.Color = { alpha: 255, red: 255, green: 0, blue: 0 }; 2163 pen.setColor(color); 2164 canvas.attachPen(pen); 2165 canvas.drawPoints([{x: 100, y: 200}, {x: 150, y: 230}, {x: 200, y: 300}], drawing.PointMode.POINTS); 2166 canvas.detachPen(); 2167 } 2168} 2169``` 2170 2171### drawPath 2172 2173drawPath(path: Path): void 2174 2175用于绘制一个自定义路径,该路径包含了一组路径轮廓,每个路径轮廓可以是开放的或封闭的。 2176 2177**系统能力**:SystemCapability.Graphics.Drawing 2178 2179**参数:** 2180 2181| 参数名 | 类型 | 必填 | 说明 | 2182| ------ | ------------- | ---- | ------------------ | 2183| path | [Path](#path) | 是 | 要绘制的路径对象。 | 2184 2185**错误码:** 2186 2187以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 2188 2189| 错误码ID | 错误信息 | 2190| ------- | --------------------------------------------| 2191| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. | 2192 2193**示例:** 2194 2195```ts 2196import { RenderNode } from '@kit.ArkUI'; 2197import { drawing } from '@kit.ArkGraphics2D'; 2198class DrawingRenderNode extends RenderNode { 2199 draw(context : DrawContext) { 2200 const canvas = context.canvas; 2201 const pen = new drawing.Pen(); 2202 pen.setStrokeWidth(5); 2203 pen.setColor({alpha: 255, red: 255, green: 0, blue: 0}); 2204 let path = new drawing.Path(); 2205 path.moveTo(10,10); 2206 path.cubicTo(10, 10, 10, 10, 15, 15); 2207 path.close(); 2208 canvas.attachPen(pen); 2209 canvas.drawPath(path); 2210 canvas.detachPen(); 2211 } 2212} 2213``` 2214 2215### drawLine 2216 2217drawLine(x0: number, y0: number, x1: number, y1: number): void 2218 2219用于画一条直线段,从指定的起点到指点的终点。如果直线段的起点和终点是同一个点,无法绘制。 2220 2221**系统能力**:SystemCapability.Graphics.Drawing 2222 2223**参数:** 2224 2225| 参数名 | 类型 | 必填 | 说明 | 2226| ------ | ------ | ---- | ----------------------- | 2227| x0 | number | 是 | 线段起点的X坐标,该参数为浮点数。 | 2228| y0 | number | 是 | 线段起点的Y坐标,该参数为浮点数。 | 2229| x1 | number | 是 | 线段终点的X坐标,该参数为浮点数。 | 2230| y1 | number | 是 | 线段终点的Y坐标,该参数为浮点数。 | 2231 2232**错误码:** 2233 2234以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 2235 2236| 错误码ID | 错误信息 | 2237| ------- | --------------------------------------------| 2238| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. | 2239 2240**示例:** 2241 2242```ts 2243import { RenderNode } from '@kit.ArkUI'; 2244import { drawing } from '@kit.ArkGraphics2D'; 2245class DrawingRenderNode extends RenderNode { 2246 draw(context : DrawContext) { 2247 const canvas = context.canvas; 2248 const pen = new drawing.Pen(); 2249 pen.setStrokeWidth(5); 2250 pen.setColor({alpha: 255, red: 255, green: 0, blue: 0}); 2251 canvas.attachPen(pen); 2252 canvas.drawLine(0, 0, 20, 20); 2253 canvas.detachPen(); 2254 } 2255} 2256``` 2257 2258### drawTextBlob 2259 2260drawTextBlob(blob: TextBlob, x: number, y: number): void 2261 2262用于绘制一段文字。若构造blob的字体不支持待绘制字符,则该部分字符无法绘制。 2263 2264**系统能力**:SystemCapability.Graphics.Drawing 2265 2266**参数:** 2267 2268| 参数名 | 类型 | 必填 | 说明 | 2269| ------ | --------------------- | ---- | ------------------------------------------ | 2270| blob | [TextBlob](#textblob) | 是 | TextBlob对象。 | 2271| x | number | 是 | 所绘制出的文字基线(下图蓝线)的左端点(下图红点)的横坐标,该参数为浮点数。 | 2272| y | number | 是 | 所绘制出的文字基线(下图蓝线)的左端点(下图红点)的纵坐标,该参数为浮点数。 | 2273 2274 2275 2276**错误码:** 2277 2278以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 2279 2280| 错误码ID | 错误信息 | 2281| ------- | --------------------------------------------| 2282| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. | 2283 2284**示例:** 2285 2286```ts 2287import { RenderNode } from '@kit.ArkUI'; 2288import { drawing } from '@kit.ArkGraphics2D'; 2289class DrawingRenderNode extends RenderNode { 2290 draw(context : DrawContext) { 2291 const canvas = context.canvas; 2292 const brush = new drawing.Brush(); 2293 brush.setColor({alpha: 255, red: 255, green: 0, blue: 0}); 2294 const font = new drawing.Font(); 2295 font.setSize(20); 2296 const textBlob = drawing.TextBlob.makeFromString("Hello, drawing", font, drawing.TextEncoding.TEXT_ENCODING_UTF8); 2297 canvas.attachBrush(brush); 2298 canvas.drawTextBlob(textBlob, 20, 20); 2299 canvas.detachBrush(); 2300 } 2301} 2302``` 2303 2304### drawSingleCharacter<sup>12+</sup> 2305 2306drawSingleCharacter(text: string, font: Font, x: number, y: number): void 2307 2308用于绘制单个字符。当前字型中的字体不支持待绘制字符时,退化到使用系统字体绘制字符。 2309 2310**系统能力**:SystemCapability.Graphics.Drawing 2311 2312**参数** 2313 2314| 参数名 | 类型 | 必填 | 说明 | 2315| ------ | ------------------- | ---- | ----------- | 2316| text | string | 是 | 待绘制的单个字符,字符串的长度必须为1。 | 2317| font | [Font](#font) | 是 | 字型对象。 | 2318| x | number | 是 | 所绘制出的字符基线(下图蓝线)的左端点(下图红点)的横坐标,该参数为浮点数。 | 2319| y | number | 是 | 所绘制出的字符基线(下图蓝线)的左端点(下图红点)的纵坐标,该参数为浮点数。 | 2320 2321 2322 2323**错误码:** 2324 2325以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 2326 2327| 错误码ID | 错误信息 | 2328| ------- | --------------------------------------------| 2329| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types;3.Parameter verification failed. | 2330 2331**示例** 2332 2333```ts 2334import { RenderNode } from '@kit.ArkUI'; 2335import { drawing } from '@kit.ArkGraphics2D'; 2336 2337class DrawingRenderNode extends RenderNode { 2338 draw(context : DrawContext) { 2339 const canvas = context.canvas; 2340 const brush = new drawing.Brush(); 2341 brush.setColor({alpha: 255, red: 255, green: 0, blue: 0}); 2342 const font = new drawing.Font(); 2343 font.setSize(20); 2344 canvas.attachBrush(brush); 2345 canvas.drawSingleCharacter("你", font, 100, 100); 2346 canvas.drawSingleCharacter("好", font, 120, 100); 2347 canvas.detachBrush(); 2348 } 2349} 2350``` 2351 2352### drawRegion<sup>12+</sup> 2353 2354drawRegion(region: Region): void 2355 2356用于绘制一个区域。 2357 2358**系统能力**:SystemCapability.Graphics.Drawing 2359 2360**参数** 2361 2362| 参数名 | 类型 | 必填 | 说明 | 2363| ------ | ------------------- | ---- | ----------- | 2364| region | [Region](#region12) | 是 | 绘制的区域。 | 2365 2366**错误码:** 2367 2368以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 2369 2370| 错误码ID | 错误信息 | 2371| ------- | --------------------------------------------| 2372| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. | 2373 2374**示例** 2375 2376```ts 2377import { RenderNode } from '@kit.ArkUI'; 2378class DrawingRenderNode extends RenderNode { 2379 draw(context : DrawContext) { 2380 const canvas = context.canvas; 2381 const pen = new drawing.Pen(); 2382 let region = new drawing.Region(); 2383 pen.setStrokeWidth(10); 2384 pen.setColor({ alpha: 255, red: 255, green: 0, blue: 0 }); 2385 canvas.attachPen(pen); 2386 region.setRect(100, 100, 400, 400); 2387 canvas.drawRegion(region); 2388 canvas.detachPen(); 2389 } 2390} 2391``` 2392 2393### attachPen 2394 2395attachPen(pen: Pen): void 2396 2397绑定画笔给画布,画布将使用画笔的样式和颜色去绘制图形形状的轮廓。 2398 2399> **说明:** 2400> 2401> 执行该方法后,若pen的效果发生改变并且开发者希望该变化生效于接下来的绘制动作,需要再次执行该方法以确保变化生效。 2402 2403**系统能力**:SystemCapability.Graphics.Drawing 2404 2405**参数:** 2406 2407| 参数名 | 类型 | 必填 | 说明 | 2408| ------ | ----------- | ---- | ---------- | 2409| pen | [Pen](#pen) | 是 | 画笔对象。 | 2410 2411**错误码:** 2412 2413以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 2414 2415| 错误码ID | 错误信息 | 2416| ------- | --------------------------------------------| 2417| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. | 2418 2419**示例:** 2420 2421```ts 2422import { RenderNode } from '@kit.ArkUI'; 2423import { drawing } from '@kit.ArkGraphics2D'; 2424class DrawingRenderNode extends RenderNode { 2425 draw(context : DrawContext) { 2426 const canvas = context.canvas; 2427 const pen = new drawing.Pen(); 2428 pen.setStrokeWidth(5); 2429 pen.setColor({alpha: 255, red: 255, green: 0, blue: 0}); 2430 canvas.attachPen(pen); 2431 canvas.drawRect({ left : 0, right : 10, top : 0, bottom : 10 }); 2432 canvas.detachPen(); 2433 } 2434} 2435``` 2436 2437### attachBrush 2438 2439attachBrush(brush: Brush): void 2440 2441绑定画刷给画布,画布将使用画刷的样式和颜色去绘制图形形状,并在其内部进行填充。 2442 2443> **说明:** 2444> 2445> 执行该方法后,若brush的效果发生改变并且开发者希望该变化生效于接下来的绘制动作,需要再次执行该方法以确保变化生效。 2446 2447**系统能力**:SystemCapability.Graphics.Drawing 2448 2449**参数:** 2450 2451| 参数名 | 类型 | 必填 | 说明 | 2452| ------ | --------------- | ---- | ---------- | 2453| brush | [Brush](#brush) | 是 | 画刷对象。 | 2454 2455**错误码:** 2456 2457以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 2458 2459| 错误码ID | 错误信息 | 2460| ------- | --------------------------------------------| 2461| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. | 2462 2463**示例:** 2464 2465```ts 2466import { RenderNode } from '@kit.ArkUI'; 2467import { drawing } from '@kit.ArkGraphics2D'; 2468class DrawingRenderNode extends RenderNode { 2469 draw(context : DrawContext) { 2470 const canvas = context.canvas; 2471 const brush = new drawing.Brush(); 2472 brush.setColor({alpha: 255, red: 255, green: 0, blue: 0}); 2473 canvas.attachBrush(brush); 2474 canvas.drawRect({ left : 0, right : 10, top : 0, bottom : 10 }); 2475 canvas.detachBrush(); 2476 } 2477} 2478``` 2479 2480### detachPen 2481 2482detachPen(): void 2483 2484用于去除掉画布中的画笔,画布将不再使用画笔去绘制图形形状的轮廓。 2485 2486**系统能力**:SystemCapability.Graphics.Drawing 2487 2488**示例:** 2489 2490```ts 2491import { RenderNode } from '@kit.ArkUI'; 2492import { drawing } from '@kit.ArkGraphics2D'; 2493class DrawingRenderNode extends RenderNode { 2494 draw(context : DrawContext) { 2495 const canvas = context.canvas; 2496 const pen = new drawing.Pen(); 2497 pen.setStrokeWidth(5); 2498 pen.setColor({alpha: 255, red: 255, green: 0, blue: 0}); 2499 canvas.attachPen(pen); 2500 canvas.drawRect({ left : 0, right : 10, top : 0, bottom : 10 }); 2501 canvas.detachPen(); 2502 } 2503} 2504``` 2505 2506### detachBrush 2507 2508detachBrush(): void 2509 2510用于去除掉画布中的画刷,画布将不再使用画刷去绘制图形形状,也不会进行填充。 2511 2512**系统能力**:SystemCapability.Graphics.Drawing 2513 2514**示例:** 2515 2516```ts 2517import { RenderNode } from '@kit.ArkUI'; 2518import { drawing } from '@kit.ArkGraphics2D'; 2519class DrawingRenderNode extends RenderNode { 2520 draw(context : DrawContext) { 2521 const canvas = context.canvas; 2522 const brush = new drawing.Brush(); 2523 brush.setColor({alpha: 255, red: 255, green: 0, blue: 0}); 2524 canvas.attachBrush(brush); 2525 canvas.drawRect({ left : 0, right : 10, top : 0, bottom : 10 }); 2526 canvas.detachBrush(); 2527 } 2528} 2529``` 2530 2531### clipPath<sup>12+</sup> 2532 2533clipPath(path: Path, clipOp?: ClipOp, doAntiAlias?: boolean): void 2534 2535用于裁剪一个自定义路径。 2536 2537**系统能力**:SystemCapability.Graphics.Drawing 2538 2539**参数:** 2540 2541| 参数名 | 类型 | 必填 | 说明 | 2542| ------------ | ----------------- | ---- | ------------------------------------| 2543| path | [Path](#path) | 是 | 路径对象。 | 2544| clipOp | [ClipOp](#clipop12) | 否 | 裁剪方式。默认为INTERSECT。 | 2545| doAntiAlias | boolean | 否 | 表示是否使能抗锯齿绘制。true表示使能,false表示不使能。默认为false。 | 2546 2547**错误码:** 2548 2549以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 2550 2551| 错误码ID | 错误信息 | 2552| ------- | --------------------------------------------| 2553| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. | 2554 2555**示例:** 2556 2557```ts 2558import { RenderNode } from '@kit.ArkUI'; 2559import { common2D, drawing } from '@kit.ArkGraphics2D'; 2560class DrawingRenderNode extends RenderNode { 2561 draw(context : DrawContext) { 2562 const canvas = context.canvas; 2563 let path = new drawing.Path(); 2564 path.moveTo(10, 10); 2565 path.cubicTo(100, 100, 80, 150, 300, 150); 2566 path.close(); 2567 canvas.clipPath(path, drawing.ClipOp.INTERSECT, true); 2568 canvas.clear({alpha: 255, red: 255, green: 0, blue: 0}); 2569 } 2570} 2571``` 2572 2573### clipRect<sup>12+</sup> 2574 2575clipRect(rect: common2D.Rect, clipOp?: ClipOp, doAntiAlias?: boolean): void 2576 2577用于裁剪一个矩形。 2578 2579**系统能力**:SystemCapability.Graphics.Drawing 2580 2581**参数:** 2582 2583| 参数名 | 类型 | 必填 | 说明 | 2584| ----------- | ---------------------------------------- | ---- | ------------------- | 2585| rect | [common2D.Rect](js-apis-graphics-common2D.md#rect) | 是 | 需要裁剪的矩形区域。 | 2586| clipOp | [ClipOp](#clipop12) | 否 | 裁剪方式。默认为INTERSECT。 | 2587| doAntiAlias | boolean | 否 | 表示是否使能抗锯齿绘制。true表示使能,false表示不使能。默认为false。 | 2588 2589**错误码:** 2590 2591以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 2592 2593| 错误码ID | 错误信息 | 2594| ------- | --------------------------------------------| 2595| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. | 2596 2597**示例:** 2598 2599```ts 2600import { RenderNode } from '@kit.ArkUI'; 2601import { common2D, drawing } from '@kit.ArkGraphics2D'; 2602class DrawingRenderNode extends RenderNode { 2603 draw(context : DrawContext) { 2604 const canvas = context.canvas; 2605 canvas.clipRect({left : 10, right : 500, top : 300, bottom : 900}, drawing.ClipOp.DIFFERENCE, true); 2606 canvas.clear({alpha: 255, red: 255, green: 0, blue: 0}); 2607 } 2608} 2609``` 2610 2611### save<sup>12+</sup> 2612 2613save(): number 2614 2615用于保存当前画布的状态(画布矩阵)到栈顶。需要与恢复接口[restore](#restore12)配合使用。 2616 2617**系统能力**:SystemCapability.Graphics.Drawing 2618 2619**返回值:** 2620 2621| 类型 | 说明 | 2622| ------ | ------------------ | 2623| number | 画布状态个数,该参数为正整数。 | 2624 2625**示例:** 2626 2627```ts 2628import { RenderNode } from '@kit.ArkUI'; 2629import { common2D, drawing } from '@kit.ArkGraphics2D'; 2630class DrawingRenderNode extends RenderNode { 2631 draw(context : DrawContext) { 2632 const canvas = context.canvas; 2633 let rect: common2D.Rect = {left: 10, right: 200, top: 100, bottom: 300}; 2634 canvas.drawRect(rect); 2635 let saveCount = canvas.save(); 2636 } 2637} 2638``` 2639 2640### saveLayer<sup>12+</sup> 2641 2642saveLayer(rect?: common2D.Rect | null, brush?: Brush | null): number 2643 2644保存当前画布的矩阵和裁剪区域,并为后续绘制分配位图。调用恢复接口[restore](#restore12)将会舍弃对矩阵和裁剪区域做的更改,并绘制位图。 2645 2646**系统能力**:SystemCapability.Graphics.Drawing 2647 2648**参数:** 2649 2650| 参数名 | 类型 | 必填 | 说明 | 2651| ---- | ------ | ---- | ----------------- | 2652| rect | [common2D.Rect](js-apis-graphics-common2D.md#rect)\|null | 否 | 矩形对象,用于限制图层大小,默认为当前画布大小。 | 2653| brush | [Brush](#brush)\|null | 否 | 画刷对象,绘制位图时会应用画刷对象的透明度,颜色滤波器效果和混合模式,默认不设置额外效果。 | 2654 2655**返回值:** 2656 2657| 类型 | 说明 | 2658| ------ | ------------------ | 2659| number | 返回调用前保存的画布状态数,该参数为正整数。 | 2660 2661**错误码:** 2662 2663以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 2664 2665| 错误码ID | 错误信息 | 2666| ------- | --------------------------------------------| 2667| 401 | Parameter error. Possible causes: Mandatory parameters are left unspecified. | 2668 2669**示例:** 2670 2671```ts 2672import { RenderNode } from '@kit.ArkUI'; 2673import { common2D, drawing } from '@kit.ArkGraphics2D'; 2674class DrawingRenderNode extends RenderNode { 2675 draw(context : DrawContext) { 2676 const canvas = context.canvas; 2677 canvas.saveLayer(null, null); 2678 const brushRect = new drawing.Brush(); 2679 const colorRect: common2D.Color = {alpha: 255, red: 255, green: 255, blue: 0}; 2680 brushRect.setColor(colorRect); 2681 canvas.attachBrush(brushRect); 2682 const rect: common2D.Rect = {left:100, top:100, right:500, bottom:500}; 2683 canvas.drawRect(rect); 2684 2685 const brush = new drawing.Brush(); 2686 brush.setBlendMode(drawing.BlendMode.DST_OUT); 2687 canvas.saveLayer(rect, brush); 2688 2689 const brushCircle = new drawing.Brush(); 2690 const colorCircle: common2D.Color = {alpha: 255, red: 0, green: 0, blue: 255}; 2691 brushCircle.setColor(colorCircle); 2692 canvas.attachBrush(brushCircle); 2693 canvas.drawCircle(500, 500, 200); 2694 canvas.restore(); 2695 canvas.restore(); 2696 canvas.detachBrush(); 2697 } 2698} 2699``` 2700 2701### scale<sup>12+</sup> 2702 2703scale(sx: number, sy: number): void 2704 2705用于画布缩放。 2706 2707**系统能力**:SystemCapability.Graphics.Drawing 2708 2709**参数:** 2710 2711| 参数名 | 类型 | 必填 | 说明 | 2712| ---- | ------ | ---- | ----------------- | 2713| sx | number | 是 | x轴方向的缩放比例,该参数为浮点数。 | 2714| sy | number | 是 | y轴方向的缩放比例,该参数为浮点数。 | 2715 2716**错误码:** 2717 2718以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 2719 2720| 错误码ID | 错误信息 | 2721| ------- | --------------------------------------------| 2722| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. | 2723 2724**示例:** 2725 2726```ts 2727import { RenderNode } from '@kit.ArkUI'; 2728import { common2D, drawing } from '@kit.ArkGraphics2D'; 2729class DrawingRenderNode extends RenderNode { 2730 draw(context : DrawContext) { 2731 const canvas = context.canvas; 2732 const pen = new drawing.Pen(); 2733 pen.setStrokeWidth(5); 2734 pen.setColor({alpha: 255, red: 255, green: 0, blue: 0}); 2735 canvas.attachPen(pen); 2736 canvas.scale(2, 0.5); 2737 canvas.drawRect({left : 10, right : 500, top : 300, bottom : 900}); 2738 canvas.detachPen(); 2739 } 2740} 2741``` 2742 2743### skew<sup>12+</sup> 2744 2745skew(sx: number, sy: number) : void 2746 2747用于画布倾斜变换,包括水平轴和垂直轴上的偏移。 2748 2749**系统能力**:SystemCapability.Graphics.Drawing 2750 2751**参数:** 2752 2753| 参数名 | 类型 | 必填 | 说明 | 2754| ---- | ------ | ---- | ----------------- | 2755| sx | number | 是 | x轴上的倾斜量,该参数为浮点数。正值会使绘制沿y轴增量方向向右倾斜;负值会使绘制沿y轴增量方向向左倾斜。 | 2756| sy | number | 是 | y轴上的倾斜量,该参数为浮点数。正值会使绘制沿x轴增量方向向下倾斜;负值会使绘制沿x轴增量方向向上倾斜。 | 2757 2758**错误码:** 2759 2760以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 2761 2762| 错误码ID | 错误信息 | 2763| ------- | --------------------------------------------| 2764| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. | 2765 2766**示例:** 2767 2768```ts 2769import { RenderNode } from '@kit.ArkUI'; 2770import { common2D, drawing } from '@kit.ArkGraphics2D'; 2771class DrawingRenderNode extends RenderNode { 2772 draw(context : DrawContext) { 2773 const canvas = context.canvas; 2774 const pen = new drawing.Pen(); 2775 pen.setStrokeWidth(5); 2776 pen.setColor({alpha: 255, red: 255, green: 0, blue: 0}); 2777 canvas.attachPen(pen); 2778 canvas.skew(0.1, 0.1); 2779 canvas.drawRect({left : 10, right : 500, top : 300, bottom : 900}); 2780 canvas.detachPen(); 2781 } 2782} 2783``` 2784 2785### rotate<sup>12+</sup> 2786 2787rotate(degrees: number, sx: number, sy: number) : void 2788 2789用于画布旋转一定的角度。 2790 2791**系统能力**:SystemCapability.Graphics.Drawing 2792 2793**参数:** 2794 2795| 参数名 | 类型 | 必填 | 说明 | 2796| ---- | ------ | ------ | ------------------------ | 2797| degrees | number | 是 | 旋转角度,单位为度,该参数为浮点数,正数为顺时针旋转,负数为逆时针旋转。 | 2798| sx | number | 是 | 旋转中心的横坐标,该参数为浮点数。 | 2799| sy | number | 是 | 旋转中心的纵坐标,该参数为浮点数。 | 2800 2801**错误码:** 2802 2803以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 2804 2805| 错误码ID | 错误信息 | 2806| ------- | --------------------------------------------| 2807| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. | 2808 2809**示例:** 2810 2811```ts 2812import { RenderNode } from '@kit.ArkUI'; 2813import { common2D, drawing } from '@kit.ArkGraphics2D'; 2814class DrawingRenderNode extends RenderNode { 2815 draw(context : DrawContext) { 2816 const canvas = context.canvas; 2817 const pen = new drawing.Pen(); 2818 pen.setStrokeWidth(5); 2819 pen.setColor({alpha: 255, red: 255, green: 0, blue: 0}); 2820 canvas.attachPen(pen); 2821 canvas.rotate(30, 100, 100); 2822 canvas.drawRect({left : 10, right : 500, top : 300, bottom : 900}); 2823 canvas.detachPen(); 2824 } 2825} 2826``` 2827 2828### translate<sup>12+</sup> 2829 2830translate(dx: number, dy: number): void 2831 2832用于平移画布一段距离。 2833 2834**系统能力**:SystemCapability.Graphics.Drawing 2835 2836**参数:** 2837 2838| 参数名 | 类型 | 必填 | 说明 | 2839| ----- | ------ | ---- | ------------------- | 2840| dx | number | 是 | x轴方向的移动距离,该参数为浮点数。 | 2841| dy | number | 是 | y轴方向的移动距离,该参数为浮点数。 | 2842 2843**错误码:** 2844 2845以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 2846 2847| 错误码ID | 错误信息 | 2848| ------- | --------------------------------------------| 2849| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. | 2850 2851**示例:** 2852 2853```ts 2854import { RenderNode } from '@kit.ArkUI'; 2855import { common2D, drawing } from '@kit.ArkGraphics2D'; 2856class DrawingRenderNode extends RenderNode { 2857 draw(context : DrawContext) { 2858 const canvas = context.canvas; 2859 const pen = new drawing.Pen(); 2860 pen.setStrokeWidth(5); 2861 pen.setColor({alpha: 255, red: 255, green: 0, blue: 0}); 2862 canvas.attachPen(pen); 2863 canvas.translate(10, 10); 2864 canvas.drawRect({left : 10, right : 500, top : 300, bottom : 900}); 2865 canvas.detachPen(); 2866 } 2867} 2868``` 2869 2870### getSaveCount<sup>12+</sup> 2871 2872getSaveCount(): number 2873 2874用于获取栈中保存的画布状态(画布矩阵)的数量。 2875 2876**系统能力**:SystemCapability.Graphics.Drawing 2877 2878**返回值:** 2879 2880| 类型 | 说明 | 2881| ------ | ------------------------------------ | 2882| number | 已保存的画布状态的数量,该参数为正整数。 | 2883 2884**示例:** 2885 2886```ts 2887import { RenderNode } from '@kit.ArkUI'; 2888import { common2D, drawing } from '@kit.ArkGraphics2D'; 2889class DrawingRenderNode extends RenderNode { 2890 draw(context : DrawContext) { 2891 const canvas = context.canvas; 2892 const pen = new drawing.Pen(); 2893 pen.setStrokeWidth(5); 2894 pen.setColor({alpha: 255, red: 255, green: 0, blue: 0}); 2895 canvas.attachPen(pen); 2896 canvas.drawRect({left: 10, right: 200, top: 100, bottom: 300}); 2897 canvas.save(); 2898 canvas.drawRect({left : 10, right : 500, top : 300, bottom : 900}); 2899 canvas.getSaveCount(); 2900 canvas.detachPen(); 2901 } 2902} 2903``` 2904 2905### restoreToCount<sup>12+</sup> 2906 2907restoreToCount(count: number): void 2908 2909用于恢复到指定数量的画布状态(画布矩阵)。 2910 2911**系统能力**:SystemCapability.Graphics.Drawing 2912 2913**参数:** 2914 2915| 参数名 | 类型 | 必填 | 说明 | 2916| ----- | ------ | ---- | ----------------------------- | 2917| count | number | 是 | 要恢复的画布状态深度,该参数为整数。小于等于1时,恢复为初始状态;大于已保存的画布状态数量时,不执行任何操作。 | 2918 2919**错误码:** 2920 2921以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 2922 2923| 错误码ID | 错误信息 | 2924| ------- | --------------------------------------------| 2925| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. | 2926 2927**示例:** 2928 2929```ts 2930import { RenderNode } from '@kit.ArkUI'; 2931import { common2D, drawing } from '@kit.ArkGraphics2D'; 2932class DrawingRenderNode extends RenderNode { 2933 draw(context : DrawContext) { 2934 const canvas = context.canvas; 2935 const pen = new drawing.Pen(); 2936 pen.setStrokeWidth(5); 2937 pen.setColor({alpha: 255, red: 255, green: 0, blue: 0}); 2938 canvas.attachPen(pen); 2939 canvas.drawRect({left: 10, right: 200, top: 100, bottom: 300}); 2940 canvas.save(); 2941 canvas.drawRect({left: 10, right: 200, top: 100, bottom: 500}); 2942 canvas.save(); 2943 canvas.drawRect({left: 100, right: 300, top: 100, bottom: 500}); 2944 canvas.save(); 2945 canvas.restoreToCount(2); 2946 canvas.drawRect({left : 10, right : 500, top : 300, bottom : 900}); 2947 canvas.detachPen(); 2948 } 2949} 2950``` 2951 2952### restore<sup>12+</sup> 2953 2954restore(): void 2955 2956用于恢复保存在栈顶的画布状态(画布矩阵)。 2957 2958**系统能力**:SystemCapability.Graphics.Drawing 2959 2960**示例:** 2961 2962```ts 2963import { RenderNode } from '@kit.ArkUI'; 2964import { common2D, drawing } from '@kit.ArkGraphics2D'; 2965class DrawingRenderNode extends RenderNode { 2966 draw(context : DrawContext) { 2967 const canvas = context.canvas; 2968 const pen = new drawing.Pen(); 2969 pen.setStrokeWidth(5); 2970 pen.setColor({alpha: 255, red: 255, green: 0, blue: 0}); 2971 canvas.attachPen(pen); 2972 canvas.restore(); 2973 canvas.detachPen(); 2974 } 2975} 2976``` 2977 2978### concatMatrix<sup>12+</sup> 2979 2980concatMatrix(matrix: Matrix): void 2981 2982画布现有矩阵左乘以传入矩阵,不影响该接口之前的绘制操作。 2983 2984**系统能力**:SystemCapability.Graphics.Drawing 2985 2986**参数:** 2987 2988| 参数名 | 类型 | 必填 | 说明 | 2989| ------ | ----------------- | ---- | ----- | 2990| matrix | [Matrix](#matrix12) | 是 | 矩阵对象。 | 2991 2992**错误码:** 2993 2994以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 2995 2996| 错误码ID | 错误信息 | 2997| ------- | --------------------------------------------| 2998| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. | 2999 3000**示例:** 3001 3002```ts 3003import { RenderNode } from '@kit.ArkUI'; 3004import { drawing } from '@kit.ArkGraphics2D'; 3005class DrawingRenderNode extends RenderNode { 3006 draw(context : DrawContext) { 3007 const canvas = context.canvas; 3008 let matrix = new drawing.Matrix(); 3009 matrix.setMatrix([5, 0, 0, 0, 1, 2, 0, 0, 1]); 3010 canvas.concatMatrix(matrix); 3011 canvas.drawRect({left: 10, right: 200, top: 100, bottom: 500}); 3012 } 3013} 3014``` 3015 3016### setMatrix<sup>12+</sup> 3017 3018setMatrix(matrix: Matrix): void 3019 3020设置画布的矩阵。 3021 3022**系统能力**:SystemCapability.Graphics.Drawing 3023 3024**参数:** 3025 3026| 参数名 | 类型 | 必填 | 说明 | 3027| ------ | ----------------- | ---- | ----- | 3028| matrix | [Matrix](#matrix12) | 是 | 矩阵对象。 | 3029 3030**错误码:** 3031 3032以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 3033 3034| 错误码ID | 错误信息 | 3035| ------- | --------------------------------------------| 3036| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. | 3037 3038**示例:** 3039 3040```ts 3041import { RenderNode } from '@kit.ArkUI'; 3042import { drawing } from '@kit.ArkGraphics2D'; 3043class DrawingRenderNode extends RenderNode { 3044 draw(context : DrawContext) { 3045 const canvas = context.canvas; 3046 let matrix = new drawing.Matrix() 3047 matrix.setMatrix([5, 0, 0, 0, 1, 1, 0, 0, 1]); 3048 canvas.setMatrix(matrix); 3049 canvas.drawRect({left: 10, right: 200, top: 100, bottom: 500}); 3050 } 3051} 3052``` 3053 3054### isClipEmpty<sup>12+</sup> 3055 3056isClipEmpty(): boolean 3057 3058用于判断裁剪后可绘制区域是否为空。 3059 3060**系统能力**:SystemCapability.Graphics.Drawing 3061 3062**返回值:** 3063 3064| 类型 | 说明 | 3065| --------------------- | -------------- | 3066| boolean | 返回画布的可绘制区域是否为空的结果,true表示为空,false表示不为空。 | 3067 3068**示例:** 3069 3070```ts 3071import { RenderNode } from '@kit.ArkUI'; 3072import { drawing } from '@kit.ArkGraphics2D'; 3073class DrawingRenderNode extends RenderNode { 3074 draw(context : DrawContext) { 3075 const canvas = context.canvas; 3076 if (canvas.isClipEmpty()) { 3077 console.info("canvas.isClipEmpty() returned true"); 3078 } else { 3079 console.info("canvas.isClipEmpty() returned false"); 3080 } 3081 } 3082} 3083``` 3084 3085### clipRegion<sup>12+</sup> 3086 3087clipRegion(region: Region, clipOp?: ClipOp): void 3088 3089在画布上裁剪一个区域。 3090 3091**系统能力**:SystemCapability.Graphics.Drawing 3092 3093**参数:** 3094 3095| 参数名 | 类型 | 必填 | 说明 | 3096| --------------- | ------- | ---- | ----------------------------------------------------------- | 3097| region | [Region](#region12) | 是 | 区域对象,表示裁剪范围。 | 3098| clipOp | [ClipOp](#clipop12) | 否 | 裁剪方式,默认为INTERSECT。 | 3099 3100**错误码:** 3101 3102以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 3103 3104| 错误码ID | 错误信息 | 3105| ------- | --------------------------------------------| 3106| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. | 3107 3108**示例:** 3109 3110```ts 3111import { RenderNode } from '@kit.ArkUI'; 3112import { drawing } from '@kit.ArkGraphics2D'; 3113class DrawingRenderNode extends RenderNode { 3114 draw(context : DrawContext) { 3115 const canvas = context.canvas; 3116 let region : drawing.Region = new drawing.Region(); 3117 region.setRect(0, 0, 500, 500); 3118 canvas.clipRegion(region); 3119 let color: common2D.Color = {alpha: 255, red: 255, green: 0, blue: 0}; 3120 canvas.clear(color); 3121 } 3122} 3123``` 3124 3125### clipRoundRect<sup>12+</sup> 3126 3127clipRoundRect(roundRect: RoundRect, clipOp?: ClipOp, doAntiAlias?: boolean): void 3128 3129在画布上裁剪一个圆角矩形。 3130 3131**系统能力**:SystemCapability.Graphics.Drawing 3132 3133**参数:** 3134 3135| 参数名 | 类型 | 必填 | 说明 | 3136| --------------- | ------- | ---- | ----------------------------------------------------------- | 3137| roundRect | [RoundRect](#roundrect12) | 是 | 圆角矩形对象,表示裁剪范围。 | 3138| clipOp | [ClipOp](#clipop12) | 否 | 裁剪方式,默认为INTERSECT。 | 3139| doAntiAlias | boolean | 否 | 表示是否使能抗锯齿。true表示使能,false表示不使能。默认为false。 | 3140 3141**错误码:** 3142 3143以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 3144 3145| 错误码ID | 错误信息 | 3146| ------- | --------------------------------------------| 3147| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. | 3148 3149**示例:** 3150 3151```ts 3152import { RenderNode } from '@kit.ArkUI'; 3153import { common2D, drawing } from '@kit.ArkGraphics2D'; 3154class DrawingRenderNode extends RenderNode { 3155 draw(context : DrawContext) { 3156 const canvas = context.canvas; 3157 let rect: common2D.Rect = { left: 10, top: 100, right: 200, bottom: 300 }; 3158 let roundRect = new drawing.RoundRect(rect, 10, 10); 3159 canvas.clipRoundRect(roundRect); 3160 let color: common2D.Color = {alpha: 255, red: 255, green: 0, blue: 0}; 3161 canvas.clear(color); 3162 } 3163} 3164``` 3165 3166### resetMatrix<sup>12+</sup> 3167 3168resetMatrix(): void 3169 3170重置当前画布的矩阵为单位矩阵。 3171 3172**系统能力**:SystemCapability.Graphics.Drawing 3173 3174**示例:** 3175 3176```ts 3177import { RenderNode } from '@kit.ArkUI'; 3178import { drawing } from '@kit.ArkGraphics2D'; 3179class DrawingRenderNode extends RenderNode { 3180 draw(context : DrawContext) { 3181 const canvas = context.canvas; 3182 canvas.scale(4, 6); 3183 canvas.resetMatrix(); 3184 } 3185} 3186``` 3187 3188## ImageFilter<sup>12+</sup> 3189 3190图像滤波器。 3191 3192### createBlurImageFilter<sup>12+</sup> 3193 3194static createBlurImageFilter(sigmaX: number, sigmaY: number, tileMode: TileMode, imageFilter?: ImageFilter | null ): ImageFilter 3195 3196创建具有模糊效果的图像滤波器。 3197 3198**系统能力**:SystemCapability.Graphics.Drawing 3199 3200**参数:** 3201 3202| 参数名 | 类型 | 必填 | 说明 | 3203| --------------- | ------- | ---- | ----------------------------------------------------------- | 3204| sigmaX | number | 是 | 表示沿x轴方向上高斯模糊的标准差,必须大于0,该参数为浮点数。 | 3205| sigmaY | number | 是 | 表示沿y轴方向上高斯模糊的标准差,必须大于0,该参数为浮点数。 | 3206| tileMode | [TileMode](#tilemode12)| 是 | 表示在边缘处应用的平铺模式。 | 3207| imageFilter | [ImageFilter](#imagefilter12) \| null | 否 | 表示要和当前图像滤波器叠加的输入滤波器,默认为null,表示直接将当前图像滤波器作用于原始图像。 | 3208 3209**返回值:** 3210 3211| 类型 | 说明 | 3212| --------------------- | -------------- | 3213| [ImageFilter](#imagefilter12) | 返回创建的图像滤波器。 | 3214 3215**错误码:** 3216 3217以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 3218 3219| 错误码ID | 错误信息 | 3220| ------- | --------------------------------------------| 3221| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types;3.Parameter verification failed. | 3222 3223**示例:** 3224 3225```ts 3226import { drawing } from '@kit.ArkGraphics2D'; 3227let imgFilter = drawing.ImageFilter.createBlurImageFilter(5, 10, drawing.TileMode.CLAMP); 3228``` 3229 3230### createFromColorFilter<sup>12+</sup> 3231 3232static createFromColorFilter(colorFilter: ColorFilter, imageFilter?: ImageFilter | null): ImageFilter 3233 3234创建一个将颜色滤波器应用于传入的图像滤波器的图像滤波器。 3235 3236**系统能力**:SystemCapability.Graphics.Drawing 3237 3238**参数:** 3239 3240| 参数名 | 类型 | 必填 | 说明 | 3241| --------------- | ------- | ---- | ----------------------------------------------------------- | 3242| colorFilter | [ColorFilter](#colorfilter) | 是 | 表示颜色滤波器。 | 3243| imageFilter | [ImageFilter](#imagefilter12) \| null | 否 | 表示要和当前图像滤波器叠加的输入滤波器,默认为null,表示直接将当前图像滤波器作用于原始图像。 | 3244 3245**返回值:** 3246 3247| 类型 | 说明 | 3248| --------------------- | -------------- | 3249| [ImageFilter](#imagefilter12) | 返回创建的图像滤波器。 | 3250 3251**错误码:** 3252 3253以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 3254 3255| 错误码ID | 错误信息 | 3256| ------- | --------------------------------------------| 3257| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. | 3258 3259**示例:** 3260 3261```ts 3262import { drawing } from '@kit.ArkGraphics2D'; 3263let imgFilter = drawing.ImageFilter.createBlurImageFilter(5, 10, drawing.TileMode.CLAMP); 3264let clolorfilter = drawing.ColorFilter.createSRGBGammaToLinear(); 3265let imgFilter1 = drawing.ImageFilter.createFromColorFilter(clolorfilter, imgFilter); 3266``` 3267 3268## TextBlobRunBuffer 3269 3270描述一行文字中具有相同属性的连续字形。 3271 3272**系统能力**:SystemCapability.Graphics.Drawing 3273 3274| 名称 | 类型 | 可读 | 可写 | 说明 | 3275| --------- | ------ | ---- | ---- | ------------------------- | 3276| glyph | number | 是 | 是 | 存储文字的索引,该参数为整数,传入浮点类型时向下取整。 | 3277| positionX | number | 是 | 是 | 文本的起点x轴坐标,该参数为浮点数。 | 3278| positionY | number | 是 | 是 | 文本的起点y轴坐标,该参数为浮点数。 | 3279 3280## TextEncoding 3281 3282文本的编码类型枚举。 3283 3284**系统能力**:SystemCapability.Graphics.Drawing 3285 3286| 名称 | 值 | 说明 | 3287| ---------------------- | ---- | ------------------------------ | 3288| TEXT_ENCODING_UTF8 | 0 | 使用1个字节表示UTF-8或ASCII。 | 3289| TEXT_ENCODING_UTF16 | 1 | 使用2个字节表示大部分unicode。 | 3290| TEXT_ENCODING_UTF32 | 2 | 使用4个字节表示全部unicode。 | 3291| TEXT_ENCODING_GLYPH_ID | 3 | 使用2个字节表示glyph index。 | 3292 3293## ClipOp<sup>12+</sup> 3294画布裁剪方式的枚举。 3295 3296 3297**系统能力**:SystemCapability.Graphics.Drawing 3298 3299| 名称 | 值 | 说明 | 示意图 | 3300| ------------------ | ---- | ---------------- | -------- | 3301| DIFFERENCE | 0 | 将指定区域裁剪(取差集)。 |  | 3302| INTERSECT | 1 | 将指定区域保留(取交集)。 |  | 3303 3304> **说明:** 3305> 3306> 示意图展示的是以INTERSECT方式裁剪一个矩形后,使用不同枚举值在此基础上裁剪一个圆形的结果,其中绿色区域为最终得到的裁剪区域。 3307 3308## FilterMode<sup>12+</sup> 3309 3310过滤模式枚举。 3311 3312**系统能力**:SystemCapability.Graphics.Drawing 3313 3314| 名称 | 值 | 说明 | 3315| ------------------- | ---- | ------- | 3316| FILTER_MODE_NEAREST | 0 | 邻近过滤模式。 | 3317| FILTER_MODE_LINEAR | 1 | 线性过滤模式。 | 3318 3319## PathDirection<sup>12+</sup> 3320 3321添加闭合轮廓方向的枚举。 3322 3323**系统能力**:SystemCapability.Graphics.Drawing 3324 3325| 名称 | 值 | 说明 | 3326| ------------------- | ---- | ------- | 3327| CLOCKWISE | 0 | 顺时针方向添加闭合轮廓。 | 3328| COUNTER_CLOCKWISE | 1 | 逆时针方向添加闭合轮廓。 | 3329 3330## PathFillType<sup>12+</sup> 3331 3332定义路径的填充类型枚举。 3333 3334**系统能力**:SystemCapability.Graphics.Drawing 3335 3336| 名称 | 值 | 说明 | 3337| ------------------- | ---- | ------- | 3338| WINDING | 0 | 绘制区域中的任意一点,向任意方向射出一条射线,对于射线和路径的所有交点,初始计数为0,遇到每个顺时针的交点(路径从射线的左边向右穿过),计数加1,遇到每个逆时针的交点(路径从射线的右边向左穿过),计数减1,若最终的计数结果不为0,则认为这个点在路径内部,需要被涂色;若计数为0则不被涂色。 | 3339| EVEN_ODD | 1 | 绘制区域中的任意一点,向任意方向射出一条射线,若这条射线和路径相交的次数是奇数,则这个点被认为在路径内部,需要被涂色;若是偶数则不被涂色。 | 3340| INVERSE_WINDING | 2 | WINDING涂色规则取反。 | 3341| INVERSE_EVEN_ODD | 3 | EVEN_ODD涂色规则取反。 | 3342 3343> **说明:**<br> 3344> <br> 3345> 如图所示圆环为路径,箭头指示路径的方向,p为区域内任意一点,蓝色线条为点p出发的射线,黑色箭头所指为对应填充规则下使用蓝色填充路径的结果。WINDING填充规则下,射线与路径的交点计数为2,不为0,点p被涂色;EVEN_ODD填充规则下,射线与路径的相交次数为2,是偶数,点p不被涂色。 3346 3347## PointMode<sup>12+</sup> 3348 3349绘制数组点的方式的枚举。 3350 3351**系统能力**:SystemCapability.Graphics.Drawing 3352 3353| 名称 | 值 | 说明 | 3354| ------------------ | ---- | ------------- | 3355| POINTS | 0 | 分别绘制每个点。 | 3356| LINES | 1 | 将每对点绘制为线段。 | 3357| POLYGON | 2 | 将点阵列绘制为开放多边形。 | 3358 3359## FontEdging<sup>12+</sup> 3360 3361字型边缘效果类型枚举。 3362 3363**系统能力**:SystemCapability.Graphics.Drawing 3364 3365| 名称 | 值 | 说明 | 3366| ------------------- | ---- | ------- | 3367| ALIAS | 0 | 无抗锯齿处理。 | 3368| ANTI_ALIAS | 1 | 使用抗锯齿来平滑字型边缘。 | 3369| SUBPIXEL_ANTI_ALIAS | 2 | 使用次像素级别的抗锯齿来平滑字型边缘,可以获得更加平滑的字型渲染效果。 | 3370 3371## FontHinting<sup>12+</sup> 3372 3373字型轮廓效果类型枚举。 3374 3375**系统能力**:SystemCapability.Graphics.Drawing 3376 3377| 名称 | 值 | 说明 | 3378| ------------------- | ---- | ------- | 3379| NONE | 0 | 不修改字型轮廓。 | 3380| SLIGHT | 1 | 最小限度修改字型轮廓以改善对比度。 | 3381| NORMAL | 2 | 修改字型轮廓以提高对比度。 | 3382| FULL | 3 | 修改字型轮廓以获得最大对比度。 | 3383 3384## TextBlob 3385 3386由一个或多个具有相同字体的字符组成的字块。 3387 3388### makeFromPosText<sup>12+</sup> 3389 3390static makeFromPosText(text: string, len: number, points: common2D.Point[], font: Font): TextBlob 3391 3392使用文本创建TextBlob对象,TextBlob对象中每个字形的坐标由points中对应的坐标信息决定。 3393 3394**系统能力**:SystemCapability.Graphics.Drawing 3395 3396**参数:** 3397 3398| 参数名 | 类型 | 必填 | 说明 | 3399| -------- | ----------------------------- | ---- | -------------------------------------- | 3400| text | string | 是 | 绘制字形的文本内容。 | 3401| len | number | 是 | 字形个数,由[countText](#counttext12)获取,该参数为整数。 | 3402| points |[common2D.Point](js-apis-graphics-common2D.md#point)[] | 是 |点数组,用于指定每个字形的坐标,长度必须为len。| 3403| font | [Font](#font) | 是 | 字型对象。 | 3404 3405**返回值:** 3406 3407| 类型 | 说明 | 3408| --------------------- | -------------- | 3409| [TextBlob](#textblob) | TextBlob对象。 | 3410 3411 3412**错误码:** 3413 3414以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 3415 3416| 错误码ID | 错误信息 | 3417| ------- | --------------------------------------------| 3418| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified;2. Incorrect parameter types. | 3419 3420**示例:** 3421 3422```ts 3423import { RenderNode } from '@kit.ArkUI'; 3424import { drawing,common2D} from '@kit.ArkGraphics2D'; 3425 3426class DrawingRenderNode extends RenderNode { 3427 draw(context : DrawContext) { 3428 const canvas = context.canvas; 3429 let text : string = 'makeFromPosText'; 3430 let font : drawing.Font = new drawing.Font(); 3431 font.setSize(100); 3432 let length = font.countText(text); 3433 let points : common2D.Point[] = []; 3434 for (let i = 0; i !== length; ++i) { 3435 points.push({ x: i * 35, y: i * 35 }); 3436 } 3437 let textblob : drawing.TextBlob =drawing.TextBlob.makeFromPosText(text, points.length, points, font); 3438 canvas.drawTextBlob(textblob, 100, 100); 3439 } 3440} 3441``` 3442 3443### uniqueID<sup>12+</sup> 3444 3445uniqueID(): number 3446 3447获取文本的标识符,该标识符是唯一的非零值。 3448 3449**系统能力**:SystemCapability.Graphics.Drawing 3450 3451**返回值:** 3452 3453| 类型 | 说明 | 3454| --------------------- | -------------- | 3455| number | 返回TextBlob对象的唯一标识符。 | 3456 3457**示例:** 3458 3459```ts 3460import {drawing} from "@kit.ArkGraphics2D" 3461let text : string = 'TextBlobUniqueId'; 3462let font : drawing.Font = new drawing.Font(); 3463font.setSize(100); 3464let textBlob = drawing.TextBlob.makeFromString(text, font, 0); 3465let id = textBlob.uniqueID(); 3466console.info("uniqueID---------------" +id); 3467``` 3468 3469### makeFromString 3470 3471static makeFromString(text: string, font: Font, encoding?: TextEncoding): TextBlob 3472 3473将string类型的值转化成TextBlob对象。 3474 3475**系统能力**:SystemCapability.Graphics.Drawing 3476 3477**参数:** 3478 3479| 参数名 | 类型 | 必填 | 说明 | 3480| -------- | ----------------------------- | ---- | -------------------------------------- | 3481| text | string | 是 | 绘制字形的文本内容。 | 3482| font | [Font](#font) | 是 | 字型对象。 | 3483| encoding | [TextEncoding](#textencoding) | 否 | 编码类型,默认值为TEXT_ENCODING_UTF8。当前只有TEXT_ENCODING_UTF8生效,其余编码类型也会被视为TEXT_ENCODING_UTF8。 | 3484 3485**返回值:** 3486 3487| 类型 | 说明 | 3488| --------------------- | -------------- | 3489| [TextBlob](#textblob) | TextBlob对象。 | 3490 3491**错误码:** 3492 3493以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 3494 3495| 错误码ID | 错误信息 | 3496| ------- | --------------------------------------------| 3497| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. | 3498 3499**示例:** 3500 3501```ts 3502import { RenderNode } from '@kit.ArkUI'; 3503import { drawing } from '@kit.ArkGraphics2D'; 3504class DrawingRenderNode extends RenderNode { 3505 draw(context : DrawContext) { 3506 const canvas = context.canvas; 3507 const brush = new drawing.Brush(); 3508 brush.setColor({alpha: 255, red: 255, green: 0, blue: 0}); 3509 const font = new drawing.Font(); 3510 font.setSize(20); 3511 const textBlob = drawing.TextBlob.makeFromString("drawing", font, drawing.TextEncoding.TEXT_ENCODING_UTF8); 3512 canvas.attachBrush(brush); 3513 canvas.drawTextBlob(textBlob, 20, 20); 3514 canvas.detachBrush(); 3515 } 3516} 3517``` 3518 3519### makeFromRunBuffer 3520 3521static makeFromRunBuffer(pos: Array\<TextBlobRunBuffer>, font: Font, bounds?: common2D.Rect): TextBlob 3522 3523基于RunBuffer信息创建一个Textblob对象。 3524 3525**系统能力**:SystemCapability.Graphics.Drawing 3526 3527**参数:** 3528 3529| 参数名 | 类型 | 必填 | 说明 | 3530| ------ | -------------------------------------------------- | ---- | ------------------------------ | 3531| pos | Array\<[TextBlobRunBuffer](#textblobrunbuffer)> | 是 | TextBlobRunBuffer数组。 | 3532| font | [Font](#font) | 是 | 字型对象。 | 3533| bounds | [common2D.Rect](js-apis-graphics-common2D.md#rect) | 否 | 可选,如果不设置,则无边界框。 | 3534 3535**返回值:** 3536 3537| 类型 | 说明 | 3538| --------------------- | -------------- | 3539| [TextBlob](#textblob) | TextBlob对象。 | 3540 3541**错误码:** 3542 3543以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 3544 3545| 错误码ID | 错误信息 | 3546| ------- | --------------------------------------------| 3547| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. | 3548 3549**示例:** 3550 3551```ts 3552import { RenderNode } from '@kit.ArkUI'; 3553import { common2D, drawing } from '@kit.ArkGraphics2D'; 3554class DrawingRenderNode extends RenderNode { 3555 draw(context : DrawContext) { 3556 const canvas = context.canvas; 3557 const font = new drawing.Font(); 3558 font.setSize(20); 3559 let runBuffer : Array<drawing.TextBlobRunBuffer> = [ 3560 { glyph: 65, positionX: 0, positionY: 0 }, 3561 { glyph: 227, positionX: 14.9, positionY: 0 }, 3562 { glyph: 283, positionX: 25.84, positionY: 0 }, 3563 { glyph: 283, positionX: 30.62, positionY: 0 }, 3564 { glyph: 299, positionX: 35.4, positionY: 0} 3565 ]; 3566 const textBlob = drawing.TextBlob.makeFromRunBuffer(runBuffer, font, null); 3567 const brush = new drawing.Brush(); 3568 brush.setColor({alpha: 255, red: 255, green: 0, blue: 0}); 3569 canvas.attachBrush(brush); 3570 canvas.drawTextBlob(textBlob, 20, 20); 3571 canvas.detachBrush(); 3572 } 3573} 3574``` 3575 3576### bounds 3577 3578bounds(): common2D.Rect 3579 3580获取文字边界框的矩形区域。 3581 3582**系统能力**:SystemCapability.Graphics.Drawing 3583 3584**返回值:** 3585 3586| 类型 | 说明 | 3587| -------------------------------------------------- | ---------------------- | 3588| [common2D.Rect](js-apis-graphics-common2D.md#rect) | 文字边界框的矩形区域。 | 3589 3590**示例:** 3591 3592```ts 3593import { common2D, drawing } from '@kit.ArkGraphics2D'; 3594const font = new drawing.Font(); 3595font.setSize(20); 3596const textBlob = drawing.TextBlob.makeFromString("drawing", font, drawing.TextEncoding.TEXT_ENCODING_UTF8); 3597let bounds = textBlob.bounds(); 3598``` 3599 3600## Typeface 3601 3602字体,如宋体、楷体等。 3603 3604### getFamilyName 3605 3606getFamilyName(): string 3607 3608获取字体的系列名称。 3609 3610**系统能力**:SystemCapability.Graphics.Drawing 3611 3612**返回值:** 3613 3614| 类型 | 说明 | 3615| ------ | -------------------- | 3616| string | 返回字体的系列名称。 | 3617 3618**示例:** 3619 3620```ts 3621import { drawing } from '@kit.ArkGraphics2D'; 3622const font = new drawing.Font(); 3623let typeface = font.getTypeface(); 3624let familyName = typeface.getFamilyName(); 3625``` 3626 3627### makeFromFile<sup>12+</sup> 3628 3629static makeFromFile(filePath: string): Typeface 3630 3631从指定字体文件,构造字体。 3632 3633**系统能力**:SystemCapability.Graphics.Drawing 3634 3635**参数:** 3636 3637| 参数名 | 类型 | 必填 | 说明 | 3638| ----------- | ---------------------------------------- | ---- | ------------------- | 3639| filePath | string | 是 | 表示字体资源存放的路径。应用沙箱路径和真实物理路径的对应关系请参考[应用沙箱路径和真实物理路径的对应关系](../../file-management/app-sandbox-directory.md#应用沙箱路径和真实物理路径的对应关系)。 | 3640 3641**返回值:** 3642 3643| 类型 | 说明 | 3644| ------ | -------------------- | 3645| [Typeface](#typeface) | 返回Typeface对象。 | 3646 3647**错误码:** 3648 3649以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 3650 3651| 错误码ID | 错误信息 | 3652| ------- | --------------------------------------------| 3653| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. | 3654 3655**示例:** 3656 3657```ts 3658import { RenderNode } from '@kit.ArkUI'; 3659import { drawing } from '@kit.ArkGraphics2D'; 3660class TextRenderNode extends RenderNode { 3661 async draw(context: DrawContext) { 3662 const canvas = context.canvas; 3663 let font = new drawing.Font(); 3664 let str = "/system/fonts/HarmonyOS_Sans_Italic.ttf"; 3665 const mytypeface = drawing.Typeface.makeFromFile(str); 3666 font.setTypeface(mytypeface); 3667 const textBlob = drawing.TextBlob.makeFromString("Hello World", font, drawing.TextEncoding.TEXT_ENCODING_UTF8); 3668 canvas.drawTextBlob(textBlob, 60, 100); 3669 } 3670} 3671``` 3672 3673## Font 3674 3675描述字形绘制时所使用的属性,如大小、字体等。 3676 3677### isSubpixel<sup>12+</sup> 3678 3679isSubpixel(): boolean 3680 3681获取字型是否使用次像素渲染。 3682 3683**系统能力:** SystemCapability.Graphics.Drawing 3684 3685**返回值:** 3686 3687| 类型 | 说明 | 3688| ------ | -------------------- | 3689| boolean | 返回字型是否使用次像素渲染的结果,true表示使用,false表示不使用。 | 3690 3691**示例:** 3692 3693```ts 3694import {drawing} from '@kit.ArkGraphics2D'; 3695let font: drawing.Font = new drawing.Font(); 3696font.enableSubpixel(true) 3697console.info("values=" + font.isSubpixel()); 3698``` 3699 3700### isLinearMetrics<sup>12+</sup> 3701 3702isLinearMetrics(): boolean 3703 3704获取字型是否可以线性缩放。 3705 3706**系统能力:** SystemCapability.Graphics.Drawing 3707 3708**返回值:** 3709 3710| 类型 | 说明 | 3711| ------ | -------------------- | 3712| boolean | 返回字型是否可线性缩放的结果,true表示可线性缩放,false表示不可线性缩放。 | 3713 3714**示例:** 3715 3716```ts 3717import {drawing} from '@kit.ArkGraphics2D'; 3718let font: drawing.Font = new drawing.Font(); 3719font.enableLinearMetrics(true) 3720console.info("values=" + font.isLinearMetrics()); 3721``` 3722 3723### getSkewX<sup>12+</sup> 3724 3725getSkewX(): number 3726 3727获取字型在x轴方向上的倾斜度。 3728 3729**系统能力:** SystemCapability.Graphics.Drawing 3730 3731**返回值:** 3732 3733| 类型 | 说明 | 3734| ------ | -------------------- | 3735| number | 返回字型在x轴方向上的倾斜度。 | 3736 3737**示例:** 3738 3739```ts 3740import {drawing} from '@kit.ArkGraphics2D'; 3741let font: drawing.Font = new drawing.Font(); 3742font.setSkewX(-1) 3743console.info("values=" + font.getSkewX()); 3744``` 3745 3746### isEmbolden<sup>12+</sup> 3747 3748isEmbolden(): boolean 3749 3750获取字型是否设置了粗体效果。 3751 3752**系统能力:** SystemCapability.Graphics.Drawing 3753 3754**返回值:** 3755 3756| 类型 | 说明 | 3757| ------ | -------------------- | 3758| boolean | 返回字型是否设置粗体效果的结果,true表示设置了粗体效果,false表示未设置粗体效果。 | 3759 3760**示例:** 3761 3762```ts 3763import {drawing} from '@kit.ArkGraphics2D'; 3764let font: drawing.Font = new drawing.Font(); 3765font.enableEmbolden(true); 3766console.info("values=" + font.isEmbolden()); 3767``` 3768 3769### getScaleX<sup>12+</sup> 3770 3771getScaleX(): number 3772 3773获取字型在x轴方向上的缩放比例。 3774 3775**系统能力:** SystemCapability.Graphics.Drawing 3776 3777**返回值:** 3778 3779| 类型 | 说明 | 3780| ------ | -------------------- | 3781| number | 返回字型在x轴方向上的缩放比例。 | 3782 3783**示例:** 3784 3785```ts 3786import {drawing} from '@kit.ArkGraphics2D'; 3787let font: drawing.Font = new drawing.Font(); 3788font.setScaleX(2); 3789console.info("values=" + font.getScaleX()); 3790``` 3791 3792### getHinting<sup>12+</sup> 3793 3794getHinting(): FontHinting 3795 3796获取字型轮廓效果。 3797 3798**系统能力:** SystemCapability.Graphics.Drawing 3799 3800**返回值:** 3801 3802| 类型 | 说明 | 3803| ------ | -------------------- | 3804| [FontHinting](#fonthinting12) | 返回字型轮廓效果。 | 3805 3806**示例:** 3807 3808```ts 3809import {drawing} from '@kit.ArkGraphics2D'; 3810let font: drawing.Font = new drawing.Font(); 3811console.info("values=" + font.getHinting()); 3812``` 3813 3814### getEdging<sup>12+</sup> 3815 3816getEdging(): FontEdging 3817 3818获取字型边缘效果。 3819 3820**系统能力:** SystemCapability.Graphics.Drawing 3821 3822**返回值:** 3823 3824| 类型 | 说明 | 3825| ------ | -------------------- | 3826| [FontEdging](#fontedging12) | 返回字型边缘效果。 | 3827 3828**示例:** 3829 3830```ts 3831import {drawing} from '@kit.ArkGraphics2D'; 3832let font: drawing.Font = new drawing.Font(); 3833console.info("values=" + font.getEdging()); 3834``` 3835 3836### enableSubpixel 3837 3838enableSubpixel(isSubpixel: boolean): void 3839 3840使能字体亚像素级别的文字绘制,显示效果平滑。 3841 3842**系统能力**:SystemCapability.Graphics.Drawing 3843 3844**参数:** 3845 3846| 参数名 | 类型 | 必填 | 说明 | 3847| ---------- | ------- | ---- | ------------------------------------------------------------ | 3848| isSubpixel | boolean | 是 | 表示是否使能字体亚像素级别的文字绘制。true表示使能,false表示不使能。 | 3849 3850**错误码:** 3851 3852以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 3853 3854| 错误码ID | 错误信息 | 3855| ------- | --------------------------------------------| 3856| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. | 3857 3858**示例:** 3859 3860```ts 3861import { drawing } from '@kit.ArkGraphics2D'; 3862let font = new drawing.Font(); 3863font.enableSubpixel(true); 3864``` 3865 3866### enableEmbolden 3867 3868enableEmbolden(isEmbolden: boolean): void 3869 3870使能字体粗体。 3871 3872**系统能力**:SystemCapability.Graphics.Drawing 3873 3874**参数:** 3875 3876| 参数名 | 类型 | 必填 | 说明 | 3877| ---------- | ------- | ---- | ----------------------------------------------------- | 3878| isEmbolden | boolean | 是 | 表示是否使能字体粗体。true表示使能,false表示不使能。 | 3879 3880**错误码:** 3881 3882以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 3883 3884| 错误码ID | 错误信息 | 3885| ------- | --------------------------------------------| 3886| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. | 3887 3888**示例:** 3889 3890```ts 3891import { drawing } from '@kit.ArkGraphics2D'; 3892let font = new drawing.Font(); 3893font.enableEmbolden(true); 3894``` 3895 3896### enableLinearMetrics 3897 3898enableLinearMetrics(isLinearMetrics: boolean): void 3899 3900使能字型的线性缩放。 3901 3902**系统能力**:SystemCapability.Graphics.Drawing 3903 3904**参数:** 3905 3906| 参数名 | 类型 | 必填 | 说明 | 3907| --------------- | ------- | ---- | ----------------------------------------------------------- | 3908| isLinearMetrics | boolean | 是 | 表示是否使能字型的线性缩放。true表示使能,false表示不使能。 | 3909 3910**错误码:** 3911 3912以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 3913 3914| 错误码ID | 错误信息 | 3915| ------- | --------------------------------------------| 3916| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. | 3917 3918**示例:** 3919 3920```ts 3921import { drawing } from '@kit.ArkGraphics2D'; 3922let font = new drawing.Font(); 3923font.enableLinearMetrics(true); 3924``` 3925 3926### setSize 3927 3928setSize(textSize: number): void 3929 3930设置字体大小。 3931 3932**系统能力**:SystemCapability.Graphics.Drawing 3933 3934**参数:** 3935 3936| 参数名 | 类型 | 必填 | 说明 | 3937| -------- | ------ | ---- | ---------------- | 3938| textSize | number | 是 | 字体大小,该参数为浮点数,为负数时字体大小会被置为0。字体大小为0时,绘制的文字不会显示。| 3939 3940**错误码:** 3941 3942以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 3943 3944| 错误码ID | 错误信息 | 3945| ------- | --------------------------------------------| 3946| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types;3.Parameter verification failed. | 3947 3948**示例:** 3949 3950```ts 3951import { drawing } from '@kit.ArkGraphics2D'; 3952let font = new drawing.Font(); 3953font.setSize(5); 3954``` 3955 3956### getSize 3957 3958getSize(): number 3959 3960获取字体大小。 3961 3962**系统能力**:SystemCapability.Graphics.Drawing 3963 3964**返回值:** 3965 3966| 类型 | 说明 | 3967| ------ | ---------------- | 3968| number | 字体大小,浮点数。 | 3969 3970**示例:** 3971 3972```ts 3973import { drawing } from '@kit.ArkGraphics2D'; 3974let font = new drawing.Font(); 3975font.setSize(5); 3976let fontSize = font.getSize(); 3977``` 3978 3979### setTypeface 3980 3981setTypeface(typeface: Typeface): void 3982 3983设置字体。 3984 3985**系统能力**:SystemCapability.Graphics.Drawing 3986 3987**参数:** 3988 3989| 参数名 | 类型 | 必填 | 说明 | 3990| -------- | --------------------- | ---- | ------ | 3991| typeface | [Typeface](#typeface) | 是 | 字体。 | 3992 3993**错误码:** 3994 3995以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 3996 3997| 错误码ID | 错误信息 | 3998| ------- | --------------------------------------------| 3999| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. | 4000 4001**示例:** 4002 4003```ts 4004import { drawing } from '@kit.ArkGraphics2D'; 4005let font = new drawing.Font(); 4006font.setTypeface(new drawing.Typeface()); 4007``` 4008 4009### getTypeface 4010 4011getTypeface(): Typeface 4012 4013获取字体。 4014 4015**系统能力**:SystemCapability.Graphics.Drawing 4016 4017**返回值:** 4018 4019| 类型 | 说明 | 4020| --------------------- | ------ | 4021| [Typeface](#typeface) | 字体。 | 4022 4023**示例:** 4024 4025```ts 4026import { drawing } from '@kit.ArkGraphics2D'; 4027let font = new drawing.Font(); 4028let typeface = font.getTypeface(); 4029``` 4030 4031### getMetrics 4032 4033getMetrics(): FontMetrics 4034 4035获取与字体关联的FontMetrics属性。 4036 4037**系统能力**:SystemCapability.Graphics.Drawing 4038 4039**返回值:** 4040 4041| 类型 | 说明 | 4042| --------------------------- | ----------------- | 4043| [FontMetrics](#fontmetrics) | FontMetrics属性。 | 4044 4045**示例:** 4046 4047```ts 4048import { drawing } from '@kit.ArkGraphics2D'; 4049let font = new drawing.Font(); 4050let metrics = font.getMetrics(); 4051``` 4052 4053### measureText 4054 4055measureText(text: string, encoding: TextEncoding): number 4056 4057测量文本的宽度。 4058 4059> **说明:** 4060> 4061> 此接口用于测量原始字符串的文本宽度,若想测量排版后的文本宽度,建议使用[measure.measureText](../apis-arkui/js-apis-measure.md#measuretextmeasuretext)替代。 4062 4063**系统能力**:SystemCapability.Graphics.Drawing 4064 4065**参数:** 4066 4067| 参数名 | 类型 | 必填 | 说明 | 4068| -------- | ----------------------------- | ---- | ---------- | 4069| text | string | 是 | 文本内容。 | 4070| encoding | [TextEncoding](#textencoding) | 是 | 编码格式。 | 4071 4072**返回值:** 4073 4074| 类型 | 说明 | 4075| ------ | ---------------- | 4076| number | 文本的宽度,浮点数。 | 4077 4078**错误码:** 4079 4080以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 4081 4082| 错误码ID | 错误信息 | 4083| ------- | --------------------------------------------| 4084| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. | 4085 4086**示例:** 4087 4088```ts 4089import { drawing } from '@kit.ArkGraphics2D'; 4090let font = new drawing.Font(); 4091font.measureText("drawing", drawing.TextEncoding.TEXT_ENCODING_UTF8); 4092``` 4093 4094### measureSingleCharacter<sup>12+</sup> 4095 4096measureSingleCharacter(text: string): number 4097 4098用于测量单个字符的宽度。当前字型中的字体不支持待测量字符时,退化到使用系统字体测量字符宽度。 4099 4100**系统能力**:SystemCapability.Graphics.Drawing 4101 4102**参数** 4103 4104| 参数名 | 类型 | 必填 | 说明 | 4105| ------ | ------------------- | ---- | ----------- | 4106| text | string | 是 | 待测量的单个字符,字符串的长度必须为1。 | 4107 4108**返回值:** 4109 4110| 类型 | 说明 | 4111| ------ | ---------------- | 4112| number | 字符的宽度,浮点数。 | 4113 4114**错误码:** 4115 4116以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 4117 4118| 错误码ID | 错误信息 | 4119| ------- | --------------------------------------------| 4120| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types;3.Parameter verification failed. | 4121 4122**示例** 4123 4124```ts 4125import { RenderNode } from '@kit.ArkUI'; 4126import { drawing } from '@kit.ArkGraphics2D'; 4127 4128class DrawingRenderNode extends RenderNode { 4129 draw(context : DrawContext) { 4130 const canvas = context.canvas; 4131 const font = new drawing.Font(); 4132 font.setSize(20); 4133 let width = font.measureSingleCharacter("你"); 4134 } 4135} 4136``` 4137 4138### setScaleX<sup>12+</sup> 4139 4140setScaleX(scaleX: number): void 4141 4142用于设置字型对象在x轴上的缩放比例。 4143 4144**系统能力**:SystemCapability.Graphics.Drawing 4145 4146**参数:** 4147 4148| 参数名 | 类型 | 必填 | 说明 | 4149| -------- | ----------------------------- | ---- | ---------- | 4150| scaleX | number | 是 | 文本在x轴上的缩放比例,该参数为浮点数。 | 4151 4152**错误码:** 4153 4154以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 4155 4156| 错误码ID | 错误信息 | 4157| ------- | --------------------------------------------| 4158| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. | 4159 4160**示例:** 4161 4162```ts 4163import { RenderNode } from '@kit.ArkUI'; 4164import { common2D, drawing } from '@kit.ArkGraphics2D'; 4165class DrawingRenderNode extends RenderNode { 4166 draw(context : DrawContext) { 4167 const canvas = context.canvas; 4168 const pen = new drawing.Pen(); 4169 pen.setStrokeWidth(5); 4170 pen.setColor({alpha: 255, red: 255, green: 0, blue: 0}); 4171 canvas.attachPen(pen); 4172 let font = new drawing.Font(); 4173 font.setSize(100); 4174 font.setScaleX(2); 4175 const textBlob = drawing.TextBlob.makeFromString("hello", font, drawing.TextEncoding.TEXT_ENCODING_UTF8); 4176 canvas.drawTextBlob(textBlob, 200, 200); 4177 } 4178} 4179``` 4180 4181### setSkewX<sup>12+</sup> 4182 4183setSkewX(skewX: number): void 4184 4185用于设置字型对象在x轴上的倾斜比例。 4186 4187**系统能力**:SystemCapability.Graphics.Drawing 4188 4189**参数:** 4190 4191| 参数名 | 类型 | 必填 | 说明 | 4192| -------- | ----------------------------- | ---- | ---------- | 4193| skewX | number | 是 | 文本在x轴上的倾斜比例,正数表示往左边倾斜,负数表示往右边倾斜,该参数为浮点数。 | 4194 4195**错误码:** 4196 4197以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 4198 4199| 错误码ID | 错误信息 | 4200| ------- | --------------------------------------------| 4201| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. | 4202 4203**示例:** 4204 4205```ts 4206import { RenderNode } from '@kit.ArkUI'; 4207import { common2D, drawing } from '@kit.ArkGraphics2D'; 4208class DrawingRenderNode extends RenderNode { 4209 draw(context : DrawContext) { 4210 const canvas = context.canvas; 4211 const pen = new drawing.Pen(); 4212 pen.setStrokeWidth(5); 4213 pen.setColor({alpha: 255, red: 255, green: 0, blue: 0}); 4214 canvas.attachPen(pen); 4215 let font = new drawing.Font(); 4216 font.setSize(100); 4217 font.setSkewX(1); 4218 const textBlob = drawing.TextBlob.makeFromString("hello", font, drawing.TextEncoding.TEXT_ENCODING_UTF8); 4219 canvas.drawTextBlob(textBlob, 200, 200); 4220 } 4221} 4222``` 4223 4224### setEdging<sup>12+</sup> 4225 4226setEdging(edging: FontEdging): void 4227 4228设置字型边缘效果。 4229 4230**系统能力**:SystemCapability.Graphics.Drawing 4231 4232**参数:** 4233 4234| 参数名 | 类型 | 必填 | 说明 | 4235| -------- | ----------------------------- | ---- | ---------- | 4236| edging | [FontEdging](#fontedging12) | 是 | 字型边缘效果。 | 4237 4238**错误码:** 4239 4240以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 4241 4242| 错误码ID | 错误信息 | 4243| ------- | --------------------------------------------| 4244| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified;2. Incorrect parameter types; 3. Parameter verification failed. | 4245 4246**示例:** 4247 4248```ts 4249import { drawing } from '@kit.ArkGraphics2D'; 4250 4251let font = new drawing.Font(); 4252font.setEdging(drawing.FontEdging.SUBPIXEL_ANTI_ALIAS); 4253``` 4254 4255### setHinting<sup>12+</sup> 4256 4257setHinting(hinting: FontHinting): void 4258 4259设置字型轮廓效果。 4260 4261**系统能力**:SystemCapability.Graphics.Drawing 4262 4263**参数:** 4264 4265| 参数名 | 类型 | 必填 | 说明 | 4266| -------- | ----------------------------- | ---- | ---------- | 4267| hinting | [FontHinting](#fonthinting12) | 是 | 字型轮廓效果。 | 4268 4269**错误码:** 4270 4271以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 4272 4273| 错误码ID | 错误信息 | 4274| ------- | --------------------------------------------| 4275| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified;2. Incorrect parameter types; 3. Parameter verification failed. | 4276 4277**示例:** 4278 4279```ts 4280import { drawing } from '@kit.ArkGraphics2D'; 4281 4282let font = new drawing.Font(); 4283font.setHinting(drawing.FontHinting.FULL); 4284``` 4285 4286### countText<sup>12+</sup> 4287 4288countText(text: string): number 4289 4290获取文本所表示的字符数量。 4291 4292**系统能力**:SystemCapability.Graphics.Drawing 4293 4294**参数:** 4295 4296| 参数名 | 类型 | 必填 | 说明 | 4297| -------- | ----------------------------- | ---- | ---------- | 4298| text | string | 是 | 文本内容。 | 4299 4300**返回值:** 4301 4302| 类型 | 说明 | 4303| ------ | ---------------- | 4304| number | 返回文本所表示的字符数量,整数。 | 4305 4306**错误码:** 4307 4308以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 4309 4310| 错误码ID | 错误信息 | 4311| ------- | --------------------------------------------| 4312| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. | 4313 4314**示例:** 4315 4316```ts 4317import { drawing } from '@kit.ArkGraphics2D'; 4318 4319let font = new drawing.Font(); 4320let resultNumber: number = font.countText('ABCDE'); 4321console.info("count text number: " + resultNumber); 4322``` 4323 4324### setBaselineSnap<sup>12+</sup> 4325 4326setBaselineSnap(isBaselineSnap: boolean): void 4327 4328当前画布矩阵轴对齐时,设置字型基线是否与像素对齐。 4329 4330**系统能力**:SystemCapability.Graphics.Drawing 4331 4332**参数:** 4333 4334| 参数名 | 类型 | 必填 | 说明 | 4335| --------------- | ------- | ---- | ---------------------------------------- | 4336| isBaselineSnap | boolean | 是 | 指示字型基线是否和像素对齐,true表示对齐,false表示不对齐。 | 4337 4338**错误码:** 4339 4340以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 4341 4342| 错误码ID | 错误信息 | 4343| ------- | --------------------------------------------| 4344| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. | 4345 4346**示例:** 4347 4348```ts 4349import { drawing } from '@kit.ArkGraphics2D'; 4350 4351let font : drawing.Font = new drawing.Font(); 4352font.setBaselineSnap(true); 4353console.info("drawing font isBaselineSnap: " + font.isBaselineSnap()); 4354``` 4355 4356### isBaselineSnap()<sup>12+</sup> 4357 4358isBaselineSnap(): boolean 4359 4360当前画布矩阵轴对齐时,获取字型基线是否与像素对齐的结果。 4361 4362**系统能力**:SystemCapability.Graphics.Drawing 4363 4364**返回值:** 4365 4366| 类型 | 说明 | 4367| ------ | ---------------- | 4368| boolean | 返回字型基线是否与像素对齐,true为对齐,false为没有对齐。 | 4369 4370**示例:** 4371 4372```ts 4373import { drawing } from '@kit.ArkGraphics2D'; 4374 4375let font : drawing.Font = new drawing.Font(); 4376font.setTypeface(new drawing.Typeface()); 4377font.setBaselineSnap(true); 4378console.info("drawing font isBaselineSnap: " + font.isBaselineSnap()); 4379``` 4380 4381### setEmbeddedBitmaps<sup>12+</sup> 4382 4383setEmbeddedBitmaps(isEmbeddedBitmaps: boolean): void 4384 4385设置字型是否转换成位图处理。 4386 4387**系统能力**:SystemCapability.Graphics.Drawing 4388 4389**参数:** 4390 4391| 参数名 | 类型 | 必填 | 说明 | 4392| -------- | ------ | ---- | ---------------- | 4393| isEmbeddedBitmaps | boolean | 是 | 设置字型是否转换成位图处理,true表示转换成位图处理,false表示不转换成位图处理。 | 4394 4395**错误码:** 4396 4397以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 4398 4399| 错误码ID | 错误信息 | 4400| ------- | --------------------------------------------| 4401| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. | 4402 4403**示例:** 4404 4405```ts 4406import { drawing } from '@kit.ArkGraphics2D'; 4407 4408let font : drawing.Font = new drawing.Font(); 4409font.setTypeface(new drawing.Typeface()); 4410font.setEmbeddedBitmaps(false); 4411console.info("draw isEmbeddedBitmaps: " + font.isEmbeddedBitmaps()); 4412``` 4413 4414### isEmbeddedBitmaps()<sup>12+</sup> 4415 4416isEmbeddedBitmaps(): boolean 4417 4418获取字型是否转换成位图处理的结果。 4419 4420**系统能力**:SystemCapability.Graphics.Drawing 4421 4422**返回值:** 4423 4424| 类型 | 说明 | 4425| ------ | ---------------- | 4426| boolean | 返回字型是否转换成位图处理结果,true表示转换成位图处理,false表示不转换成位图处理。 | 4427 4428**示例:** 4429 4430```ts 4431import { drawing } from '@kit.ArkGraphics2D'; 4432 4433let font : drawing.Font = new drawing.Font(); 4434font.setTypeface(new drawing.Typeface()); 4435font.setEmbeddedBitmaps(true); 4436console.info("draw isEmbeddedBitmaps: " + font.isEmbeddedBitmaps()); 4437``` 4438 4439### setForceAutoHinting<sup>12+</sup> 4440 4441setForceAutoHinting(isForceAutoHinting: boolean): void 4442 4443设置是否自动调整字型轮廓。 4444 4445**系统能力**:SystemCapability.Graphics.Drawing 4446 4447**参数:** 4448 4449| 参数名 | 类型 | 必填 | 说明 | 4450| -------- | ------ | ---- | ---------------- | 4451| isForceAutoHinting | boolean | 是 | 是否自动调整字型轮廓,true为自动调整,false为不自动调整。 | 4452 4453**错误码:** 4454 4455以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 4456 4457| 错误码ID | 错误信息 | 4458| ------- | --------------------------------------------| 4459| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. | 4460 4461**示例:** 4462 4463```ts 4464import { drawing } from '@kit.ArkGraphics2D'; 4465 4466let font : drawing.Font = new drawing.Font(); 4467font.setTypeface(new drawing.Typeface()); 4468font.setForceAutoHinting(false); 4469console.info("drawing isForceAutoHinting: " + font.isForceAutoHinting()); 4470``` 4471 4472### isForceAutoHinting<sup>12+</sup> 4473 4474isForceAutoHinting(): boolean 4475 4476获取字型轮廓是否自动调整的结果。 4477 4478**系统能力**:SystemCapability.Graphics.Drawing 4479 4480**返回值:** 4481 4482| 类型 | 说明 | 4483| ------ | ---------------- | 4484| boolean | 返回字型轮廓是否自动调整,true为自动调整,false为不自动调整。 | 4485 4486**示例:** 4487 4488```ts 4489import { drawing } from '@kit.ArkGraphics2D'; 4490 4491let font : drawing.Font = new drawing.Font(); 4492font.setTypeface(new drawing.Typeface()); 4493font.setForceAutoHinting(false); 4494console.info("drawing isForceAutoHinting: " + font.isForceAutoHinting()); 4495``` 4496 4497### getWidths<sup>12+</sup> 4498 4499getWidths(glyphs: Array\<number>): Array\<number> 4500 4501获取字形数组中每个字形对应的宽度。 4502 4503**系统能力**:SystemCapability.Graphics.Drawing 4504 4505**参数:** 4506 4507| 参数名 | 类型 | 必填 | 说明 | 4508| -------- | --------------------- | ---- | ------ | 4509| glyphs | Array\<number> | 是 | 字形索引数组,可由[textToGlyphs](#texttoglyphs12)生成。 | 4510 4511**返回值:** 4512 4513| 类型 | 说明 | 4514| ------ | ---------------- | 4515| Array\<number> | 返回得到的字形宽度数组。 | 4516 4517**错误码:** 4518 4519以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 4520 4521| 错误码ID | 错误信息 | 4522| ------- | --------------------------------------------| 4523| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. | 4524 4525**示例:** 4526 4527```ts 4528import { drawing } from '@kit.ArkGraphics2D'; 4529 4530let font: drawing.Font = new drawing.Font(); 4531let text: string = 'hello world'; 4532let glyphs: number[] = font.textToGlyphs(text); 4533let fontWidths: Array<number> = font.getWidths(glyphs); 4534for (let index = 0; index < fontWidths.length; index++) { 4535 console.info("get fontWidths[", index, "]:", fontWidths[index]); 4536} 4537``` 4538 4539### textToGlyphs<sup>12+</sup> 4540 4541textToGlyphs(text: string, glyphCount?: number): Array\<number> 4542 4543将文本转换为字形索引。 4544 4545**系统能力**:SystemCapability.Graphics.Drawing 4546 4547**参数:** 4548 4549| 参数名 | 类型 | 必填 | 说明 | 4550| -------- | ----------------------------- | ---- | ---------- | 4551| text | string | 是 | 文本字符串。 | 4552| glyphCount | number | 否 | 文本表示的字符数量,必须与[countText](#counttext12)获取的值相等,默认为text的字符数量,该参数为整数。 | 4553 4554**返回值:** 4555 4556| 类型 | 说明 | 4557| ------ | ---------------- | 4558| Array\<number> | 返回转换得到的字形索引数组。 | 4559 4560**错误码:** 4561 4562以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 4563 4564| 错误码ID | 错误信息 | 4565| ------- | --------------------------------------------| 4566| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. | 4567 4568**示例:** 4569 4570```ts 4571import { drawing } from '@kit.ArkGraphics2D'; 4572 4573let font : drawing.Font = new drawing.Font(); 4574let text : string = 'hello world'; 4575let glyphs : number[] = font.textToGlyphs(text); 4576console.info("drawing text toglyphs OnTestFunction num = " + glyphs.length ); 4577``` 4578 4579### setThemeFontFollowed<sup>15+</sup> 4580 4581setThemeFontFollowed(followed: boolean): void 4582 4583设置字型中的字体是否跟随主题字体。设置跟随主题字体后,若系统启用主题字体并且字型未被设置字体,字型会使用该主题字体。 4584 4585**系统能力**:SystemCapability.Graphics.Drawing 4586 4587**参数:** 4588 4589| 参数名 | 类型 | 必填 | 说明 | 4590| -------- | ------ | ---- | ---------------- | 4591| followed | boolean | 是 | 字型中的字体是否跟随主题字体,true表示跟随主题字体,false表示不跟随主题字体。 | 4592 4593**错误码:** 4594 4595以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 4596 4597| 错误码ID | 错误信息 | 4598| ------- | --------------------------------------------| 4599| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. | 4600 4601**示例:** 4602 4603```ts 4604import { drawing } from '@kit.ArkGraphics2D'; 4605 4606let font : drawing.Font = new drawing.Font(); 4607font.setThemeFontFollowed(true); 4608console.info("font is theme font followed: " + font.isThemeFontFollowed()); 4609``` 4610 4611### isThemeFontFollowed()<sup>15+</sup> 4612 4613isThemeFontFollowed(): boolean 4614 4615获取字型中的字体是否跟随主题字体。默认不跟随主题字体。 4616 4617**系统能力**:SystemCapability.Graphics.Drawing 4618 4619**返回值:** 4620 4621| 类型 | 说明 | 4622| ------ | ---------------- | 4623| boolean | 返回字型中的字体是否跟随主题字体的结果,true表示跟随主题字体,false表示不跟随主题字体。 | 4624 4625**示例:** 4626 4627```ts 4628import { drawing } from '@kit.ArkGraphics2D'; 4629 4630let font : drawing.Font = new drawing.Font(); 4631font.setThemeFontFollowed(true); 4632console.info("font is theme font followed: " + font.isThemeFontFollowed()); 4633``` 4634 4635## FontMetricsFlags<sup>12+</sup> 4636 4637字体度量标志枚举,指示字体度量中的各字段数据是否有效。 4638 4639**系统能力**:SystemCapability.Graphics.Drawing 4640 4641| 名称 | 值 | 说明 | 4642| ----------------------------- | --------- | ------------------------------ | 4643| UNDERLINE_THICKNESS_VALID | 1 << 0 | 表示[FontMetrics](#fontmetrics)结构中的underlineThickness(下划线厚度)字有效。 | 4644| UNDERLINE_POSITION_VALID | 1 << 1 | 表示[FontMetrics](#fontmetrics)结构中的underlinePosition(下划线位置)字段有效。 | 4645| STRIKETHROUGH_THICKNESS_VALID | 1 << 2 | 表示[FontMetrics](#fontmetrics)结构中strikethroughThickness(删除线厚度)是有效的。| 4646| STRIKETHROUGH_POSITION_VALID | 1 << 3 | 表示[FontMetrics](#fontmetrics)结构中strikethroughPosition(删除线位置)字段有效。 | 4647| BOUNDS_INVALID | 1 << 4 | 表示[FontMetrics](#fontmetrics)结构中的边界度量值(如top、bottom、xMin、xMax)无效。 | 4648 4649## FontMetrics 4650 4651描述字形大小和布局的属性信息,同一种字体中的字符属性大致相同。 4652 4653**系统能力:** SystemCapability.Graphics.Drawing 4654 4655| 名称 | 类型 | 只读 | 可选 | 说明 | 4656| ------- | ------ | ---- | ---- | ------------------------------------------------------------ | 4657| flags<sup>12+</sup> | [FontMetricsFlags](#fontmetricsflags12) | 是 | 是 | 表明哪些字体度量标志有效。 | 4658| top | number | 是 | 否 | 文字最高处到基线之间的最大距离,浮点数。 | 4659| ascent | number | 是 | 否 | 文字最高处到基线之间的距离,浮点数。 | 4660| descent | number | 是 | 否 | 基线到文字最低处之间的距离,浮点数。 | 4661| bottom | number | 是 | 否 | 基线到文字最低处之间的最大距离,浮点数。 | 4662| leading | number | 是 | 否 | 行间距,从上一行文字descent到下一行文字ascent之间的距离,浮点数。 | 4663| avgCharWidth<sup>12+</sup> | number | 是 | 是 | 平均字符宽度。 | 4664| maxCharWidth<sup>12+</sup> | number | 是 | 是 | 最大字符宽度。 | 4665| xMin<sup>12+</sup> | number | 是 | 是 | 字体中任意字形边界框最左边沿到原点的水平距离,这个值往往小于零,意味着字形在水平方向上的最小边界。 | 4666| xMax<sup>12+</sup> | number | 是 | 是 | 字体中任意字形边界框最右边沿到原点的水平距离,此值多为正数,指示了字形在水平方向上的最大延伸范围。 | 4667| xHeight<sup>12+</sup> | number | 是 | 是 | 小写字母x的高度,通常为负值。 | 4668| capHeight<sup>12+</sup> | number | 是 | 是 | 大写字母的高度,通常为负值。 | 4669| underlineThickness<sup>12+</sup> | number | 是 | 是 | 下划线的厚度。 | 4670| underlinePosition<sup>12+</sup> | number | 是 | 是 | 文本基线到下划线顶部的垂直距离,通常是正数。 | 4671| strikethroughThickness<sup>12+</sup> | number | 是 | 是 | 文本删除线的厚度,即贯穿文本字符的水平线的宽度。 | 4672| strikethroughPosition<sup>12+</sup> | number | 是 | 是 | 文本基线到底部删除线的垂直距离,通常为负值。 | 4673 4674## ColorFilter 4675 4676颜色滤波器。 4677 4678### createBlendModeColorFilter 4679 4680createBlendModeColorFilter(color: common2D.Color, mode: BlendMode) : ColorFilter 4681 4682使用指定的颜色和混合模式创建颜色滤波器。 4683 4684**系统能力:** SystemCapability.Graphics.Drawing 4685 4686**参数:** 4687 4688| 参数名 | 类型 | 必填 | 说明 | 4689| ------ | ---------------------------------------------------- | ---- | ---------------- | 4690| color | [common2D.Color](js-apis-graphics-common2D.md#color) | 是 | ARGB格式的颜色,每个颜色通道是0到255之间的整数。 | 4691| mode | [BlendMode](#blendmode) | 是 | 颜色的混合模式。 | 4692 4693**返回值:** 4694 4695| 类型 | 说明 | 4696| --------------------------- | ------------------ | 4697| [ColorFilter](#colorfilter) | 返回一个颜色滤波器。 | 4698 4699**错误码:** 4700 4701以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 4702 4703| 错误码ID | 错误信息 | 4704| ------- | --------------------------------------------| 4705| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types;3.Parameter verification failed. | 4706 4707**示例:** 4708 4709```ts 4710import { common2D, drawing } from '@kit.ArkGraphics2D'; 4711const color : common2D.Color = { alpha: 255, red: 255, green: 0, blue: 0 }; 4712let colorFilter = drawing.ColorFilter.createBlendModeColorFilter(color, drawing.BlendMode.SRC); 4713``` 4714 4715### createComposeColorFilter 4716 4717createComposeColorFilter(outer: ColorFilter, inner: ColorFilter) : ColorFilter 4718 4719创建一个先应用inner进行滤波,再应用outer进行滤波的组合颜色滤波器。 4720 4721**系统能力:** SystemCapability.Graphics.Drawing 4722 4723**参数:** 4724 4725| 参数名 | 类型 | 必填 | 说明 | 4726| ------ | --------------------------- | ---- | -------------------------------- | 4727| outer | [ColorFilter](#colorfilter) | 是 | 组合滤波器中后生效的颜色滤波器。 | 4728| inner | [ColorFilter](#colorfilter) | 是 | 组合滤波器中先生效的颜色滤波器。 | 4729 4730**返回值:** 4731 4732| 类型 | 说明 | 4733| --------------------------- | ------------------ | 4734| [ColorFilter](#colorfilter) | 返回一个颜色滤波器。 | 4735 4736**错误码:** 4737 4738以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 4739 4740| 错误码ID | 错误信息 | 4741| ------- | --------------------------------------------| 4742| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. | 4743 4744**示例:** 4745 4746```ts 4747import { common2D, drawing } from '@kit.ArkGraphics2D'; 4748const color : common2D.Color = { alpha: 255, red: 255, green: 0, blue: 0 }; 4749let colorFilter1 = drawing.ColorFilter.createBlendModeColorFilter(color, drawing.BlendMode.SRC); 4750let colorFilter2 = drawing.ColorFilter.createBlendModeColorFilter(color, drawing.BlendMode.DST); 4751let colorFilter = drawing.ColorFilter.createComposeColorFilter(colorFilter1, colorFilter2); 4752``` 4753 4754### createLinearToSRGBGamma 4755 4756createLinearToSRGBGamma() : ColorFilter 4757 4758创建一个从线性颜色空间转换到SRGB颜色空间的颜色滤波器。 4759 4760**系统能力:** SystemCapability.Graphics.Drawing 4761 4762**返回值:** 4763 4764| 类型 | 说明 | 4765| --------------------------- | ------------------ | 4766| [ColorFilter](#colorfilter) | 返回一个颜色滤波器。 | 4767 4768**示例:** 4769 4770```ts 4771import { drawing } from '@kit.ArkGraphics2D'; 4772let colorFilter = drawing.ColorFilter.createLinearToSRGBGamma(); 4773``` 4774 4775### createSRGBGammaToLinear 4776 4777createSRGBGammaToLinear() : ColorFilter 4778 4779创建一个从SRGB颜色空间转换到线性颜色空间的颜色滤波器。 4780 4781**系统能力:** SystemCapability.Graphics.Drawing 4782 4783**返回值:** 4784 4785| 类型 | 说明 | 4786| --------------------------- | ------------------ | 4787| [ColorFilter](#colorfilter) | 返回一个颜色滤波器。 | 4788 4789**示例:** 4790 4791```ts 4792import { drawing } from '@kit.ArkGraphics2D'; 4793let colorFilter = drawing.ColorFilter.createSRGBGammaToLinear(); 4794``` 4795 4796### createLumaColorFilter 4797 4798createLumaColorFilter() : ColorFilter 4799 4800创建一个颜色滤波器将其输入的亮度值乘以透明度通道,并将红色、绿色和蓝色通道设置为零。 4801 4802**系统能力:** SystemCapability.Graphics.Drawing 4803 4804**返回值:** 4805 4806| 类型 | 说明 | 4807| --------------------------- | ------------------ | 4808| [ColorFilter](#colorfilter) | 返回一个颜色滤波器。 | 4809 4810**示例:** 4811 4812```ts 4813import { drawing } from '@kit.ArkGraphics2D'; 4814let colorFilter = drawing.ColorFilter.createLumaColorFilter(); 4815``` 4816 4817### createMatrixColorFilter<sup>12+</sup> 4818 4819static createMatrixColorFilter(matrix: Array\<number>): ColorFilter 4820 4821创建颜色滤波器,通过4x5颜色矩阵变换颜色。 4822 4823**系统能力:** SystemCapability.Graphics.Drawing 4824 4825**参数:** 4826 4827| 参数名 | 类型 | 必填 | 说明 | 4828| -------- | -------------------------------------------- | ---- | ------------------------------- | 4829| matrix | Array\<number> | 是 | 长度为20的数组,表示用于颜色变换的4*5矩阵。 | 4830 4831**返回值:** 4832 4833| 类型 | 说明 | 4834| --------------------------- | ------------------ | 4835| [ColorFilter](#colorfilter) | 返回一个颜色滤波器。 | 4836 4837**错误码:** 4838 4839以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 4840 4841| 错误码ID | 错误信息 | 4842| ------- | --------------------------------------------| 4843| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types;3.Parameter verification failed. | 4844 4845**示例:** 4846 4847```ts 4848import { drawing } from '@kit.ArkGraphics2D'; 4849let matrix: Array<number> = [ 4850 1, 0, 0, 0, 0, 4851 0, 1, 0, 0, 0, 4852 0, 0, 100, 0, 0, 4853 0, 0, 0, 1, 0 4854]; 4855let colorFilter = drawing.ColorFilter.createMatrixColorFilter(matrix); 4856``` 4857 4858## JoinStyle<sup>12+</sup> 4859 4860定义线条转角样式的枚举,即画笔在绘制折线段时,在折线转角处的样式。 4861 4862**系统能力:** SystemCapability.Graphics.Drawing 4863 4864| 名称 | 值 | 说明 | 示意图 | 4865| ----------- | ---- | ----------------------------------------------------------- | -------- | 4866| MITER_JOIN | 0 | 转角类型为尖角,如果折线角度比较小,则尖角会很长,需要使用限制值(miter limit)进行限制。 |  | 4867| ROUND_JOIN | 1 | 转角类型为圆头。 |  | 4868| BEVEL_JOIN | 2 | 转角类型为平头。 |  | 4869 4870## CapStyle<sup>12+</sup> 4871 4872定义线帽样式的枚举,即画笔在绘制线段时,在线段头尾端点的样式。 4873 4874**系统能力:** SystemCapability.Graphics.Drawing 4875 4876| 名称 | 值 | 说明 | 示意图 | 4877| ---------- | ---- | ----------------------------------------------------------- | -------- | 4878| FLAT_CAP | 0 | 没有线帽样式,线条头尾端点处横切。 |  | 4879| SQUARE_CAP | 1 | 线帽的样式为方框,线条的头尾端点处多出一个方框,方框宽度和线段一样宽,高度是线段宽度的一半。 |  | 4880| ROUND_CAP | 2 | 线帽的样式为圆弧,线条的头尾端点处多出一个半圆弧,半圆的直径与线段宽度一致。 |  | 4881 4882## BlurType<sup>12+</sup> 4883 4884定义蒙版滤镜模糊中操作类型的枚举。 4885 4886**系统能力:** SystemCapability.Graphics.Drawing 4887 4888| 名称 | 值 | 说明 | 示意图 | 4889| ------ | - | ------------------ | -------- | 4890| NORMAL | 0 | 内外模糊。 |  | 4891| SOLID | 1 | 内部实体,外部模糊。 |  | 4892| OUTER | 2 | 内部空白,外部模糊。 |  | 4893| INNER | 3 | 内部模糊,外部空白。 |  | 4894 4895## SamplingOptions<sup>12+</sup> 4896 4897采样选项对象。 4898 4899### constructor<sup>12+</sup> 4900 4901constructor() 4902 4903用于构造一个新的采样选项对象。 4904 4905**系统能力:** SystemCapability.Graphics.Drawing 4906 4907**示例:** 4908 4909```ts 4910import { RenderNode } from '@kit.ArkUI'; 4911import { common2D, drawing } from '@kit.ArkGraphics2D'; 4912class DrawingRenderNode extends RenderNode { 4913 draw(context : DrawContext) { 4914 const canvas = context.canvas; 4915 const pen = new drawing.Pen(); 4916 let samplingOptions = new drawing.SamplingOptions(); 4917 } 4918} 4919``` 4920 4921### constructor<sup>12+</sup> 4922 4923constructor(filterMode: FilterMode) 4924 4925用于构造一个新的采样选项对象。 4926 4927**系统能力:** SystemCapability.Graphics.Drawing 4928 4929**参数:** 4930 4931| 参数名 | 类型 | 必填 | 说明 | 4932| ---------- | --------------------- | ---- | ----------------------------------- | 4933| filterMode | [FilterMode](#filtermode12) | 是 | 过滤模式。 | 4934 4935**错误码:** 4936 4937以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 4938 4939| 错误码ID | 错误信息 | 4940| ------- | --------------------------------------------| 4941| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. | 4942 4943**示例:** 4944 4945```ts 4946import { RenderNode } from '@kit.ArkUI'; 4947import { common2D, drawing } from '@kit.ArkGraphics2D'; 4948class DrawingRenderNode extends RenderNode { 4949 draw(context : DrawContext) { 4950 const canvas = context.canvas; 4951 let samplingOptions = new drawing.SamplingOptions(drawing.FilterMode.FILTER_MODE_NEAREST); 4952 } 4953} 4954``` 4955 4956## Lattice<sup>12+</sup> 4957 4958矩形网格对象。该对象用于将图片按照矩形网格进行划分。 4959 4960### createImageLattice<sup>12+</sup> 4961 4962static createImageLattice(xDivs: Array\<number>, yDivs: Array\<number>, fXCount: number, fYCount: number, fBounds?: common2D.Rect | null, fRectTypes?: Array\<RectType> | null, fColors?: Array\<common2D.Color> | null): Lattice 4963 4964创建矩形网格对象。将图像划分为矩形网格,同时处于偶数列和偶数行上的网格是固定的,如果目标网格足够大,则这些固定网格以其原始大小进行绘制。如果目标网格太小,无法容纳这些固定网格,则所有固定网格都会按比例缩小以适应目标网格。其余网格将进行缩放,来适应剩余的空间。 4965 4966**系统能力:** SystemCapability.Graphics.Drawing 4967 4968**参数:** 4969 4970| 参数名 | 类型 | 必填 | 说明 | 4971| ------------ | ------------------------------------------------------------------ | ---- | --------------------------------------------------------------------------------- | 4972| xDivs | Array\<number> | 是 | 用于划分图像的X坐标值数组。该参数为整数。 | 4973| yDivs | Array\<number> | 是 | 用于划分图像的Y坐标值数组。该参数为整数。 | 4974| fXCount | number | 是 | X坐标值数组的大小。基于功能和性能的考虑,取值范围为[0, 5]。 | 4975| fYCount | number | 是 | Y坐标值数组的大小。基于功能和性能的考虑,取值范围为[0, 5]。 | 4976| fBounds | [common2D.Rect](js-apis-graphics-common2D.md#rect)\|null | 否 | 可选,要绘制的原始边界矩形,矩形参数须为整数,默认为原始图像矩形大小(若矩形参数为小数,会直接舍弃小数部分,转为整数)。 | 4977| fRectTypes | Array\<[RectType](#recttype12)>\|null | 否 | 可选,填充网格类型的数组,默认为空。如果设置,大小必须为(fXCount + 1) * (fYCount + 1)。 | 4978| fColors | Array\<[common2D.Color](js-apis-graphics-common2D.md#color)>\|null | 否 | 可选,填充网格的颜色数组,默认为空。如果设置,大小必须为(fXCount + 1) * (fYCount + 1)。 | 4979 4980**返回值:** 4981 4982| 类型 | 说明 | 4983| ------------------------- | ----------------------------------- | 4984| [Lattice](#lattice12) | 返回创建的矩形网格对象。 | 4985 4986**错误码:** 4987 4988以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 4989 4990| 错误码ID | 错误信息 | 4991| ------- | --------------------------------------------| 4992| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types;3.Parameter verification failed. | 4993 4994**示例:** 4995 4996```ts 4997import { RenderNode } from '@kit.ArkUI'; 4998import { drawing } from '@kit.ArkGraphics2D'; 4999class DrawingRenderNode extends RenderNode { 5000 draw(context : DrawContext) { 5001 let xDivs : Array<number> = [1, 2, 4]; 5002 let yDivs : Array<number> = [1, 2, 4]; 5003 let lattice = drawing.Lattice.createImageLattice(xDivs, yDivs, 3, 3); // 划分(3+1)*(3+1)的网格,下图蓝色填充矩形为固定网格 5004 } 5005} 5006``` 5007 5008 5009## RectType<sup>12+</sup> 5010 5011定义填充网格的矩形类型的枚举。仅在[Lattice](#lattice12)中使用。 5012 5013**系统能力:** SystemCapability.Graphics.Drawing 5014 5015| 名称 | 值 | 说明 | 5016| ------------ | ---- | --------------------------------------------------------------- | 5017| DEFAULT | 0 | 将图像绘制到矩形网格中。 | 5018| TRANSPARENT | 1 | 将矩形网格设置为透明的。 | 5019| FIXEDCOLOR | 2 | 将[Lattice](#lattice12)中fColors数组的颜色绘制到矩形网格中。 | 5020 5021## MaskFilter<sup>12+</sup> 5022 5023蒙版滤镜对象。 5024 5025### createBlurMaskFilter<sup>12+</sup> 5026 5027static createBlurMaskFilter(blurType: BlurType, sigma: number): MaskFilter 5028 5029用于创建具有模糊效果的蒙版滤镜。 5030 5031**系统能力:** SystemCapability.Graphics.Drawing 5032 5033**参数:** 5034 5035| 参数名 | 类型 | 必填 | 说明 | 5036| ---------- | --------------------- | ---- | ----------------------------------- | 5037| blurType | [BlurType](#blurtype12) | 是 | 模糊类型。 | 5038| sigma | number | 是 | 要应用的高斯模糊的标准偏差,必须为大于0的浮点数。 | 5039 5040**返回值:** 5041 5042| 类型 | 说明 | 5043| ------------------------- | ------------------ | 5044| [MaskFilter](#maskfilter12) | 返回创建的蒙版滤镜对象。 | 5045 5046**错误码:** 5047 5048以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 5049 5050| 错误码ID | 错误信息 | 5051| ------- | --------------------------------------------| 5052| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types;3.Parameter verification failed. | 5053 5054**示例:** 5055 5056```ts 5057import { RenderNode } from '@kit.ArkUI'; 5058import { common2D, drawing } from '@kit.ArkGraphics2D'; 5059class DrawingRenderNode extends RenderNode { 5060 draw(context : DrawContext) { 5061 const canvas = context.canvas; 5062 let maskFilter = drawing.MaskFilter.createBlurMaskFilter(drawing.BlurType.OUTER, 10); 5063 } 5064} 5065``` 5066 5067## PathEffect<sup>12+</sup> 5068 5069路径效果对象。 5070 5071### createDashPathEffect<sup>12+</sup> 5072 5073static createDashPathEffect(intervals: Array\<number>, phase: number): PathEffect 5074 5075用于创建将路径变为虚线的路径效果对象。 5076 5077**系统能力:** SystemCapability.Graphics.Drawing 5078 5079**参数:** 5080 5081| 参数名 | 类型 | 必填 | 说明 | 5082| ---------- | ------------- | ------- | -------------------------------------------------- | 5083| intervals | Array\<number> | 是 | 表示虚线的ON和OFF长度的数组,数组个数必须是偶数,且>=2,该参数为正整数。| 5084| phase | number | 是 | 绘制时的偏移量,该参数为浮点数。 | 5085 5086**返回值:** 5087 5088| 类型 | 说明 | 5089| ------------------------- | --------------------- | 5090| [PathEffect](#patheffect12) | 返回创建的路径效果对象。 | 5091 5092**错误码:** 5093 5094以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 5095 5096| 错误码ID | 错误信息 | 5097| ------- | --------------------------------------------| 5098| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types;3.Parameter verification failed. | 5099 5100**示例:** 5101 5102```ts 5103import { RenderNode } from '@kit.ArkUI'; 5104import { common2D, drawing } from '@kit.ArkGraphics2D'; 5105class DrawingRenderNode extends RenderNode { 5106 draw(context : DrawContext) { 5107 const canvas = context.canvas; 5108 let intervals = [10, 5]; 5109 let effect = drawing.PathEffect.createDashPathEffect(intervals, 5); 5110 } 5111} 5112``` 5113 5114### createCornerPathEffect<sup>12+</sup> 5115 5116static createCornerPathEffect(radius: number): PathEffect 5117 5118用于创建将路径的夹角变成指定半径的圆角的路径效果对象。 5119 5120**系统能力:** SystemCapability.Graphics.Drawing 5121 5122**参数:** 5123 5124| 参数名 | 类型 | 必填 | 说明 | 5125| ---------- | ------------- | ------- | -------------------------------------------------- | 5126| radius | number | 是 | 圆角的半径,必须大于0,该参数为浮点数。 | 5127 5128**返回值:** 5129 5130| 类型 | 说明 | 5131| ------------------------- | --------------------- | 5132| [PathEffect](#patheffect12) | 返回创建的路径效果对象。 | 5133 5134**错误码:** 5135 5136以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 5137 5138| 错误码ID | 错误信息 | 5139| ------- | --------------------------------------------| 5140| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types;3.Parameter verification failed. | 5141 5142**示例:** 5143 5144```ts 5145import { RenderNode } from '@kit.ArkUI'; 5146import { drawing } from '@kit.ArkGraphics2D'; 5147class DrawingRenderNode extends RenderNode { 5148 draw(context : DrawContext) { 5149 const canvas = context.canvas; 5150 let effect = drawing.PathEffect.createCornerPathEffect(30); 5151 } 5152} 5153``` 5154 5155## ShadowLayer<sup>12+</sup> 5156 5157阴影层对象。 5158 5159### create<sup>12+</sup> 5160 5161static create(blurRadius: number, x: number, y: number, color: common2D.Color): ShadowLayer 5162 5163用于创建一个阴影层对象。 5164 5165**系统能力:** SystemCapability.Graphics.Drawing 5166 5167**参数:** 5168 5169| 参数名 | 类型 | 必填 | 说明 | 5170| ---------- | -------- | ---- | ----------------------------------- | 5171| blurRadius | number | 是 | 阴影的半径,必须为大于零的浮点数。 | 5172| x | number | 是 | x轴上的偏移点,该参数为浮点数。 | 5173| y | number | 是 | Y轴上的偏移点,该参数为浮点数。 | 5174| color | [common2D.Color](js-apis-graphics-common2D.md#color) | 是 | ARGB格式的颜色,每个颜色通道是0到255之间的整数。 | 5175 5176**返回值:** 5177 5178| 类型 | 说明 | 5179| --------------------------- | -------------------- | 5180| [ShadowLayer](#shadowlayer12) | 返回创建的阴影层对象。 | 5181 5182**错误码:** 5183 5184以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 5185 5186| 错误码ID | 错误信息 | 5187| ------- | --------------------------------------------| 5188| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types;3.Parameter verification failed. | 5189 5190**示例:** 5191 5192```ts 5193import { RenderNode } from '@kit.ArkUI'; 5194import { common2D, drawing } from '@kit.ArkGraphics2D'; 5195class DrawingRenderNode extends RenderNode { 5196 draw(context : DrawContext) { 5197 const canvas = context.canvas; 5198 let color : common2D.Color = {alpha: 0xFF, red: 0x00, green: 0xFF, blue: 0x00}; 5199 let shadowLayer = drawing.ShadowLayer.create(3, -3, 3, color); 5200 } 5201} 5202``` 5203 5204## Pen 5205 5206画笔对象,描述所绘制图形形状的轮廓信息。 5207 5208### constructor<sup>12+</sup> 5209 5210constructor() 5211 5212构造一个新的画笔对象。 5213 5214**系统能力:** SystemCapability.Graphics.Drawing 5215 5216**示例:** 5217 5218```ts 5219import { drawing } from '@kit.ArkGraphics2D'; 5220 5221const pen = new drawing.Pen(); 5222``` 5223 5224### constructor<sup>12+</sup> 5225 5226constructor(pen: Pen) 5227 5228复制构造一个新的画笔对象。 5229 5230**系统能力:** SystemCapability.Graphics.Drawing 5231 5232**参数:** 5233 5234| 参数名 | 类型 | 必填 | 说明 | 5235| ------| ----------- | ---- | ---------------- | 5236| pen | [Pen](#pen) | 是 | 待复制的画笔对象。 | 5237 5238**错误码:** 5239 5240以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 5241 5242| 错误码ID | 错误信息 | 5243| ------- | --------------------------------------------| 5244| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. | 5245 5246**示例:** 5247 5248```ts 5249import { common2D, drawing } from '@kit.ArkGraphics2D'; 5250 5251const pen = new drawing.Pen(); 5252const penColor: common2D.Color = { alpha: 255, red: 0, green: 255, blue: 0 }; 5253pen.setColor(penColor); 5254pen.setStrokeWidth(10); 5255const newPen = new drawing.Pen(pen); 5256``` 5257 5258### setMiterLimit<sup>12+</sup> 5259 5260setMiterLimit(miter: number): void 5261 5262设置折线尖角长度与线宽的最大比值,当画笔绘制一条折线,并且[JoinStyle](#joinstyle12)为MITER_JOIN时,若尖角长度与线宽的比值大于限制值,则该折角使用BEVEL_JOIN绘制。 5263 5264**系统能力:** SystemCapability.Graphics.Drawing 5265 5266**参数:** 5267 5268| 参数名 | 类型 | 必填 | 说明 | 5269| ------ | ------ | ---- | ---------------- | 5270| miter | number | 是 | 折线尖角长度与线宽的最大比值,负数在绘制时会被视作4.0处理,非负数正常生效,该参数为浮点数。 | 5271 5272**错误码:** 5273 5274以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 5275 5276| 错误码ID | 错误信息 | 5277| ------- | --------------------------------------------| 5278| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. | 5279 5280**示例:** 5281 5282```ts 5283import { drawing } from '@kit.ArkGraphics2D'; 5284 5285const pen = new drawing.Pen(); 5286pen.setMiterLimit(5); 5287``` 5288 5289### getMiterLimit<sup>12+</sup> 5290 5291getMiterLimit(): number 5292 5293获取折线尖角的限制值。 5294 5295**系统能力:** SystemCapability.Graphics.Drawing 5296 5297**返回值:** 5298 5299| 类型 | 说明 | 5300| -------| -------------------- | 5301| number | 返回折线尖角长度与线宽的最大比值。 | 5302 5303**示例:** 5304 5305```ts 5306import { drawing } from '@kit.ArkGraphics2D'; 5307 5308const pen = new drawing.Pen(); 5309let miter = pen.getMiterLimit(); 5310``` 5311 5312### setImageFilter<sup>12+</sup> 5313 5314setImageFilter(filter: ImageFilter | null): void 5315 5316为画笔设置图像滤波器。 5317 5318**系统能力:** SystemCapability.Graphics.Drawing 5319 5320**参数:** 5321 5322| 参数名 | 类型 | 必填 | 说明 | 5323| ------ | ------ | ---- | ----------------------- | 5324| filter | [ImageFilter](#imagefilter12) \| null | 是 | 图像滤波器,为null表示清空画笔的图像滤波器效果。 | 5325 5326**错误码:** 5327 5328以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 5329 5330| 错误码ID | 错误信息 | 5331| ------- | --------------------------------------------| 5332| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified;2. Incorrect parameter types. | 5333 5334**示例:** 5335 5336```ts 5337import {drawing} from '@kit.ArkGraphics2D'; 5338let colorfilter = drawing.ColorFilter.createSRGBGammaToLinear(); 5339let imgFilter = drawing.ImageFilter.createFromColorFilter(colorfilter); 5340let pen = new drawing.Pen(); 5341pen.setImageFilter(imgFilter); 5342pen.setImageFilter(null); 5343``` 5344 5345### getColorFilter<sup>12+</sup> 5346 5347getColorFilter(): ColorFilter 5348 5349获取画笔的颜色滤波器。 5350 5351**系统能力:** SystemCapability.Graphics.Drawing 5352 5353**返回值:** 5354 5355| 类型 | 说明 | 5356| --------------------------- | ------------------ | 5357| [ColorFilter](#colorfilter) | 返回一个颜色滤波器。 | 5358 5359**示例:** 5360 5361```ts 5362import {drawing} from '@kit.ArkGraphics2D'; 5363let pen = new drawing.Pen(); 5364let colorfilter = drawing.ColorFilter.createLumaColorFilter(); 5365pen.setColorFilter(colorfilter); 5366let filter = pen.getColorFilter(); 5367``` 5368 5369### setColor 5370 5371setColor(color: common2D.Color) : void 5372 5373用于设置画笔的颜色。 5374 5375**系统能力:** SystemCapability.Graphics.Drawing 5376 5377**参数:** 5378 5379| 参数名 | 类型 | 必填 | 说明 | 5380| ------ | ---------------------------------------------------- | ---- | ---------------- | 5381| color | [common2D.Color](js-apis-graphics-common2D.md#color) | 是 | ARGB格式的颜色,每个颜色通道是0到255之间的整数。 | 5382 5383**错误码:** 5384 5385以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 5386 5387| 错误码ID | 错误信息 | 5388| ------- | --------------------------------------------| 5389| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types;3.Parameter verification failed. | 5390 5391**示例:** 5392 5393```ts 5394import { common2D, drawing } from '@kit.ArkGraphics2D'; 5395const color : common2D.Color = { alpha: 255, red: 255, green: 0, blue: 0 }; 5396const pen = new drawing.Pen(); 5397pen.setColor(color); 5398``` 5399 5400### setColor<sup>12+</sup> 5401 5402setColor(alpha: number, red: number, green: number, blue: number): void 5403 5404用于设置画笔的颜色。性能优于[setColor](#setcolor)接口,推荐使用本接口。 5405 5406**系统能力:** SystemCapability.Graphics.Drawing 5407 5408**参数:** 5409 5410| 参数名 | 类型 | 必填 | 说明 | 5411| ------ | ------ | ---- | -------------------------------------------------- | 5412| alpha | number | 是 | ARGB格式颜色的透明度通道值,该参数是0到255之间的整数,传入范围内的浮点数会向下取整。 | 5413| red | number | 是 | ARGB格式颜色的红色通道值,该参数是0到255之间的整数,传入范围内的浮点数会向下取整。 | 5414| green | number | 是 | ARGB格式颜色的绿色通道值,该参数是0到255之间的整数,传入范围内的浮点数会向下取整。 | 5415| blue | number | 是 | ARGB格式颜色的蓝色通道值,该参数是0到255之间的整数,传入范围内的浮点数会向下取整。 | 5416 5417**错误码:** 5418 5419以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 5420 5421| 错误码ID | 错误信息 | 5422| ------- | --------------------------------------------| 5423| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. | 5424 5425**示例:** 5426 5427```ts 5428import { drawing } from '@kit.ArkGraphics2D'; 5429const pen = new drawing.Pen(); 5430pen.setColor(255, 255, 0, 0); 5431``` 5432 5433### getColor<sup>12+</sup> 5434 5435getColor(): common2D.Color 5436 5437获取画笔的颜色。 5438 5439**系统能力:** SystemCapability.Graphics.Drawing 5440 5441**返回值:** 5442 5443| 类型 | 说明 | 5444| -------------- | -------------- | 5445| common2D.Color | 返回画笔的颜色。 | 5446 5447**示例:** 5448 5449```ts 5450import { common2D, drawing } from '@kit.ArkGraphics2D'; 5451 5452const color : common2D.Color = { alpha: 255, red: 255, green: 0, blue: 0 }; 5453const pen = new drawing.Pen(); 5454pen.setColor(color); 5455let colorGet = pen.getColor(); 5456``` 5457 5458### setStrokeWidth 5459 5460setStrokeWidth(width: number) : void 5461 5462用于设置画笔的线宽。0线宽被视作特殊的极细线宽,在绘制时始终会被绘制为1像素,不随画布的缩放而改变;负数线宽在实际绘制时会被视作0线宽。 5463 5464**系统能力:** SystemCapability.Graphics.Drawing 5465 5466**参数:** 5467 5468| 参数名 | 类型 | 必填 | 说明 | 5469| ------ | ------ | ---- | ---------------- | 5470| width | number | 是 | 表示线宽,该参数为浮点数。 | 5471 5472**错误码:** 5473 5474以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 5475 5476| 错误码ID | 错误信息 | 5477| ------- | --------------------------------------------| 5478| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. | 5479 5480**示例:** 5481 5482```ts 5483import { drawing } from '@kit.ArkGraphics2D'; 5484const pen = new drawing.Pen(); 5485pen.setStrokeWidth(5); 5486``` 5487 5488### getWidth<sup>12+</sup> 5489 5490getWidth(): number 5491 5492获取画笔的线宽属性,线宽描述了画笔绘制图形轮廓的宽度。 5493 5494**系统能力:** SystemCapability.Graphics.Drawing 5495 5496**返回值:** 5497 5498| 类型 | 说明 | 5499| ------ | -------------- | 5500| number | 返回画笔的线宽。 | 5501 5502**示例:** 5503 5504```ts 5505import { drawing } from '@kit.ArkGraphics2D'; 5506 5507const pen = new drawing.Pen(); 5508let width = pen.getWidth(); 5509``` 5510 5511### setAntiAlias 5512 5513setAntiAlias(aa: boolean) : void 5514 5515用于设置画笔是否开启抗锯齿。开启后,可以使得图形的边缘在显示时更平滑。 5516 5517**系统能力:** SystemCapability.Graphics.Drawing 5518 5519**参数:** 5520 5521| 参数名 | 类型 | 必填 | 说明 | 5522| ------ | ------- | ---- | ------------------------------------------------- | 5523| aa | boolean | 是 | 表示是否开启抗锯齿。true表示开启,false表示关闭。 | 5524 5525**错误码:** 5526 5527以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 5528 5529| 错误码ID | 错误信息 | 5530| ------- | --------------------------------------------| 5531| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. | 5532 5533**示例:** 5534 5535```ts 5536import { drawing } from '@kit.ArkGraphics2D'; 5537const pen = new drawing.Pen(); 5538pen.setAntiAlias(true); 5539``` 5540 5541### isAntiAlias<sup>12+</sup> 5542 5543isAntiAlias(): boolean 5544 5545获取画笔是否开启抗锯齿属性。 5546 5547**系统能力:** SystemCapability.Graphics.Drawing 5548 5549**返回值:** 5550 5551| 类型 | 说明 | 5552| ------- | ------------------------- | 5553| boolean | 返回画笔是否开启抗锯齿属性,true表示开启抗锯齿属性,false表示关闭抗锯齿属性。 | 5554 5555**示例:** 5556 5557```ts 5558import { drawing } from '@kit.ArkGraphics2D'; 5559 5560const pen = new drawing.Pen(); 5561let isAntiAlias = pen.isAntiAlias(); 5562``` 5563 5564### setAlpha 5565 5566setAlpha(alpha: number) : void 5567 5568用于设置画笔的透明度。 5569 5570**系统能力:** SystemCapability.Graphics.Drawing 5571 5572**参数:** 5573 5574| 参数名 | 类型 | 必填 | 说明 | 5575| ------ | ------ | ---- | ---------------------------------------- | 5576| alpha | number | 是 | 用于表示透明度的[0, 255]区间内的整数值,传入浮点类型时向下取整。 | 5577 5578**错误码:** 5579 5580以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 5581 5582| 错误码ID | 错误信息 | 5583| ------- | --------------------------------------------| 5584| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types;3.Parameter verification failed. | 5585 5586**示例:** 5587 5588```ts 5589import { drawing } from '@kit.ArkGraphics2D'; 5590const pen = new drawing.Pen(); 5591pen.setAlpha(128); 5592``` 5593 5594### getAlpha<sup>12+</sup> 5595 5596getAlpha(): number 5597 5598获取画笔的透明度。 5599 5600**系统能力:** SystemCapability.Graphics.Drawing 5601 5602**返回值:** 5603 5604| 类型 | 说明 | 5605| ------ | ---------------- | 5606| number | 返回画笔的透明度,该返回值为0到255之间的整数。 | 5607 5608**示例:** 5609 5610```ts 5611import { drawing } from '@kit.ArkGraphics2D'; 5612 5613const pen = new drawing.Pen(); 5614let alpha = pen.getAlpha(); 5615``` 5616 5617### setColorFilter 5618 5619setColorFilter(filter: ColorFilter) : void 5620 5621用于给画笔添加额外的颜色滤波器。 5622 5623**系统能力:** SystemCapability.Graphics.Drawing 5624 5625**参数:** 5626 5627| 参数名 | 类型 | 必填 | 说明 | 5628| ------ | --------------------------- | ---- | ------------ | 5629| filter | [ColorFilter](#colorfilter) | 是 | 颜色滤波器。为null时表示清空颜色滤波器。 | 5630 5631**错误码:** 5632 5633以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 5634 5635| 错误码ID | 错误信息 | 5636| ------- | --------------------------------------------| 5637| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. | 5638 5639**示例:** 5640 5641```ts 5642import { drawing } from '@kit.ArkGraphics2D'; 5643const pen = new drawing.Pen(); 5644let colorFilter = drawing.ColorFilter.createLinearToSRGBGamma(); 5645pen.setColorFilter(colorFilter); 5646``` 5647 5648### setMaskFilter<sup>12+</sup> 5649 5650setMaskFilter(filter: MaskFilter): void 5651 5652用于给画笔添加额外的蒙版滤镜。 5653 5654**系统能力:** SystemCapability.Graphics.Drawing 5655 5656**参数:** 5657 5658| 参数名 | 类型 | 必填 | 说明 | 5659| ------ | ------------------------- | ---- | --------- | 5660| filter | [MaskFilter](#maskfilter12) | 是 | 蒙版滤镜。为null时表示清空蒙版滤镜。 | 5661 5662**错误码:** 5663 5664以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 5665 5666| 错误码ID | 错误信息 | 5667| ------- | --------------------------------------------| 5668| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. | 5669 5670**示例:** 5671 5672```ts 5673import { RenderNode } from '@kit.ArkUI'; 5674import { common2D, drawing } from '@kit.ArkGraphics2D'; 5675class DrawingRenderNode extends RenderNode { 5676 draw(context : DrawContext) { 5677 const canvas = context.canvas; 5678 const pen = new drawing.Pen(); 5679 pen.setStrokeWidth(5); 5680 pen.setColor({alpha: 255, red: 255, green: 0, blue: 0}); 5681 let maskFilter = drawing.MaskFilter.createBlurMaskFilter(drawing.BlurType.OUTER, 10); 5682 pen.setMaskFilter(maskFilter); 5683 } 5684} 5685``` 5686 5687### setPathEffect<sup>12+</sup> 5688 5689setPathEffect(effect: PathEffect): void 5690 5691设置画笔路径效果。 5692 5693**系统能力:** SystemCapability.Graphics.Drawing 5694 5695**参数:** 5696 5697| 参数名 | 类型 | 必填 | 说明 | 5698| ------- | ------------------------- | ---- | ------------ | 5699| effect | [PathEffect](#patheffect12) | 是 | 路径效果对象。为null时表示清空路径效果。 | 5700 5701**错误码:** 5702 5703以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 5704 5705| 错误码ID | 错误信息 | 5706| ------- | --------------------------------------------| 5707| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. | 5708 5709**示例:** 5710 5711```ts 5712import { RenderNode } from '@kit.ArkUI'; 5713import { common2D, drawing } from '@kit.ArkGraphics2D'; 5714class DrawingRenderNode extends RenderNode { 5715 draw(context : DrawContext) { 5716 const canvas = context.canvas; 5717 const pen = new drawing.Pen(); 5718 pen.setStrokeWidth(5); 5719 pen.setColor({alpha: 255, red: 255, green: 0, blue: 0}); 5720 let pathEffect = drawing.PathEffect.createDashPathEffect([30, 10], 0); 5721 pen.setPathEffect(pathEffect); 5722 } 5723} 5724``` 5725 5726### setShaderEffect<sup>12+</sup> 5727 5728setShaderEffect(shaderEffect: ShaderEffect): void 5729 5730设置画笔着色器效果。 5731 5732**系统能力:** SystemCapability.Graphics.Drawing 5733 5734**参数:** 5735 5736| 参数名 | 类型 | 必填 | 说明 | 5737| ------- | ------------------------- | ---- | ------------ | 5738| shaderEffect | [ShaderEffect](#shadereffect12) | 是 | 着色器对象。为null时表示清空着色器效果。 | 5739 5740**错误码:** 5741 5742以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 5743 5744| 错误码ID | 错误信息 | 5745| ------- | --------------------------------------------| 5746| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. | 5747 5748**示例:** 5749 5750```ts 5751import { drawing } from '@kit.ArkGraphics2D'; 5752 5753const pen = new drawing.Pen(); 5754let shaderEffect = drawing.ShaderEffect.createLinearGradient({x: 100, y: 100}, {x: 300, y: 300}, [0xFF00FF00, 0xFFFF0000], drawing.TileMode.REPEAT); 5755pen.setShaderEffect(shaderEffect); 5756``` 5757 5758### setShadowLayer<sup>12+</sup> 5759 5760setShadowLayer(shadowLayer: ShadowLayer): void 5761 5762设置画笔阴影层效果。当前仅在绘制文字时生效。 5763 5764**系统能力:** SystemCapability.Graphics.Drawing 5765 5766**参数:** 5767 5768| 参数名 | 类型 | 必填 | 说明 | 5769| ------- | ------------------------- | ---- | --------- | 5770| shadowLayer | [ShadowLayer](#shadowlayer12) | 是 | 阴影层对象。为null时表示清空阴影层效果。 | 5771 5772**错误码:** 5773 5774以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 5775 5776| 错误码ID | 错误信息 | 5777| ------- | --------------------------------------------| 5778| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. | 5779 5780**示例:** 5781 5782```ts 5783import { RenderNode } from '@kit.ArkUI'; 5784import { common2D, drawing } from '@kit.ArkGraphics2D'; 5785class DrawingRenderNode extends RenderNode { 5786 draw(context : DrawContext) { 5787 const canvas = context.canvas; 5788 let font = new drawing.Font(); 5789 font.setSize(60); 5790 let textBlob = drawing.TextBlob.makeFromString("hello", font, drawing.TextEncoding.TEXT_ENCODING_UTF8); 5791 let pen = new drawing.Pen(); 5792 pen.setStrokeWidth(2.0); 5793 let pen_color : common2D.Color = {alpha: 0xFF, red: 0xFF, green: 0x00, blue: 0x00}; 5794 pen.setColor(pen_color); 5795 canvas.attachPen(pen); 5796 canvas.drawTextBlob(textBlob, 100, 100); 5797 canvas.detachPen(); 5798 let color : common2D.Color = {alpha: 0xFF, red: 0x00, green: 0xFF, blue: 0x00}; 5799 let shadowLayer = drawing.ShadowLayer.create(3, -3, 3, color); 5800 pen.setShadowLayer(shadowLayer); 5801 canvas.attachPen(pen); 5802 canvas.drawTextBlob(textBlob, 100, 200); 5803 canvas.detachPen(); 5804 } 5805} 5806``` 5807 5808### setBlendMode 5809 5810setBlendMode(mode: BlendMode) : void 5811 5812用于设置画笔的混合模式。 5813 5814**系统能力:** SystemCapability.Graphics.Drawing 5815 5816**参数:** 5817 5818| 参数名 | 类型 | 必填 | 说明 | 5819| ------ | ----------------------- | ---- | ---------------- | 5820| mode | [BlendMode](#blendmode) | 是 | 颜色的混合模式。 | 5821 5822**错误码:** 5823 5824以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 5825 5826| 错误码ID | 错误信息 | 5827| ------- | --------------------------------------------| 5828| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types;3.Parameter verification failed. | 5829 5830**示例:** 5831 5832```ts 5833import { drawing } from '@kit.ArkGraphics2D'; 5834const pen = new drawing.Pen(); 5835pen.setBlendMode(drawing.BlendMode.SRC); 5836``` 5837 5838### setJoinStyle<sup>12+</sup> 5839 5840setJoinStyle(style: JoinStyle): void 5841 5842用于设置画笔绘制转角的样式。 5843 5844**系统能力:** SystemCapability.Graphics.Drawing 5845 5846**参数:** 5847 5848| 参数名 | 类型 | 必填 | 说明 | 5849| ------ | ----------------------- | ---- | --------------- | 5850| style | [JoinStyle](#joinstyle12) | 是 | 折线转角样式。 | 5851 5852**错误码:** 5853 5854以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 5855 5856| 错误码ID | 错误信息 | 5857| ------- | --------------------------------------------| 5858| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types;3.Parameter verification failed. | 5859 5860**示例:** 5861 5862```ts 5863import { RenderNode } from '@kit.ArkUI'; 5864import { common2D, drawing } from '@kit.ArkGraphics2D'; 5865class DrawingRenderNode extends RenderNode { 5866 draw(context : DrawContext) { 5867 const canvas = context.canvas; 5868 const pen = new drawing.Pen(); 5869 pen.setStrokeWidth(5); 5870 pen.setColor({alpha: 255, red: 255, green: 0, blue: 0}); 5871 pen.setJoinStyle(drawing.JoinStyle.ROUND_JOIN); 5872 } 5873} 5874``` 5875 5876### getJoinStyle<sup>12+</sup> 5877 5878getJoinStyle(): JoinStyle 5879 5880用于获取画笔绘制转角的样式。 5881 5882**系统能力:** SystemCapability.Graphics.Drawing 5883 5884**返回值:** 5885 5886| 类型 | 说明 | 5887| ------------- | ---------------------- | 5888| JoinStyle | 返回折线转角的样式。 | 5889 5890**示例:** 5891 5892```ts 5893import { RenderNode } from '@kit.ArkUI'; 5894import { common2D, drawing } from '@kit.ArkGraphics2D'; 5895class DrawingRenderNode extends RenderNode { 5896 draw(context : DrawContext) { 5897 const canvas = context.canvas; 5898 const pen = new drawing.Pen(); 5899 pen.setStrokeWidth(5); 5900 pen.setColor({alpha: 255, red: 255, green: 0, blue: 0}); 5901 pen.setJoinStyle(drawing.JoinStyle.ROUND_JOIN); 5902 let joinStyle = pen.getJoinStyle(); 5903 } 5904} 5905``` 5906 5907### setCapStyle<sup>12+</sup> 5908 5909setCapStyle(style: CapStyle): void 5910 5911用于设置线帽样式。 5912 5913**系统能力:** SystemCapability.Graphics.Drawing 5914 5915**参数:** 5916 5917| 参数名 | 类型 | 必填 | 说明 | 5918| ------ | ----------------------- | ---- | --------------------- | 5919| style | [CapStyle](#capstyle12) | 是 | 描述线帽样式的变量。 | 5920 5921**错误码:** 5922 5923以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 5924 5925| 错误码ID | 错误信息 | 5926| ------- | --------------------------------------------| 5927| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types;3.Parameter verification failed. | 5928 5929**示例:** 5930 5931```ts 5932import { RenderNode } from '@kit.ArkUI'; 5933import { common2D, drawing } from '@kit.ArkGraphics2D'; 5934class DrawingRenderNode extends RenderNode { 5935 draw(context : DrawContext) { 5936 const canvas = context.canvas; 5937 const pen = new drawing.Pen(); 5938 pen.setStrokeWidth(5); 5939 pen.setColor({alpha: 255, red: 255, green: 0, blue: 0}); 5940 pen.setCapStyle(drawing.CapStyle.SQUARE_CAP); 5941 } 5942} 5943``` 5944 5945### getCapStyle<sup>12+</sup> 5946 5947getCapStyle(): CapStyle 5948 5949用于获取画笔的线帽样式。 5950 5951**系统能力:** SystemCapability.Graphics.Drawing 5952 5953**返回值:** 5954 5955| 类型 | 说明 | 5956| ------------ | ------------------ | 5957| CapStyle | 返回画笔的线帽样式。 | 5958 5959**示例:** 5960 5961```ts 5962import { RenderNode } from '@kit.ArkUI'; 5963import { common2D, drawing } from '@kit.ArkGraphics2D'; 5964class DrawingRenderNode extends RenderNode { 5965 draw(context : DrawContext) { 5966 const canvas = context.canvas; 5967 const pen = new drawing.Pen(); 5968 pen.setStrokeWidth(5); 5969 pen.setColor({alpha: 255, red: 255, green: 0, blue: 0}); 5970 pen.setCapStyle(drawing.CapStyle.SQUARE_CAP); 5971 let capStyle = pen.getCapStyle(); 5972 } 5973} 5974``` 5975 5976### setDither 5977 5978setDither(dither: boolean) : void 5979 5980开启画笔的抖动绘制效果。抖动绘制可以使得绘制出的颜色更加真实。 5981 5982**系统能力:** SystemCapability.Graphics.Drawing 5983 5984**参数:** 5985 5986| 参数名 | 类型 | 必填 | 说明 | 5987| ------ | ------- | ---- | --------------------------------------------------------- | 5988| dither | boolean | 是 | 是否开启画笔的抖动绘制效果。true表示开启,false表示关闭。 | 5989 5990**错误码:** 5991 5992以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 5993 5994| 错误码ID | 错误信息 | 5995| ------- | --------------------------------------------| 5996| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. | 5997 5998**示例:** 5999 6000```ts 6001import { drawing } from '@kit.ArkGraphics2D'; 6002const pen = new drawing.Pen(); 6003pen.setDither(true); 6004``` 6005 6006### getFillPath<sup>12+</sup> 6007 6008getFillPath(src: Path, dst: Path): boolean 6009 6010获取使用画笔绘制的源路径轮廓,并用目标路径表示。 6011 6012**系统能力:** SystemCapability.Graphics.Drawing 6013 6014**参数:** 6015 6016| 参数名 | 类型 | 必填 | 说明 | 6017| -------- | -------------------------------------------- | ---- | ------------------------------- | 6018| src | [Path](#path) | 是 | 源路径对象。 | 6019| dst | [Path](#path) | 是 | 目标路径对象。 | 6020 6021**返回值:** 6022 6023| 类型 | 说明 | 6024| --------------------- | -------------- | 6025| boolean | 返回获取源路径轮廓是否成功的结果,true表示获取成功,false表示获取失败。 | 6026 6027**错误码:** 6028 6029以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 6030 6031| 错误码ID | 错误信息 | 6032| ------- | --------------------------------------------| 6033| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. | 6034 6035**示例:** 6036 6037```ts 6038import { drawing } from '@kit.ArkGraphics2D'; 6039let pen = new drawing.Pen(); 6040let pathSrc: drawing.Path = new drawing.Path(); 6041let pathDst: drawing.Path = new drawing.Path(); 6042pathSrc.moveTo(0, 0); 6043pathSrc.lineTo(700, 700); 6044let value = pen.getFillPath(pathSrc, pathDst); 6045``` 6046 6047### reset<sup>12+</sup> 6048 6049reset(): void 6050 6051重置当前画笔为初始状态。 6052 6053**系统能力:** SystemCapability.Graphics.Drawing 6054 6055**示例:** 6056 6057```ts 6058import { drawing } from '@kit.ArkGraphics2D'; 6059 6060const pen = new drawing.Pen(); 6061pen.reset(); 6062``` 6063 6064## Brush 6065 6066画刷对象,描述所绘制图形的填充信息。 6067 6068### constructor<sup>12+</sup> 6069 6070constructor() 6071 6072构造一个新的画刷对象。 6073 6074**系统能力:** SystemCapability.Graphics.Drawing 6075 6076**示例:** 6077 6078```ts 6079import { drawing } from '@kit.ArkGraphics2D'; 6080 6081const brush = new drawing.Brush(); 6082``` 6083 6084### constructor<sup>12+</sup> 6085 6086constructor(brush: Brush) 6087 6088复制构造一个新的画刷对象。 6089 6090**系统能力:** SystemCapability.Graphics.Drawing 6091 6092**参数:** 6093 6094| 参数名 | 类型 | 必填 | 说明 | 6095| ------| ----------- | ---- | ---------------- | 6096| brush | [Brush](#brush) | 是 | 待复制的画刷对象。 | 6097 6098**错误码:** 6099 6100以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 6101 6102| 错误码ID | 错误信息 | 6103| ------- | --------------------------------------------| 6104| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. | 6105 6106**示例:** 6107 6108```ts 6109import { common2D, drawing } from '@kit.ArkGraphics2D'; 6110 6111const brush = new drawing.Brush(); 6112const brushColor: common2D.Color = { alpha: 255, red: 0, green: 255, blue: 0 }; 6113brush.setColor(brushColor); 6114const newBrush = new drawing.Brush(brush); 6115``` 6116 6117### setColor 6118 6119setColor(color: common2D.Color) : void 6120 6121用于设置画刷的颜色。 6122 6123**系统能力:** SystemCapability.Graphics.Drawing 6124 6125**参数:** 6126 6127| 参数名 | 类型 | 必填 | 说明 | 6128| ------ | ---------------------------------------------------- | ---- | ---------------- | 6129| color | [common2D.Color](js-apis-graphics-common2D.md#color) | 是 | ARGB格式的颜色,每个颜色通道是0到255之间的整数。 | 6130 6131**错误码:** 6132 6133以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 6134 6135| 错误码ID | 错误信息 | 6136| ------- | --------------------------------------------| 6137| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types;3.Parameter verification failed. | 6138 6139**示例:** 6140 6141```ts 6142import { common2D, drawing } from '@kit.ArkGraphics2D'; 6143const color : common2D.Color = { alpha: 255, red: 255, green: 0, blue: 0 }; 6144const brush = new drawing.Brush(); 6145brush.setColor(color); 6146``` 6147 6148### setColor<sup>12+</sup> 6149 6150setColor(alpha: number, red: number, green: number, blue: number): void 6151 6152用于设置画刷的颜色。性能优于[setColor](#setcolor-1)接口,推荐使用本接口。 6153 6154**系统能力:** SystemCapability.Graphics.Drawing 6155 6156**参数:** 6157 6158| 参数名 | 类型 | 必填 | 说明 | 6159| ------ | ------ | ---- | -------------------------------------------------- | 6160| alpha | number | 是 | ARGB格式颜色的透明度通道值,该参数是0到255之间的整数,传入范围内的浮点数会向下取整。 | 6161| red | number | 是 | ARGB格式颜色的红色通道值,该参数是0到255之间的整数,传入范围内的浮点数会向下取整。 | 6162| green | number | 是 | ARGB格式颜色的绿色通道值,该参数是0到255之间的整数,传入范围内的浮点数会向下取整。 | 6163| blue | number | 是 | ARGB格式颜色的蓝色通道值,该参数是0到255之间的整数,传入范围内的浮点数会向下取整。 | 6164 6165**错误码:** 6166 6167以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 6168 6169| 错误码ID | 错误信息 | 6170| ------- | --------------------------------------------| 6171| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types;3.Parameter verification failed. | 6172 6173**示例:** 6174 6175```ts 6176import { drawing } from '@kit.ArkGraphics2D'; 6177const brush = new drawing.Brush(); 6178brush.setColor(255, 255, 0, 0); 6179``` 6180 6181### getColor<sup>12+</sup> 6182 6183getColor(): common2D.Color 6184 6185获取画刷的颜色。 6186 6187**系统能力:** SystemCapability.Graphics.Drawing 6188 6189**返回值:** 6190 6191| 类型 | 说明 | 6192| -------------- | -------------- | 6193| common2D.Color | 返回画刷的颜色。 | 6194 6195**示例:** 6196 6197```ts 6198import { common2D, drawing } from '@kit.ArkGraphics2D'; 6199 6200const color : common2D.Color = { alpha: 255, red: 255, green: 0, blue: 0 }; 6201const brush = new drawing.Brush(); 6202brush.setColor(color); 6203let colorGet = brush.getColor(); 6204``` 6205 6206### setAntiAlias 6207 6208setAntiAlias(aa: boolean) : void 6209 6210用于设置画刷是否开启抗锯齿。开启后,可以使得图形的边缘在显示时更平滑。 6211 6212**系统能力:** SystemCapability.Graphics.Drawing 6213 6214**参数:** 6215 6216| 参数名 | 类型 | 必填 | 说明 | 6217| ------ | ------- | ---- | ------------------------------------------------- | 6218| aa | boolean | 是 | 表示是否开启抗锯齿。true表示开启,false表示关闭。 | 6219 6220**错误码:** 6221 6222以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 6223 6224| 错误码ID | 错误信息 | 6225| ------- | --------------------------------------------| 6226| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. | 6227 6228**示例:** 6229 6230```ts 6231import { drawing } from '@kit.ArkGraphics2D'; 6232const brush = new drawing.Brush(); 6233brush.setAntiAlias(true); 6234``` 6235 6236### isAntiAlias<sup>12+</sup> 6237 6238isAntiAlias(): boolean 6239 6240获取画刷是否开启抗锯齿属性。 6241 6242**系统能力:** SystemCapability.Graphics.Drawing 6243 6244**返回值:** 6245 6246| 类型 | 说明 | 6247| ------- | ------------------------- | 6248| boolean | 返回画刷是否开启抗锯齿属性,true表示开启抗锯齿属性,false表示关闭抗锯齿属性。 | 6249 6250**示例:** 6251 6252```ts 6253import { drawing } from '@kit.ArkGraphics2D'; 6254 6255const brush = new drawing.Brush(); 6256let isAntiAlias = brush.isAntiAlias(); 6257``` 6258 6259### setAlpha 6260 6261setAlpha(alpha: number) : void 6262 6263用于设置画刷的透明度。 6264 6265**系统能力:** SystemCapability.Graphics.Drawing 6266 6267**参数:** 6268 6269| 参数名 | 类型 | 必填 | 说明 | 6270| ------ | ------ | ---- | ---------------------------------------- | 6271| alpha | number | 是 | 用于表示透明度的[0, 255]区间内的整数值,传入浮点类型时向下取整。 | 6272 6273**错误码:** 6274 6275以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 6276 6277| 错误码ID | 错误信息 | 6278| ------- | --------------------------------------------| 6279| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types;3.Parameter verification failed. | 6280 6281**示例:** 6282 6283```ts 6284import { drawing } from '@kit.ArkGraphics2D'; 6285const brush = new drawing.Brush(); 6286brush.setAlpha(128); 6287``` 6288 6289### getAlpha<sup>12+</sup> 6290 6291getAlpha(): number 6292 6293获取画刷的透明度。 6294 6295**系统能力:** SystemCapability.Graphics.Drawing 6296 6297**返回值:** 6298 6299| 类型 | 说明 | 6300| ------ | ---------------- | 6301| number | 返回画刷的透明度,该返回值为0到255之间的整数。 | 6302 6303**示例:** 6304 6305```ts 6306import { drawing } from '@kit.ArkGraphics2D'; 6307 6308const brush = new drawing.Brush(); 6309let alpha = brush.getAlpha(); 6310``` 6311 6312### setColorFilter 6313 6314setColorFilter(filter: ColorFilter) : void 6315 6316用于给画刷添加额外的颜色滤波器。 6317 6318**系统能力:** SystemCapability.Graphics.Drawing 6319 6320**参数:** 6321 6322| 参数名 | 类型 | 必填 | 说明 | 6323| ------ | --------------------------- | ---- | ------------ | 6324| filter | [ColorFilter](#colorfilter) | 是 | 颜色滤波器。为null时表示清空颜色滤波器。 | 6325 6326**错误码:** 6327 6328以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 6329 6330| 错误码ID | 错误信息 | 6331| ------- | --------------------------------------------| 6332| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. | 6333 6334**示例:** 6335 6336```ts 6337import { drawing } from '@kit.ArkGraphics2D'; 6338const brush = new drawing.Brush(); 6339let colorFilter = drawing.ColorFilter.createLinearToSRGBGamma(); 6340brush.setColorFilter(colorFilter); 6341``` 6342 6343### setMaskFilter<sup>12+</sup> 6344 6345setMaskFilter(filter: MaskFilter): void 6346 6347用于给画刷添加额外的蒙版滤镜。 6348 6349**系统能力:** SystemCapability.Graphics.Drawing 6350 6351**参数:** 6352 6353| 参数名 | 类型 | 必填 | 说明 | 6354| ------ | ------------------------- | ---- | --------- | 6355| filter | [MaskFilter](#maskfilter12) | 是 | 蒙版滤镜。为null时表示清空蒙版滤镜。 | 6356 6357**错误码:** 6358 6359以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 6360 6361| 错误码ID | 错误信息 | 6362| ------- | --------------------------------------------| 6363| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. | 6364 6365**示例:** 6366 6367```ts 6368import { RenderNode } from '@kit.ArkUI'; 6369import { common2D, drawing } from '@kit.ArkGraphics2D'; 6370class DrawingRenderNode extends RenderNode { 6371 draw(context : DrawContext) { 6372 const canvas = context.canvas; 6373 const brush = new drawing.Brush(); 6374 let maskFilter = drawing.MaskFilter.createBlurMaskFilter(drawing.BlurType.OUTER, 10); 6375 brush.setMaskFilter(maskFilter); 6376 } 6377} 6378``` 6379 6380### setShaderEffect<sup>12+</sup> 6381 6382setShaderEffect(shaderEffect: ShaderEffect): void 6383 6384设置画刷着色器效果。 6385 6386**系统能力:** SystemCapability.Graphics.Drawing 6387 6388**参数:** 6389 6390| 参数名 | 类型 | 必填 | 说明 | 6391| ------- | ------------------------- | ---- | ------------ | 6392| shaderEffect | [ShaderEffect](#shadereffect12) | 是 | 着色器对象。为null时表示清空着色器效果。 | 6393 6394**错误码:** 6395 6396以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 6397 6398| 错误码ID | 错误信息 | 6399| ------- | --------------------------------------------| 6400| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. | 6401 6402**示例:** 6403 6404```ts 6405import { drawing } from '@kit.ArkGraphics2D'; 6406 6407const brush = new drawing.Brush(); 6408let shaderEffect = drawing.ShaderEffect.createLinearGradient({x: 100, y: 100}, {x: 300, y: 300}, [0xFF00FF00, 0xFFFF0000], drawing.TileMode.REPEAT); 6409brush.setShaderEffect(shaderEffect); 6410``` 6411 6412### setShadowLayer<sup>12+</sup> 6413 6414setShadowLayer(shadowLayer: ShadowLayer): void 6415 6416设置画刷阴影层效果。当前仅在绘制文字时生效。 6417 6418**系统能力:** SystemCapability.Graphics.Drawing 6419 6420**参数:** 6421 6422| 参数名 | 类型 | 必填 | 说明 | 6423| ------- | ------------------------- | ---- | --------- | 6424| shadowLayer | [ShadowLayer](#shadowlayer12) | 是 | 阴影层对象。为null时表示清空阴影层效果。 | 6425 6426**错误码:** 6427 6428以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 6429 6430| 错误码ID | 错误信息 | 6431| ------- | --------------------------------------------| 6432| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. | 6433 6434**示例:** 6435 6436```ts 6437import { RenderNode } from '@kit.ArkUI'; 6438import { common2D, drawing } from '@kit.ArkGraphics2D'; 6439class DrawingRenderNode extends RenderNode { 6440 draw(context : DrawContext) { 6441 const canvas = context.canvas; 6442 let font = new drawing.Font(); 6443 font.setSize(60); 6444 6445 let textBlob = drawing.TextBlob.makeFromString("hello", font, drawing.TextEncoding.TEXT_ENCODING_UTF8); 6446 let pen = new drawing.Pen(); 6447 pen.setStrokeWidth(2.0); 6448 6449 let pen_color : common2D.Color = {alpha: 0xFF, red: 0xFF, green: 0x00, blue: 0x00}; 6450 pen.setColor(pen_color); 6451 canvas.attachPen(pen); 6452 canvas.drawTextBlob(textBlob, 100, 100); 6453 canvas.detachPen(); 6454 6455 let color : common2D.Color = {alpha: 0xFF, red: 0x00, green: 0xFF, blue: 0x00}; 6456 let shadowLayer = drawing.ShadowLayer.create(3, -3, 3, color); 6457 pen.setShadowLayer(shadowLayer); 6458 canvas.attachPen(pen); 6459 canvas.drawTextBlob(textBlob, 100, 200); 6460 canvas.detachPen(); 6461 6462 let brush = new drawing.Brush(); 6463 let brush_color : common2D.Color = {alpha: 0xFF, red: 0xFF, green: 0x00, blue: 0x00}; 6464 brush.setColor(brush_color); 6465 canvas.attachBrush(brush); 6466 canvas.drawTextBlob(textBlob, 300, 100); 6467 canvas.detachBrush(); 6468 6469 brush.setShadowLayer(shadowLayer); 6470 canvas.attachBrush(brush); 6471 canvas.drawTextBlob(textBlob, 300, 200); 6472 canvas.detachBrush(); 6473 } 6474} 6475``` 6476 6477### setBlendMode 6478 6479setBlendMode(mode: BlendMode) : void 6480 6481用于设置画刷的混合模式。 6482 6483**系统能力:** SystemCapability.Graphics.Drawing 6484 6485**参数:** 6486 6487| 参数名 | 类型 | 必填 | 说明 | 6488| ------ | ----------------------- | ---- | ---------------- | 6489| mode | [BlendMode](#blendmode) | 是 | 颜色的混合模式。 | 6490 6491**错误码:** 6492 6493以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 6494 6495| 错误码ID | 错误信息 | 6496| ------- | --------------------------------------------| 6497| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types;3.Parameter verification failed. | 6498 6499**示例:** 6500 6501```ts 6502import { drawing } from '@kit.ArkGraphics2D'; 6503const brush = new drawing.Brush(); 6504brush.setBlendMode(drawing.BlendMode.SRC); 6505``` 6506 6507### setImageFilter<sup>12+</sup> 6508 6509setImageFilter(filter: ImageFilter | null): void 6510 6511为画刷设置图像滤波器。 6512 6513**系统能力:** SystemCapability.Graphics.Drawing 6514 6515**参数:** 6516 6517| 参数名 | 类型 | 必填 | 说明 | 6518| ------ | ------ | ---- | ----------------------- | 6519| filter | [ImageFilter](#imagefilter12) \| null | 是 | 图像滤波器,为null表示清空图像滤波器效果。 | 6520 6521**错误码:** 6522 6523以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 6524 6525| 错误码ID | 错误信息 | 6526| ------- | --------------------------------------------| 6527| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified;2. Incorrect parameter types. | 6528 6529**示例:** 6530 6531```ts 6532import {drawing} from '@kit.ArkGraphics2D'; 6533let brush = new drawing.Brush(); 6534let imgFilter = drawing.ImageFilter.createBlurImageFilter(5, 10, drawing.TileMode.DECAL); 6535brush.setImageFilter(imgFilter); 6536brush.setImageFilter(null); 6537``` 6538 6539### getColorFilter<sup>12+</sup> 6540 6541getColorFilter(): ColorFilter 6542 6543获取画刷的颜色滤波器。 6544 6545**系统能力:** SystemCapability.Graphics.Drawing 6546 6547**返回值:** 6548 6549| 类型 | 说明 | 6550| --------------------------- | ------------------ | 6551| [ColorFilter](#colorfilter) | 返回一个颜色滤波器。 | 6552 6553**示例:** 6554 6555```ts 6556import {drawing} from '@kit.ArkGraphics2D'; 6557let brush = new drawing.Brush(); 6558let setColorFilter = drawing.ColorFilter.createSRGBGammaToLinear(); 6559brush.setColorFilter(setColorFilter); 6560let filter = brush.getColorFilter(); 6561``` 6562 6563### reset<sup>12+</sup> 6564 6565reset(): void 6566 6567重置当前画刷为初始状态。 6568 6569**系统能力:** SystemCapability.Graphics.Drawing 6570 6571**示例:** 6572 6573```ts 6574import { drawing } from '@kit.ArkGraphics2D'; 6575 6576const brush = new drawing.Brush(); 6577brush.reset(); 6578``` 6579 6580## ScaleToFit<sup>12+</sup> 6581 6582源矩形到目标矩形的缩放方式枚举。 6583 6584**系统能力**:SystemCapability.Graphics.Drawing 6585 6586| 名称 | 值 | 说明 | 6587| ---------------------- | ---- | ------------------------------ | 6588| FILL_SCALE_TO_FIT | 0 | 将源矩形缩放以填充满整个目标矩形,可能会改变源矩形的长宽比。 | 6589| START_SCALE_TO_FIT | 1 | 保持源矩形的长宽比进行缩放,并对齐到目标矩形的左上方。 | 6590| CENTER_SCALE_TO_FIT | 2 | 保持源矩形的长宽比进行缩放,并居中对齐到目标矩形。 | 6591| END_SCALE_TO_FIT | 3 | 保持源矩形的长宽比进行缩放,并对齐到目标矩形的右下方。 | 6592 6593## Matrix<sup>12+</sup> 6594 6595矩阵对象。 6596 6597表示为3*3的矩阵,如下图所示: 6598 6599 6600 6601矩阵中的元素从左到右,从上到下分别表示水平缩放系数、水平倾斜系数、水平位移系数、垂直倾斜系数、垂直缩放系数、垂直位移系数、X轴透视系数、Y轴透视系数、透视缩放系数。 6602设(x<sub>1</sub>, y<sub>1</sub>)为源坐标点,(x<sub>2</sub>, y<sub>2</sub>)为源坐标点通过矩阵变换后的坐标点,则两个坐标点的关系如下: 6603 6604 6605 6606### constructor<sup>12+</sup> 6607 6608constructor() 6609 6610用于构造一个矩阵对象。 6611 6612**系统能力:** SystemCapability.Graphics.Drawing 6613 6614**示例:** 6615 6616```ts 6617import { drawing } from '@kit.ArkGraphics2D'; 6618 6619let matrix = new drawing.Matrix(); 6620``` 6621 6622### setRotation<sup>12+</sup> 6623 6624setRotation(degree: number, px: number, py: number): void 6625 6626设置矩阵为单位矩阵,并围绕位于(px, py)的旋转轴点进行旋转。 6627 6628**系统能力:** SystemCapability.Graphics.Drawing 6629 6630**参数:** 6631 6632| 参数名 | 类型 | 必填 | 说明 | 6633| ----------- | ---------------------------------------- | ---- | ------------------- | 6634| degree | number | 是 | 角度,单位为度。正数表示顺时针旋转,负数表示逆时针旋转,该参数为浮点数。| 6635| px | number | 是 | 旋转轴点的横坐标,该参数为浮点数。 | 6636| py | number | 是 | 旋转轴点的纵坐标,该参数为浮点数。 | 6637 6638**错误码:** 6639 6640以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 6641 6642| 错误码ID | 错误信息 | 6643| ------- | --------------------------------------------| 6644| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. | 6645 6646**示例:** 6647 6648```ts 6649import { drawing } from '@kit.ArkGraphics2D'; 6650 6651let matrix = new drawing.Matrix(); 6652matrix.setRotation(90, 100, 100); 6653``` 6654 6655### setScale<sup>12+</sup> 6656 6657setScale(sx: number, sy: number, px: number, py: number): void 6658 6659设置矩阵为单位矩阵围绕位于(px, py)的中心点,以sx和sy进行缩放后的结果。 6660 6661**系统能力:** SystemCapability.Graphics.Drawing 6662 6663**参数:** 6664 6665| 参数名 | 类型 | 必填 | 说明 | 6666| ----------- | ---------------------------------------- | ---- | ------------------- | 6667| sx | number | 是 | x轴方向缩放系数,为负数时可看作是先关于y = px作镜像翻转后再进行缩放,该参数为浮点数。 | 6668| sy | number | 是 | y轴方向缩放系数,为负数时可看作是先关于x = py作镜像翻转后再进行缩放,该参数为浮点数。 | 6669| px | number | 是 | 缩放中心点的横坐标,该参数为浮点数。 | 6670| py | number | 是 | 缩放中心点的纵坐标,该参数为浮点数。 | 6671 6672**错误码:** 6673 6674以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 6675 6676| 错误码ID | 错误信息 | 6677| ------- | --------------------------------------------| 6678| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. | 6679 6680**示例:** 6681 6682```ts 6683import { drawing } from '@kit.ArkGraphics2D'; 6684 6685let matrix = new drawing.Matrix(); 6686matrix.setScale(100, 100, 150, 150); 6687``` 6688 6689### setTranslation<sup>12+</sup> 6690 6691setTranslation(dx: number, dy: number): void 6692 6693设置矩阵为单位矩阵平移(dx, dy)后的结果。 6694 6695**系统能力:** SystemCapability.Graphics.Drawing 6696 6697**参数:** 6698 6699| 参数名 | 类型 | 必填 | 说明 | 6700| ----------- | ---------------------------------------- | ---- | ------------------- | 6701| dx | number | 是 | x轴方向平移距离,正数表示往x轴正方向平移,负数表示往x轴负方向平移,该参数为浮点数。 | 6702| dy | number | 是 | y轴方向平移距离,正数表示往y轴正方向平移,负数表示往y轴负方向平移,该参数为浮点数。 | 6703 6704**错误码:** 6705 6706以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 6707 6708| 错误码ID | 错误信息 | 6709| ------- | --------------------------------------------| 6710| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. | 6711 6712**示例:** 6713 6714```ts 6715import { drawing } from '@kit.ArkGraphics2D'; 6716 6717let matrix = new drawing.Matrix(); 6718matrix.setTranslation(100, 100); 6719``` 6720 6721### setMatrix<sup>12+</sup> 6722 6723setMatrix(values: Array\<number>): void 6724 6725用于设置矩阵对象的各项参数。 6726 6727**系统能力:** SystemCapability.Graphics.Drawing 6728 6729**参数:** 6730 6731| 参数名 | 类型 | 必填 | 说明 | 6732| ------ | ---------------------------------------------------- | ---- | ---------------- | 6733| values | Array\<number> | 是 | 长度为9的浮点数组,表示矩阵对象参数。数组中的值按下标从小,到大分别表示水平缩放系数、水平倾斜系数、水平位移系数、垂直倾斜系数、垂直缩放系数、垂直位移系数、X轴透视系数、Y轴透视系数、透视缩放系数。 | 6734 6735**错误码:** 6736 6737以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 6738 6739| 错误码ID | 错误信息 | 6740| ------- | --------------------------------------------| 6741| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types; 3. Parameter verification failed. | 6742 6743**示例:** 6744 6745```ts 6746import { drawing } from '@kit.ArkGraphics2D'; 6747 6748let matrix = new drawing.Matrix(); 6749let value : Array<number> = [2, 2, 2, 2, 2, 2, 2, 2, 2]; 6750matrix.setMatrix(value); 6751``` 6752 6753### preConcat<sup>12+</sup> 6754 6755preConcat(matrix: Matrix): void 6756 6757将当前矩阵设置为当前矩阵左乘matrix的结果。 6758 6759**系统能力:** SystemCapability.Graphics.Drawing 6760 6761**参数:** 6762 6763| 参数名 | 类型 | 必填 | 说明 | 6764| ------ | ---------------------------------------------------- | ---- | ---------------- | 6765| matrix | [Matrix](#matrix12) | 是 | 表示矩阵对象,位于乘法表达式右侧。 | 6766 6767**错误码:** 6768 6769以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 6770 6771| 错误码ID | 错误信息 | 6772| ------- | --------------------------------------------| 6773| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. | 6774 6775**示例:** 6776 6777```ts 6778import { drawing } from '@kit.ArkGraphics2D'; 6779 6780let matrix1 = new drawing.Matrix(); 6781matrix1.setMatrix([2, 1, 3, 1, 2, 1, 3, 1, 2]); 6782let matrix2 = new drawing.Matrix(); 6783matrix2.setMatrix([-2, 1, 3, 1, 0, -1, 3, -1, 2]); 6784matrix1.preConcat(matrix2); 6785``` 6786 6787### isEqual<sup>12+</sup> 6788 6789isEqual(matrix: Matrix): Boolean 6790 6791判断两个矩阵是否相等。 6792 6793**系统能力:** SystemCapability.Graphics.Drawing 6794 6795**参数:** 6796 6797| 参数名 | 类型 | 必填 | 说明 | 6798| ------ | ---------------------------------------------------- | ---- | ---------------- | 6799| matrix | [Matrix](#matrix12) | 是 | 另一个矩阵。 | 6800 6801**返回值:** 6802 6803| 类型 | 说明 | 6804| --------------------------- | -------------------- | 6805| Boolean | 返回两个矩阵的比较结果。true表示两个矩阵相等,false表示两个矩阵不相等。 | 6806 6807**错误码:** 6808 6809以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 6810 6811| 错误码ID | 错误信息 | 6812| ------- | --------------------------------------------| 6813| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. | 6814 6815**示例:** 6816 6817```ts 6818import { drawing } from '@kit.ArkGraphics2D'; 6819 6820let matrix1 = new drawing.Matrix(); 6821matrix1.setMatrix([2, 1, 3, 1, 2, 1, 3, 1, 2]); 6822let matrix2 = new drawing.Matrix(); 6823matrix2.setMatrix([-2, 1, 3, 1, 0, -1, 3, -1, 2]); 6824if (matrix1.isEqual(matrix2)) { 6825 console.info("matrix1 and matrix2 are equal."); 6826} else { 6827 console.info("matrix1 and matrix2 are not equal."); 6828} 6829``` 6830 6831### invert<sup>12+</sup> 6832 6833invert(matrix: Matrix): Boolean 6834 6835将矩阵matrix设置为当前矩阵的逆矩阵,并返回是否设置成功的结果。 6836 6837**系统能力:** SystemCapability.Graphics.Drawing 6838 6839**参数:** 6840 6841| 参数名 | 类型 | 必填 | 说明 | 6842| ------ | ---------------------------------------------------- | ---- | ---------------- | 6843| matrix | [Matrix](#matrix12) | 是 | 矩阵对象,用于存储获取到的逆矩阵。 | 6844 6845**返回值:** 6846 6847| 类型 | 说明 | 6848| --------------------------- | -------------------- | 6849| Boolean | 返回matrix是否被设置为逆矩阵的结果。true表示当前矩阵可逆,matrix被填充为逆矩阵,false表示当前矩阵不可逆,matrix不被改变。 | 6850 6851**错误码:** 6852 6853以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 6854 6855| 错误码ID | 错误信息 | 6856| ------- | --------------------------------------------| 6857| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. | 6858 6859**示例:** 6860 6861```ts 6862import { drawing } from '@kit.ArkGraphics2D'; 6863 6864let matrix1 = new drawing.Matrix(); 6865matrix1.setMatrix([2, 1, 3, 1, 2, 1, 3, 1, 2]); 6866let matrix2 = new drawing.Matrix(); 6867matrix2.setMatrix([-2, 1, 3, 1, 0, -1, 3, -1, 2]); 6868if (matrix1.invert(matrix2)) { 6869 console.info("matrix1 is invertible and matrix2 is set as an inverse matrix of the matrix1."); 6870} else { 6871 console.info("matrix1 is not invertible and matrix2 is not changed."); 6872} 6873``` 6874 6875### isIdentity<sup>12+</sup> 6876 6877isIdentity(): Boolean 6878 6879判断矩阵是否是单位矩阵。 6880 6881**系统能力:** SystemCapability.Graphics.Drawing 6882 6883**返回值:** 6884 6885| 类型 | 说明 | 6886| --------------------------- | -------------------- | 6887| Boolean | 返回矩阵是否是单位矩阵。true表示矩阵是单位矩阵,false表示矩阵不是单位矩阵。 | 6888 6889**示例:** 6890 6891```ts 6892import { drawing } from '@kit.ArkGraphics2D'; 6893 6894let matrix = new drawing.Matrix(); 6895if (matrix.isIdentity()) { 6896 console.info("matrix is identity."); 6897} else { 6898 console.info("matrix is not identity."); 6899} 6900``` 6901 6902### getValue<sup>12+</sup> 6903 6904getValue(index: number): number 6905 6906获取矩阵给定索引位的值。索引范围0-8。 6907 6908**系统能力**:SystemCapability.Graphics.Drawing 6909 6910**参数:** 6911 6912| 参数名 | 类型 | 必填 | 说明 | 6913| --------------- | ------- | ---- | ----------------------------------------------------------- | 6914| index | number | 是 | 索引位置,范围0-8,该参数为整数。 | 6915 6916**返回值:** 6917 6918| 类型 | 说明 | 6919| --------------------- | -------------- | 6920| number | 函数返回矩阵给定索引位对应的值,该返回值为整数。 | 6921 6922**错误码:** 6923 6924以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 6925 6926| 错误码ID | 错误信息 | 6927| ------- | --------------------------------------------| 6928| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified;2. Incorrect parameter types;3. Parameter verification failed.| 6929 6930**示例:** 6931 6932```ts 6933import {drawing} from "@kit.ArkGraphics2D" 6934let matrix = new drawing.Matrix(); 6935for (let i = 0; i < 9; i++) { 6936 console.info("matrix "+matrix.getValue(i).toString()); 6937} 6938``` 6939 6940### postRotate<sup>12+</sup> 6941 6942postRotate(degree: number, px: number, py: number): void 6943 6944将矩阵设置为矩阵右乘围绕轴心点旋转一定角度的单位矩阵后得到的矩阵。 6945 6946**系统能力**:SystemCapability.Graphics.Drawing 6947 6948**参数:** 6949 6950| 参数名 | 类型 | 必填 | 说明 | 6951| --------------- | ------- | ---- | ----------------------------------------------------------- | 6952| degree | number | 是 | 旋转角度,单位为度。正数表示顺时针旋转,负数表示逆时针旋转,该参数为浮点数。 | 6953| px | number | 是 | 旋转中心点的横坐标,该参数为浮点数。 | 6954| py | number | 是 | 旋转中心点的纵坐标,该参数为浮点数。 | 6955 6956**错误码:** 6957 6958以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 6959 6960| 错误码ID | 错误信息 | 6961| ------- | --------------------------------------------| 6962| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. | 6963 6964**示例:** 6965 6966```ts 6967import {drawing} from "@kit.ArkGraphics2D" 6968let matrix = new drawing.Matrix(); 6969let degree: number = 2; 6970let px: number = 3; 6971let py: number = 4; 6972matrix.postRotate(degree, px, py); 6973console.info("matrix= "+matrix.getAll().toString()); 6974``` 6975 6976### postScale<sup>12+</sup> 6977 6978postScale(sx: number, sy: number, px: number, py: number): void 6979 6980将矩阵设置为矩阵右乘围绕轴心点按一定缩放系数缩放后的单位矩阵后得到的矩阵。 6981 6982**系统能力**:SystemCapability.Graphics.Drawing 6983 6984**参数:** 6985 6986| 参数名 | 类型 | 必填 | 说明 | 6987| --------------- | ------- | ---- | ----------------------------------------------------------- | 6988| sx | number | 是 | x轴方向缩放系数,为负数时可看作是先关于y = px作镜像翻转后再进行缩放,该参数为浮点数。 | 6989| sy | number | 是 | y轴方向缩放系数,为负数时可看作是先关于x = py作镜像翻转后再进行缩放,该参数为浮点数。 | 6990| px | number | 是 | 缩放中心点的横坐标,该参数为浮点数。 | 6991| py | number | 是 | 缩放中心点的纵坐标,该参数为浮点数。 | 6992 6993**错误码:** 6994 6995以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 6996 6997| 错误码ID | 错误信息 | 6998| ------- | --------------------------------------------| 6999| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. | 7000 7001**示例:** 7002 7003```ts 7004import {drawing} from "@kit.ArkGraphics2D" 7005let matrix = new drawing.Matrix(); 7006let sx: number = 2; 7007let sy: number = 0.5; 7008let px: number = 1; 7009let py: number = 1; 7010matrix.postScale(sx, sy, px, py); 7011console.info("matrix= "+matrix.getAll().toString()); 7012``` 7013 7014### postTranslate<sup>12+</sup> 7015 7016postTranslate(dx: number, dy: number): void 7017 7018将矩阵设置为矩阵右乘平移一定距离后的单位矩阵后得到的矩阵。 7019 7020**系统能力**:SystemCapability.Graphics.Drawing 7021 7022**参数:** 7023 7024| 参数名 | 类型 | 必填 | 说明 | 7025| --------------- | ------- | ---- | ----------------------------------------------------------- | 7026| dx | number | 是 | x轴方向平移距离,正数表示往x轴正方向平移,负数表示往x轴负方向平移,该参数为浮点数。 | 7027| dy | number | 是 | y轴方向平移距离,正数表示往y轴正方向平移,负数表示往y轴负方向平移,该参数为浮点数。 | 7028 7029**错误码:** 7030 7031以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 7032 7033| 错误码ID | 错误信息 | 7034| ------- | --------------------------------------------| 7035| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. | 7036 7037**示例:** 7038 7039```ts 7040import {drawing} from "@kit.ArkGraphics2D" 7041let matrix = new drawing.Matrix(); 7042let dx: number = 3; 7043let dy: number = 4; 7044matrix.postTranslate(dx, dy); 7045console.info("matrix= "+matrix.getAll().toString()); 7046``` 7047 7048### preRotate<sup>12+</sup> 7049 7050preRotate(degree: number, px: number, py: number): void 7051 7052将矩阵设置为矩阵左乘围绕轴心点旋转一定角度的单位矩阵后得到的矩阵。 7053 7054**系统能力**:SystemCapability.Graphics.Drawing 7055 7056**参数:** 7057 7058| 参数名 | 类型 | 必填 | 说明 | 7059| --------------- | ------- | ---- | ----------------------------------------------------------- | 7060| degree | number | 是 | 旋转角度,单位为度。正数表示顺时针旋转,负数表示逆时针旋转,该参数为浮点数。 | 7061| px | number | 是 | 旋转中心点的横坐标,该参数为浮点数。 | 7062| py | number | 是 | 旋转中心点的纵坐标,该参数为浮点数。 | 7063 7064**错误码:** 7065 7066以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 7067 7068| 错误码ID | 错误信息 | 7069| ------- | --------------------------------------------| 7070| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. | 7071 7072**示例:** 7073 7074```ts 7075import {drawing} from "@kit.ArkGraphics2D" 7076let matrix = new drawing.Matrix(); 7077let degree: number = 2; 7078let px: number = 3; 7079let py: number = 4; 7080matrix.preRotate(degree, px, py); 7081console.info("matrix= "+matrix.getAll().toString()); 7082``` 7083 7084### preScale<sup>12+</sup> 7085 7086preScale(sx: number, sy: number, px: number, py: number): void 7087 7088将矩阵设置为矩阵左乘围绕轴心点按一定缩放系数缩放后的单位矩阵后得到的矩阵。 7089 7090**系统能力**:SystemCapability.Graphics.Drawing 7091 7092**参数:** 7093 7094| 参数名 | 类型 | 必填 | 说明 | 7095| --------------- | ------- | ---- | ----------------------------------------------------------- | 7096| sx | number | 是 | x轴方向缩放系数,为负数时可看作是先关于y = px作镜像翻转后再进行缩放,该参数为浮点数。 | 7097| sy | number | 是 | y轴方向缩放系数,为负数时可看作是先关于x = py作镜像翻转后再进行缩放,该参数为浮点数。 | 7098| px | number | 是 | 轴心点横坐标,该参数为浮点数。 | 7099| py | number | 是 | 轴心点纵坐标,该参数为浮点数。 | 7100 7101**错误码:** 7102 7103以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 7104 7105| 错误码ID | 错误信息 | 7106| ------- | --------------------------------------------| 7107| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. | 7108 7109**示例:** 7110 7111```ts 7112import {drawing} from "@kit.ArkGraphics2D" 7113let matrix = new drawing.Matrix(); 7114let sx: number = 2; 7115let sy: number = 0.5; 7116let px: number = 1; 7117let py: number = 1; 7118matrix.preScale(sx, sy, px, py); 7119console.info("matrix"+matrix.getAll().toString()); 7120``` 7121 7122### preTranslate<sup>12+</sup> 7123 7124preTranslate(dx: number, dy: number): void 7125 7126将矩阵设置为矩阵左乘平移一定距离后的单位矩阵后得到的矩阵。 7127 7128**系统能力**:SystemCapability.Graphics.Drawing 7129 7130**参数:** 7131 7132| 参数名 | 类型 | 必填 | 说明 | 7133| --------------- | ------- | ---- | ----------------------------------------------------------- | 7134| dx | number | 是 | x轴方向平移距离,正数表示往x轴正方向平移,负数表示往x轴负方向平移,该参数为浮点数。 | 7135| dy | number | 是 | y轴方向平移距离,正数表示往y轴正方向平移,负数表示往y轴负方向平移,该参数为浮点数。 | 7136 7137**错误码:** 7138 7139以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 7140 7141| 错误码ID | 错误信息 | 7142| ------- | --------------------------------------------| 7143| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. | 7144 7145**示例:** 7146 7147```ts 7148import {drawing} from "@kit.ArkGraphics2D" 7149let matrix = new drawing.Matrix(); 7150let dx: number = 3; 7151let dy: number = 4; 7152matrix.preTranslate(dx, dy); 7153console.info("matrix"+matrix.getAll().toString()); 7154``` 7155 7156### reset<sup>12+</sup> 7157 7158reset(): void 7159 7160重置当前矩阵为单位矩阵。 7161 7162**系统能力**:SystemCapability.Graphics.Drawing 7163 7164**示例:** 7165 7166```ts 7167import {drawing} from "@kit.ArkGraphics2D" 7168let matrix = new drawing.Matrix(); 7169matrix.postScale(2, 3, 4, 5); 7170matrix.reset(); 7171console.info("matrix= "+matrix.getAll().toString()); 7172``` 7173 7174### mapPoints<sup>12+</sup> 7175 7176mapPoints(src: Array\<common2D.Point>): Array\<common2D.Point> 7177 7178通过矩阵变换将源点数组映射到目标点数组。 7179 7180**系统能力**:SystemCapability.Graphics.Drawing 7181 7182**参数:** 7183 7184| 参数名 | 类型 | 必填 | 说明 | 7185| --------------- | ------- | ---- | ----------------------------------------------------------- | 7186| src | Array\<[common2D.Point](js-apis-graphics-common2D.md#point)> | 是 | 源点数组。 | 7187 7188**返回值:** 7189 7190| 类型 | 说明 | 7191| --------------------- | -------------- | 7192| Array\<[common2D.Point](js-apis-graphics-common2D.md#point)> | 源点数组经矩阵变换后的点数组。 | 7193 7194**错误码:** 7195 7196以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 7197 7198| 错误码ID | 错误信息 | 7199| ------- | --------------------------------------------| 7200| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. | 7201 7202**示例:** 7203 7204```ts 7205import {drawing,common2D} from "@kit.ArkGraphics2D" 7206let src: Array<common2D.Point> = []; 7207src.push({x: 15, y: 20}); 7208src.push({x: 20, y: 15}); 7209src.push({x: 30, y: 10}); 7210let matrix = new drawing.Matrix(); 7211let dst: Array<common2D.Point> = matrix.mapPoints(src); 7212console.info("matrix= src: "+JSON.stringify(src)); 7213console.info("matrix= dst: "+JSON.stringify(dst)); 7214``` 7215 7216### getAll<sup>12+</sup> 7217 7218getAll(): Array\<number> 7219 7220获取矩阵所有元素值。 7221 7222**系统能力**:SystemCapability.Graphics.Drawing 7223 7224**返回值:** 7225 7226| 类型 | 说明 | 7227| --------------------- | -------------- | 7228| Array\<number> | 存储矩阵元素值的浮点数组,长度为9。 | 7229 7230**示例:** 7231 7232```ts 7233import {drawing} from "@kit.ArkGraphics2D" 7234let matrix = new drawing.Matrix(); 7235console.info("matrix "+ matrix.getAll()); 7236``` 7237 7238### mapRect<sup>12+</sup> 7239 7240mapRect(dst: common2D.Rect, src: common2D.Rect): boolean 7241 7242将目标矩形设置为源矩形通过矩阵变换后的图形的外接矩形。如下图所示,蓝色矩形为源矩形,假设黄色矩形为源矩形通过矩阵变换形成的图形,此时黄色矩形的边不与坐标轴平行,无法使用矩形对象表示,因此,将目标矩形设置为黄色矩形的外接矩形,即黑色矩形。 7243 7244 7245 7246**系统能力**:SystemCapability.Graphics.Drawing 7247 7248**参数:** 7249 7250| 参数名 | 类型 | 必填 | 说明 | 7251| --------------- | ------- | ---- | ----------------------------------------------------------- | 7252| dst | [common2D.Rect](js-apis-graphics-common2D.md#rect) | 是 | 目标矩形对象,用于存储源矩形经矩阵变换后的的图形的外接矩形。 | 7253| src |[common2D.Rect](js-apis-graphics-common2D.md#rect) | 是 | 源矩形对象。 | 7254 7255**返回值:** 7256 7257| 类型 | 说明 | 7258| --------------------- | -------------- | 7259| boolean | 返回源矩形经过矩阵变换后的图形是否仍然是矩形的结果,true表示是矩形,false表示不是矩形。 | 7260 7261**错误码:** 7262 7263以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 7264 7265| 错误码ID | 错误信息 | 7266| ------- | --------------------------------------------| 7267| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. | 7268 7269**示例:** 7270 7271```ts 7272import {drawing,common2D} from "@kit.ArkGraphics2D" 7273let dst: common2D.Rect = { left: 100, top: 20, right: 130, bottom: 60 }; 7274let src: common2D.Rect = { left: 100, top: 80, right: 130, bottom: 120 }; 7275let matrix = new drawing.Matrix(); 7276if (matrix.mapRect(dst, src)) { 7277 console.info("matrix= dst "+JSON.stringify(dst)); 7278} 7279``` 7280 7281### setRectToRect<sup>12+</sup> 7282 7283setRectToRect(src: common2D.Rect, dst: common2D.Rect, scaleToFit: ScaleToFit): boolean 7284 7285将当前矩阵设置为能使源矩形映射到目标矩形的变换矩阵。 7286 7287**系统能力**:SystemCapability.Graphics.Drawing 7288 7289**参数:** 7290 7291| 参数名 | 类型 | 必填 | 说明 | 7292| --------------- | ------- | ---- | ----------------------------------------------------------- | 7293| src | [common2D.Rect](js-apis-graphics-common2D.md#rect) | 是 | 源矩形。 | 7294| dst | [common2D.Rect](js-apis-graphics-common2D.md#rect) | 是 | 目标矩形。 | 7295| scaleToFit | [ScaleToFit](#scaletofit12) | 是 | 源矩形到目标矩形的映射方式。 | 7296 7297**返回值:** 7298 7299| 类型 | 说明 | 7300| --------------------- | -------------- | 7301| boolean | 返回矩阵是否可以表示矩形之间的映射,true表示可以,false表示不可以。特别地,如果源矩形的宽高任意一个小于等于0,则返回false,并将矩阵设置为单位矩阵;如果目标矩形的宽高任意一个小于等于0,则返回true,并将矩阵设置为除透视缩放系数为1外其余值皆为0的矩阵。 | 7302 7303**错误码:** 7304 7305以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 7306 7307| 错误码ID | 错误信息 | 7308| ------- | --------------------------------------------| 7309| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types;3.Parameter verification failed. | 7310 7311**示例:** 7312 7313```ts 7314import {drawing,common2D} from "@kit.ArkGraphics2D" 7315let src: common2D.Rect = { left: 100, top: 100, right: 300, bottom: 300 }; 7316let dst: common2D.Rect = { left: 200, top: 200, right: 600, bottom: 600 }; 7317let scaleToFit: drawing.ScaleToFit = drawing.ScaleToFit.FILL_SCALE_TO_FIT 7318let matrix = new drawing.Matrix(); 7319if (matrix.setRectToRect(src, dst, scaleToFit)) { 7320 console.info("matrix"+matrix.getAll().toString()); 7321} 7322``` 7323 7324### setPolyToPoly<sup>12+</sup> 7325 7326setPolyToPoly(src: Array\<common2D.Point>, dst: Array\<common2D.Point>, count: number): boolean 7327 7328将当前矩阵设置为能使源点数组映射到目标点数组的变换矩阵。源点以及目标点的个数要大于等于0,小于等于4。 7329 7330**系统能力**:SystemCapability.Graphics.Drawing 7331 7332**参数:** 7333 7334| 参数名 | 类型 | 必填 | 说明 | 7335| --------------- | ------- | ---- | ----------------------------------------------------------- | 7336| src | Array\<[common2D.Point](js-apis-graphics-common2D.md#point)> | 是 | 源点数组,长度必须为count。 | 7337| dst | Array\<[common2D.Point](js-apis-graphics-common2D.md#point)> | 是 | 目标点数组,长度必须为count。 | 7338| count | number | 是 | 在src和dst点的数量,该参数为整数。 | 7339 7340**返回值:** 7341 7342| 类型 | 说明 | 7343| --------------------- | -------------- | 7344| boolean | 返回设置矩阵是否成功的结果,true表示设置成功,false表示设置失败。 | 7345 7346**错误码:** 7347 7348以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 7349 7350| 错误码ID | 错误信息 | 7351| ------- | --------------------------------------------| 7352| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. | 7353 7354**示例:** 7355 7356```ts 7357import {drawing,common2D} from "@kit.ArkGraphics2D" 7358let srcPoints: Array<common2D.Point> = [ {x: 10, y: 20}, {x: 200, y: 150} ]; 7359let dstPoints: Array<common2D.Point> = [{ x:0, y: 10 }, { x:300, y: 600 }]; 7360let matrix = new drawing.Matrix(); 7361if (matrix.setPolyToPoly(srcPoints, dstPoints, 2)) { 7362 console.info("matrix"+matrix.getAll().toString()); 7363} 7364``` 7365 7366## RoundRect<sup>12+</sup> 7367 7368圆角矩形对象。 7369 7370### constructor<sup>12+</sup> 7371 7372constructor(rect: common2D.Rect, xRadii: number, yRadii: number) 7373 7374构造一个圆角矩形对象,当且仅当xRadii和yRadii均大于0时,圆角生效,否则只会构造一个矩形。 7375 7376**系统能力:** SystemCapability.Graphics.Drawing 7377 7378**参数:** 7379 7380| 参数名 | 类型 | 必填 | 说明 | 7381| ----------- | ---------------------------------------- | ---- | ------------------- | 7382| rect | [common2D.Rect](js-apis-graphics-common2D.md#rect) | 是 | 需要创建的圆角矩形区域。 | 7383| xRadii | number | 是 | X轴上的圆角半径,该参数为浮点数,小于等于0时无效。 | 7384| yRadii | number | 是 | Y轴上的圆角半径,该参数为浮点数,小于等于0时无效。 | 7385 7386**错误码:** 7387 7388以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 7389 7390| 错误码ID | 错误信息 | 7391| ------- | --------------------------------------------| 7392| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. | 7393 7394**示例:** 7395 7396```ts 7397import { common2D, drawing } from '@kit.ArkGraphics2D'; 7398 7399let rect: common2D.Rect = {left : 100, top : 100, right : 500, bottom : 300}; 7400let roundRect = new drawing.RoundRect(rect, 50, 50); 7401``` 7402### setCorner<sup>12+</sup> 7403 7404setCorner(pos: CornerPos, x: number, y: number): void 7405 7406用于设置圆角矩形中指定圆角位置的圆角半径。 7407 7408**系统能力:** SystemCapability.Graphics.Drawing 7409 7410**参数:** 7411 7412| 参数名 | 类型 | 必填 | 说明 | 7413| -------- | -------------------------------------------- | ---- | ------------------------------- | 7414| pos | [CornerPos](#cornerpos12) | 是 | 圆角位置。 | 7415| x | number | 是 | x轴方向的圆角半径,该参数为浮点数,小于等于0时无效。 | 7416| y | number | 是 | y轴方向的圆角半径,该参数为浮点数,小于等于0时无效。 | 7417 7418**错误码:** 7419 7420以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 7421 7422| 错误码ID | 错误信息 | 7423| ------- | --------------------------------------------| 7424| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types;3.Parameter verification failed. | 7425 7426**示例:** 7427 7428```ts 7429import { drawing } from '@kit.ArkGraphics2D'; 7430let roundRect : drawing.RoundRect = new drawing.RoundRect({left: 0, top: 0, right: 300, bottom: 300}, 50, 50); 7431roundRect.setCorner(drawing.CornerPos.TOP_LEFT_POS, 150, 150); 7432``` 7433 7434### getCorner<sup>12+</sup> 7435 7436getCorner(pos: CornerPos): common2D.Point 7437 7438获取圆角矩形中指定圆角位置的圆角半径。 7439 7440**系统能力:** SystemCapability.Graphics.Drawing 7441 7442**参数:** 7443 7444| 参数名 | 类型 | 必填 | 说明 | 7445| -------- | -------------------------------------------- | ---- | ------------------------------- | 7446| pos | [CornerPos](#cornerpos12) | 是 | 圆角位置。 | 7447 7448**返回值:** 7449 7450| 类型 | 说明 | 7451| --------------------- | -------------- | 7452| [common2D.Point](js-apis-graphics-common2D.md#point) | 返回一个点,其横坐标表示圆角x轴方向上的半径,纵坐标表示y轴方向上的半径。 | 7453 7454**错误码:** 7455 7456以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 7457 7458| 错误码ID | 错误信息 | 7459| ------- | --------------------------------------------| 7460| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types;3.Parameter verification failed. | 7461 7462**示例:** 7463 7464```ts 7465import { drawing } from '@kit.ArkGraphics2D'; 7466let roundRect : drawing.RoundRect = new drawing.RoundRect({left: 0, top: 0, right: 300, bottom: 300}, 50, 50); 7467let cornerRadius = roundRect.getCorner(drawing.CornerPos.BOTTOM_LEFT_POS); 7468console.info("getCorner---"+cornerRadius.x) 7469console.info("getCorner---"+cornerRadius.y) 7470``` 7471 7472### offset<sup>12+</sup> 7473 7474offset(dx: number, dy: number): void 7475 7476将圆角矩形分别沿x轴方向和y轴方向平移dx,dy。 7477 7478**系统能力:** SystemCapability.Graphics.Drawing 7479 7480**参数:** 7481 7482| 参数名 | 类型 | 必填 | 说明 | 7483| -------- | -------------------------------------------- | ---- | ------------------------------- | 7484| dx | number | 是 | 表示x轴方向上的偏移量,正数表示往x轴正方向平移,负数表示往x轴负方向平移,该参数为浮点数。 | 7485| dy | number | 是 | 表示y轴方向上的偏移量,正数表示往y轴正方向平移,负数表示往y轴负方向平移,该参数为浮点数。 | 7486 7487**错误码:** 7488 7489以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 7490 7491| 错误码ID | 错误信息 | 7492| ------- | --------------------------------------------| 7493| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. | 7494 7495**示例:** 7496 7497```ts 7498import { drawing } from '@kit.ArkGraphics2D'; 7499let roundRect : drawing.RoundRect = new drawing.RoundRect({left: 0, top: 0, right: 300, bottom: 300}, 50, 50); 7500roundRect.offset(100, 100); 7501``` 7502 7503## Region<sup>12+</sup> 7504 7505区域对象,用于描述所绘制图形的区域信息。 7506 7507### isPointContained<sup>12+</sup> 7508 7509isPointContained(x: number, y: number) : boolean 7510 7511用于判断测试点是否在区域内。 7512 7513**系统能力:** SystemCapability.Graphics.Drawing 7514 7515**参数:** 7516 7517| 参数名 | 类型 | 必填 | 说明 | 7518| ------ | ------ | ---- | ----------------------- | 7519| x | number | 是 | 测试点的x轴坐标。该参数必须为整数。当输入的数字带小数时,小数部分会被舍去。 | 7520| y | number | 是 | 测试点的y轴坐标。该参数必须为整数。当输入的数字带小数时,小数部分会被舍去。 | 7521 7522**返回值:** 7523 7524| 类型 | 说明 | 7525| ------- | -------------- | 7526| boolean | 返回测试点是否在区域内的结果。true表示测试点在区域内,false表示测试点不在区域内。 | 7527 7528**错误码:** 7529 7530以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 7531 7532| 错误码ID | 错误信息 | 7533| ------- | --------------------------------------------| 7534| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. | 7535 7536**示例:** 7537 7538```ts 7539import { RenderNode } from '@kit.ArkUI'; 7540class DrawingRenderNode extends RenderNode { 7541 draw(context : DrawContext) { 7542 const canvas = context.canvas; 7543 const pen = new drawing.Pen(); 7544 pen.setColor({ alpha: 255, red: 255, green: 0, blue: 0 }); 7545 pen.setStrokeWidth(10); 7546 canvas.attachPen(pen); 7547 let region = new drawing.Region(); 7548 region.setRect(100, 100, 400, 400); 7549 let flag: boolean = false; 7550 flag = region.isPointContained(200,200); 7551 console.info("region isPointContained : " + flag); 7552 canvas.drawPoint(200,200); 7553 canvas.drawRegion(region); 7554 canvas.detachPen(); 7555 } 7556} 7557``` 7558 7559### isRegionContained<sup>12+</sup> 7560 7561isRegionContained(other: Region) : boolean 7562 7563用于判断其他区域是否在当前区域内。 7564 7565**系统能力:** SystemCapability.Graphics.Drawing 7566 7567**参数:** 7568 7569| 参数名 | 类型 | 必填 | 说明 | 7570| ------ | ------ | ---- | ----------------------- | 7571| other | [Region](#region12) | 是 | 区域对象。 | 7572 7573**返回值:** 7574 7575| 类型 | 说明 | 7576| ------- | -------------- | 7577| boolean | 返回其他区域是否在当前区域内的结果。true表示其他区域在当前区域内,false表示其他区域不在当前区域内。 | 7578 7579**错误码:** 7580 7581以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 7582 7583| 错误码ID | 错误信息 | 7584| ------- | --------------------------------------------| 7585| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. | 7586 7587**示例:** 7588 7589```ts 7590import { RenderNode } from '@kit.ArkUI'; 7591class DrawingRenderNode extends RenderNode { 7592 draw(context : DrawContext) { 7593 const canvas = context.canvas; 7594 const pen = new drawing.Pen(); 7595 pen.setColor({ alpha: 255, red: 255, green: 0, blue: 0 }); 7596 pen.setStrokeWidth(10); 7597 canvas.attachPen(pen); 7598 let region = new drawing.Region(); 7599 let other = new drawing.Region(); 7600 region.setRect(100, 100, 400, 400); 7601 other.setRect(150, 150, 250 ,250); 7602 let flag: boolean = false; 7603 flag = region.isRegionContained(other); 7604 console.info("region isRegionContained : " + flag); 7605 canvas.drawRegion(region); 7606 canvas.drawRegion(other); 7607 canvas.detachPen(); 7608 } 7609} 7610``` 7611 7612### op<sup>12+</sup> 7613 7614op(region: Region, regionOp: RegionOp) : boolean 7615 7616用于将当前区域与指定区域进行指定运算操作,并将当前区域替换为运算结果。 7617 7618**系统能力:** SystemCapability.Graphics.Drawing 7619 7620**参数:** 7621 7622| 参数名 | 类型 | 必填 | 说明 | 7623| ------ | ------ | ---- | ----------------------- | 7624| region | [Region](#region12) | 是 | 区域对象。 | 7625| regionOp | [RegionOp](#regionop12) | 是 | 区域合并操作类型。 | 7626 7627**返回值:** 7628 7629| 类型 | 说明 | 7630| ------- | -------------- | 7631| boolean | 返回区域运算结果是否成功替换当前区域。true表示区域运算结果替换当前区域成功,false表示区域运算结果替换当前区域失败。 | 7632 7633**错误码:** 7634 7635以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 7636 7637| 错误码ID | 错误信息 | 7638| ------- | --------------------------------------------| 7639| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. | 7640 7641**示例:** 7642 7643```ts 7644import { RenderNode } from '@kit.ArkUI'; 7645class DrawingRenderNode extends RenderNode { 7646 draw(context : DrawContext) { 7647 const canvas = context.canvas; 7648 const pen = new drawing.Pen(); 7649 pen.setColor({ alpha: 255, red: 255, green: 0, blue: 0 }); 7650 pen.setStrokeWidth(10); 7651 canvas.attachPen(pen); 7652 let region = new drawing.Region(); 7653 region.setRect(200, 200, 400, 400); 7654 let othregion = new drawing.Region(); 7655 othregion.setRect(110, 110, 240, 240); 7656 let flag: boolean = false; 7657 flag = region.op(othregion,drawing.RegionOp.REPLACE); 7658 console.info("region op : " + flag); 7659 canvas.drawRegion(region); 7660 canvas.detachPen(); 7661 } 7662} 7663``` 7664 7665### quickReject<sup>12+</sup> 7666 7667quickReject(left: number, top: number, right: number, bottom: number) : boolean 7668 7669用于快速判断矩形和区域是否不相交,实际上比较的是矩形和区域的外接矩形是否不相交,因此会有误差。 7670 7671**系统能力:** SystemCapability.Graphics.Drawing 7672 7673**参数:** 7674 7675| 参数名 | 类型 | 必填 | 说明 | 7676| ------ | ------ | ---- | ----------------------- | 7677| left | number | 是 | 矩形区域的左侧位置。该参数必须为整数。当输入的数字带小数时,小数部分会被舍去。 | 7678| top | number | 是 | 矩形区域的顶部位置。该参数必须为整数。当输入的数字带小数时,小数部分会被舍去。 | 7679| right | number | 是 | 矩形区域的右侧位置。该参数必须为整数。当输入的数字带小数时,小数部分会被舍去。 | 7680| bottom | number | 是 | 矩形区域的底部位置。该参数必须为整数。当输入的数字带小数时,小数部分会被舍去。 | 7681 7682**返回值:** 7683 7684| 类型 | 说明 | 7685| ------- | -------------- | 7686| boolean | 返回矩形是否与区域不相交的结果。true表示矩形与区域不相交,false表示矩形与区域相交。 | 7687 7688**错误码:** 7689 7690以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 7691 7692| 错误码ID | 错误信息 | 7693| ------- | --------------------------------------------| 7694| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. | 7695 7696**示例:** 7697 7698```ts 7699import { RenderNode } from '@kit.ArkUI'; 7700class DrawingRenderNode extends RenderNode { 7701 draw(context : DrawContext) { 7702 const canvas = context.canvas; 7703 const pen = new drawing.Pen(); 7704 pen.setColor({ alpha: 255, red: 255, green: 0, blue: 0 }); 7705 pen.setStrokeWidth(10); 7706 canvas.attachPen(pen); 7707 let region = new drawing.Region(); 7708 region.setRect(100, 100, 400, 400); 7709 let flag: boolean = false; 7710 flag = region.quickReject(50, 50, 70, 70); 7711 console.info("region quickReject : " + flag); 7712 canvas.drawRegion(region); 7713 canvas.detachPen(); 7714 } 7715} 7716``` 7717 7718### setPath<sup>12+</sup> 7719 7720setPath(path: Path, clip: Region) : boolean 7721 7722设置一个与裁剪区域内路径的轮廓相匹配的区域。 7723 7724**系统能力:** SystemCapability.Graphics.Drawing 7725 7726**参数:** 7727 7728| 参数名 | 类型 | 必填 | 说明 | 7729| ------ | ------ | ---- | ----------------------- | 7730| path | [Path](#path) | 是 | 路径对象。 | 7731| clip | [Region](#region12) | 是 | 区域对象。 | 7732 7733**返回值:** 7734 7735| 类型 | 说明 | 7736| ------- | -------------- | 7737| boolean | 返回是否成功设置一个与裁剪区域内路径的轮廓相匹配的区域。true表示设置成功,false表示设置失败。 | 7738 7739**错误码:** 7740 7741以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 7742 7743| 错误码ID | 错误信息 | 7744| ------- | --------------------------------------------| 7745| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. | 7746 7747**示例:** 7748 7749```ts 7750import { RenderNode } from '@kit.ArkUI'; 7751class DrawingRenderNode extends RenderNode { 7752 draw(context : DrawContext) { 7753 const canvas = context.canvas; 7754 const pen = new drawing.Pen(); 7755 pen.setColor({ alpha: 255, red: 255, green: 0, blue: 0 }); 7756 pen.setStrokeWidth(10); 7757 canvas.attachPen(pen); 7758 let region = new drawing.Region(); 7759 let path = new drawing.Path(); 7760 region.setRect(100, 100, 400, 400); 7761 path.arcTo(50, 50, 300, 300, 0, 359); 7762 let flag: boolean = false; 7763 flag = region.setPath(path,region); 7764 console.info("region setPath : " + flag); 7765 canvas.drawRegion(region); 7766 canvas.detachPen(); 7767 } 7768} 7769``` 7770 7771### setRect<sup>12+</sup> 7772 7773setRect(left: number, top: number, right: number, bottom: number) : boolean 7774 7775设置一个矩形区域。 7776 7777**系统能力:** SystemCapability.Graphics.Drawing 7778 7779**参数:** 7780 7781| 参数名 | 类型 | 必填 | 说明 | 7782| ------ | ------ | ---- | ----------------------- | 7783| left | number | 是 | 矩形区域的左侧位置。该参数必须为整数。当输入的数字带小数时,小数部分会被舍去。 | 7784| top | number | 是 | 矩形区域的顶部位置。该参数必须为整数。当输入的数字带小数时,小数部分会被舍去。 | 7785| right | number | 是 | 矩形区域的右侧位置。该参数必须为整数。当输入的数字带小数时,小数部分会被舍去。 | 7786| bottom | number | 是 | 矩形区域的底部位置。该参数必须为整数。当输入的数字带小数时,小数部分会被舍去。 | 7787 7788**返回值:** 7789 7790| 类型 | 说明 | 7791| ------- | -------------- | 7792| boolean | 返回设置矩形区域是否成功的结果。true表示设置矩形区域成功,false表示设置矩形区域失败。 | 7793 7794**错误码:** 7795 7796以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 7797 7798| 错误码ID | 错误信息 | 7799| ------- | --------------------------------------------| 7800| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. | 7801 7802**示例:** 7803 7804```ts 7805import { RenderNode } from '@kit.ArkUI'; 7806class DrawingRenderNode extends RenderNode { 7807 draw(context : DrawContext) { 7808 const canvas = context.canvas; 7809 const pen = new drawing.Pen(); 7810 pen.setColor({ alpha: 255, red: 255, green: 0, blue: 0 }); 7811 pen.setStrokeWidth(10); 7812 canvas.attachPen(pen); 7813 let region = new drawing.Region(); 7814 let flag: boolean = false; 7815 flag = region.setRect(50, 50, 300, 300); 7816 console.info("region setRect : " + flag); 7817 canvas.drawRegion(region); 7818 canvas.detachPen(); 7819 } 7820} 7821``` 7822 7823## TileMode<sup>12+</sup> 7824 7825着色器效果平铺模式的枚举。 7826 7827**系统能力**:SystemCapability.Graphics.Drawing 7828 7829| 名称 | 值 | 说明 | 7830| ---------------------- | ---- | ------------------------------ | 7831| CLAMP | 0 | 如果着色器效果超出其原始边界,剩余区域使用着色器的边缘颜色填充。 | 7832| REPEAT | 1 | 在水平和垂直方向上重复着色器效果。 | 7833| MIRROR | 2 | 在水平和垂直方向上重复着色器效果,交替镜像图像,以便相邻图像始终接合。 | 7834| DECAL | 3 | 仅在其原始边界内渲染着色器效果。| 7835 7836## ShaderEffect<sup>12+</sup> 7837 7838着色器。画刷和画笔设置着色器后,会使用着色器效果而不是颜色属性去绘制,但此时画笔和画刷的透明度属性仍然生效。 7839 7840### createColorShader<sup>12+</sup> 7841 7842static createColorShader(color: number): ShaderEffect 7843 7844创建具有单一颜色的着色器。 7845 7846**系统能力:** SystemCapability.Graphics.Drawing 7847 7848**参数:** 7849 7850| 参数名 | 类型 | 必填 | 说明 | 7851| ------ | -------------------------------------------------- | ---- | -------------- | 7852| color | number | 是 | 表示着色器的ARGB格式颜色,该参数为32位无符号整数。 | 7853 7854**返回值:** 7855 7856| 类型 | 说明 | 7857| ------- | ------------------------- | 7858| [ShaderEffect](#shadereffect12) | 返回具有单一颜色的着色器对象。 | 7859 7860**错误码:** 7861 7862以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 7863 7864| 错误码ID | 错误信息 | 7865| ------- | --------------------------------------------| 7866| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. | 7867 7868**示例:** 7869 7870```ts 7871import { drawing } from '@kit.ArkGraphics2D'; 7872 7873let shaderEffect = drawing.ShaderEffect.createColorShader(0xFFFF0000); 7874``` 7875 7876### createLinearGradient<sup>12+</sup> 7877 7878static createLinearGradient(startPt: common2D.Point, endPt: common2D.Point, colors: Array 7879\<number>, mode: TileMode, pos?: Array\<number> | null, matrix?: Matrix | null): ShaderEffect 7880 7881创建着色器,在两个指定点之间生成线性渐变。 7882 7883**系统能力:** SystemCapability.Graphics.Drawing 7884 7885**参数:** 7886 7887| 参数名 | 类型 | 必填 | 说明 | 7888| ------ | -------------------------------------------------- | ---- | -------------- | 7889| startPt | [common2D.Point](js-apis-graphics-common2D.md#point) | 是 | 表示渐变的起点。 | 7890| endPt | [common2D.Point](js-apis-graphics-common2D.md#point) | 是 | 表示渐变的终点。 | 7891| colors | Array\<number> | 是 | 表示在两个点之间分布的颜色数组,数组中的值为32位(ARGB)无符号整数。 | 7892| mode | [TileMode](#tilemode12) | 是 | 着色器效果平铺模式。 | 7893| pos | Array\<number> \|null| 否 | 表示每种对应颜色在颜色数组中的相对位置。数组长度需和colors保持一致,数组的首个元素应当是0.0,末尾元素应当是1.0,中间的元素应当在0与1之间并且逐下标递增,表示colors中每个对应颜色的相对位置。默认为null,表示颜色均匀分布在起点和终点之间。 | 7894| matrix | [Matrix](#matrix12) \| null | 否 | 矩阵对象,用于对着色器做矩阵变换。默认为null,表示单位矩阵。 | 7895 7896 7897 7898如上图是设置颜色数组为红绿蓝,位置数组为0.0,0.75,1.0后的显示效果。三角下标即为对应的颜色所在起始点和终点之间的相对位置,颜色与颜色之间使用渐变填充。 7899 7900**返回值:** 7901 7902| 类型 | 说明 | 7903| ------- | ------------------------- | 7904| [ShaderEffect](#shadereffect12) | 返回创建的着色器对象。 | 7905 7906**错误码:** 7907 7908以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 7909 7910| 错误码ID | 错误信息 | 7911| ------- | --------------------------------------------| 7912| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types; 3. Parameter verification failed. | 7913 7914**示例:** 7915 7916```ts 7917import { common2D,drawing } from '@kit.ArkGraphics2D'; 7918 7919let startPt: common2D.Point = { x: 100, y: 100 }; 7920let endPt: common2D.Point = { x: 300, y: 300 }; 7921let shaderEffect = drawing.ShaderEffect.createLinearGradient(startPt, endPt, [0xFF00FF00, 0xFFFF0000], drawing.TileMode.REPEAT); 7922``` 7923 7924### createRadialGradient<sup>12+</sup> 7925 7926static createRadialGradient(centerPt: common2D.Point, radius: number, colors: Array\<number>, mode: TileMode, pos?: Array\<number> | null, matrix?: Matrix | null): ShaderEffect; 7927 7928创建着色器,使用给定圆心和半径生成径向渐变。从圆心到圆边界,颜色由内到外生成圆形渐变(从圆心向外一圈圈扩散)称为径向渐变。 7929 7930**系统能力:** SystemCapability.Graphics.Drawing 7931 7932**参数:** 7933 7934| 参数名 | 类型 | 必填 | 说明 | 7935| ------ | -------------------------------------------------- | ---- | -------------- | 7936| centerPt | [common2D.Point](js-apis-graphics-common2D.md#point) | 是 | 表示渐变的圆心。 | 7937| radius | number | 是 | 表示渐变的半径,小于等于0时无效,该参数为浮点数。 | 7938| colors | Array\<number> | 是 | 表示在圆心和圆边界之间分布的颜色数组,数组中的值为32位(ARGB)无符号整数。 | 7939| mode | [TileMode](#tilemode12) | 是 | 着色器效果平铺模式。 | 7940| pos | Array\<number> \| null | 否 | 表示每种对应颜色在颜色数组中的相对位置。数组长度需和colors保持一致,数组的首个元素应当是0.0,末尾元素应当是1.0,中间的元素应当在0与1之间并且逐下标递增,表示colors中每个对应颜色的相对位置。默认为null,表示颜色均匀分布在圆心和圆边界之间。 | 7941| matrix | [Matrix](#matrix12) \| null | 否 | 矩阵对象,用于对着色器做矩阵变换。默认为null,表示单位矩阵。 | 7942 7943 7944 7945如上图是设置颜色数组为红绿蓝,位置数组为0.0,0.75,1.0后的显示效果。三角下标即为对应的颜色所在圆心和圆边界之间的相对位置,颜色与颜色之间使用渐变填充。 7946 7947**返回值:** 7948 7949| 类型 | 说明 | 7950| ------- | ------------------------- | 7951| [ShaderEffect](#shadereffect12) | 返回创建的着色器对象。 | 7952 7953**错误码:** 7954 7955以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 7956 7957| 错误码ID | 错误信息 | 7958| ------- | --------------------------------------------| 7959| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types; 3. Parameter verification failed. | 7960 7961**示例:** 7962 7963```ts 7964import { common2D,drawing } from '@kit.ArkGraphics2D'; 7965 7966let centerPt: common2D.Point = { x: 100, y: 100 }; 7967let shaderEffect = drawing.ShaderEffect.createRadialGradient(centerPt, 100, [0xFF00FF00, 0xFFFF0000], drawing.TileMode.REPEAT); 7968``` 7969 7970### createSweepGradient<sup>12+</sup> 7971 7972static createSweepGradient(centerPt: common2D.Point, colors: Array\<number>, 7973 mode: TileMode, startAngle: number, endAngle: number, pos?: Array\<number> | null, 7974 matrix?: Matrix | null): ShaderEffect; 7975 7976创建着色器,该着色器在给定中心的情况下生成扫描渐变。以给定中心为圆心,颜色在顺时针或逆时针方向上生成渐变称为扫描渐变。 7977 7978**系统能力:** SystemCapability.Graphics.Drawing 7979 7980**参数:** 7981 7982| 参数名 | 类型 | 必填 | 说明 | 7983| ------ | -------------------------------------------------- | ---- | -------------- | 7984| centerPt | [common2D.Point](js-apis-graphics-common2D.md#point) | 是 | 表示渐变的圆心。 | 7985| colors | Array\<number> | 是 | 表示在起始角度和结束角度之间分布的颜色数组,数组中的值为32位(ARGB)无符号整数。 | 7986| mode | [TileMode](#tilemode12) | 是 | 着色器效果平铺模式。 | 7987| startAngle | number | 是 | 表示扇形渐变的起始角度,单位为度。0度时为x轴正方向,正数往顺时针方向偏移,负数往逆时针方向偏移。该参数为浮点数。 | 7988| endAngle | number | 是 | 表示扇形渐变的结束角度,单位为度。0度时为x轴正方向,正数往顺时针方向偏移,负数往逆时针方向偏移。小于起始角度时无效。该参数为浮点数。 | 7989| pos | Array\<number> \| null | 否 | 表示每种对应颜色在颜色数组中的相对位置。数组长度需和colors保持一致,数组的首个元素应当是0.0,末尾元素应当是1.0,中间的元素应当在0与1之间并且逐下标递增,表示colors中每个对应颜色的相对位置。默认为null,表示颜色均匀分布在起始角度和结束角度之间。 | 7990| matrix | [Matrix](#matrix12) \| null | 否 |矩阵对象,用于对着色器做矩阵变换。默认为null,表示单位矩阵。 | 7991 7992 7993 7994如上图是设置颜色数组为红绿蓝,位置数组为0.0,0.75,1.0,起始角度设置为0度,结束角度设置为180度后的显示效果。0.0对应0度的位置,0.75对应135度的位置,1.0对应180度的位置,颜色与颜色之间使用渐变填充。 7995 7996**返回值:** 7997 7998| 类型 | 说明 | 7999| ------- | ------------------------- | 8000| [ShaderEffect](#shadereffect12) | 返回创建的着色器对象。 | 8001 8002**错误码:** 8003 8004以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 8005 8006| 错误码ID | 错误信息 | 8007| ------- | --------------------------------------------| 8008| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types; 3. Parameter verification failed. | 8009 8010**示例:** 8011 8012```ts 8013import { common2D,drawing } from '@kit.ArkGraphics2D'; 8014 8015let centerPt: common2D.Point = { x: 100, y: 100 }; 8016let shaderEffect = drawing.ShaderEffect.createSweepGradient(centerPt, [0xFF00FF00, 0xFFFF0000], drawing.TileMode.REPEAT, 100, 200); 8017``` 8018 8019### createConicalGradient<sup>12+</sup> 8020 8021static createConicalGradient(startPt: common2D.Point, startRadius: number, endPt: common2D.Point, endRadius: number, colors: Array\<number>, mode: TileMode, 8022pos?: Array\<number> | null, matrix?: Matrix | null): ShaderEffect; 8023 8024创建着色器,在给定两个圆之间生成径向渐变。 8025 8026**系统能力:** SystemCapability.Graphics.Drawing 8027 8028**参数:** 8029 8030| 参数名 | 类型 | 必填 | 说明 | 8031| ------ | -------------------------------------------------- | ---- | -------------- | 8032| startPt | [common2D.Point](js-apis-graphics-common2D.md#point) | 是 |表示渐变的起始圆的圆心。 | 8033| startRadius | number | 是 | 表示渐变的起始圆的半径,小于0时无效。该参数为浮点数。 | 8034| endPt | [common2D.Point](js-apis-graphics-common2D.md#point) | 是 | 表示渐变的结束圆的圆心。 | 8035| endRadius | number | 是 | 表示渐变的结束圆的半径,小于0时无效。该参数为浮点数。 | 8036| colors | Array\<number> | 是 | 表示在起始圆和结束圆之间分布的颜色数组,数组中的值为32位(ARGB)无符号整数。 | 8037| mode | [TileMode](#tilemode12) | 是 | 着色器效果平铺模式。 | 8038| pos | Array\<number> \| null | 否 | 表示每种对应颜色在颜色数组中的相对位置。数组长度需和colors保持一致,数组的首个元素应当是0.0,末尾元素应当是1.0,中间的元素应当在0与1之间并且逐下标递增,表示colors中每个对应颜色的相对位置。默认为null,表示颜色均匀分布在起始圆和结束圆之间。| 8039| matrix | [Matrix](#matrix12) \| null | 否 | 矩阵对象,用于对着色器做矩阵变换。默认为null,表示单位矩阵。 | 8040 8041 8042 8043如上图是设置颜色数组为红绿蓝,位置数组为0.0,0.5,1.0的绘制结果。左侧为起始圆不在结束圆内的绘制结果,右侧为起始圆在结束圆内的绘制结果。 8044 8045**返回值:** 8046 8047| 类型 | 说明 | 8048| ------- | ------------------------- | 8049| [ShaderEffect](#shadereffect12) | 返回创建的着色器对象。 | 8050 8051**错误码:** 8052 8053以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 8054 8055| 错误码ID | 错误信息 | 8056| ------- | --------------------------------------------| 8057| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types; 3. Parameter verification failed. | 8058 8059**示例:** 8060 8061```ts 8062import { common2D,drawing } from '@kit.ArkGraphics2D'; 8063 8064let startPt: common2D.Point = { x: 100, y: 100 }; 8065let endPt: common2D.Point = {x: 200, y: 200}; 8066let shaderEffect = drawing.ShaderEffect.createConicalGradient(startPt, 100, endPt, 50, [0xFF00FF00, 0xFFFF0000], drawing.TileMode.REPEAT); 8067``` 8068 8069## Tool<sup>15+</sup> 8070 8071本模块定义的工具类,仅提供静态的方法,主要完成其他模块和[common2D](js-apis-graphics-common2D.md)中定义的数据结构的转换功能等操作。 8072 8073### makeColorFromResourceColor<sup>15+</sup> 8074 8075static makeColorFromResourceColor(resourceColor: ResourceColor): common2D.Color 8076 8077将ResourceColor类型的值转换为common2D.Color对象。 8078 8079**系统能力:** SystemCapability.Graphics.Drawing 8080 8081**参数:** 8082 8083| 参数名 | 类型 | 必填 | 说明 | 8084| ------ | -------------------------------------------------- | ---- | -------------- | 8085| resourceColor | [ResourceColor](../apis-arkui/arkui-ts/ts-types.md#resourcecolor) | 是 | ResourceColor格式的颜色值(支持所有的4种输入,示例中提供13个示例输入)。其中第4种类型[Resource](../apis-arkui/arkui-ts/ts-types.md#resource)只接受``$r('belonging.type.name')``构造方法,需要确保该资源在main/resources/base/element目录下已定义(app支持color、string和integer,sys只支持color)。 | 8086 8087**返回值:** 8088 8089| 类型 | 说明 | 8090| ------- | ------------------------- | 8091| [common2D.Color](js-apis-graphics-common2D.md#color) | 转换后的common2D.Color颜色对象,若转换失败则返回空指针。 | 8092 8093**错误码:** 8094 8095以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 8096 8097| 错误码ID | 错误信息 | 8098| ------- | --------------------------------------------| 8099| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. | 8100 8101**示例:** 8102 8103```ts 8104import { drawing, common2D } from '@kit.ArkGraphics2D'; 8105 8106// Color 8107let color1: common2D.Color = drawing.Tool.makeColorFromResourceColor(Color.Blue); 8108 8109// Number 8110let color2: common2D.Color = drawing.Tool.makeColorFromResourceColor(0xffc0cb); 8111let color3: common2D.Color = drawing.Tool.makeColorFromResourceColor(0x11ffa500); 8112 8113// String 8114let color4: common2D.Color = drawing.Tool.makeColorFromResourceColor('#ff0000'); 8115let color5: common2D.Color = drawing.Tool.makeColorFromResourceColor('#110000ff'); 8116let color6: common2D.Color = drawing.Tool.makeColorFromResourceColor('#00f'); 8117let color7: common2D.Color = drawing.Tool.makeColorFromResourceColor('#100f'); 8118let color8: common2D.Color = drawing.Tool.makeColorFromResourceColor('rgb(255, 100, 255)'); 8119let color9: common2D.Color = drawing.Tool.makeColorFromResourceColor('rgba(255, 100, 255, 0.5)'); 8120 8121// Resource 8122let color10: common2D.Color = drawing.Tool.makeColorFromResourceColor($r('sys.color.ohos_id_color_secondary')); 8123let color11: common2D.Color = drawing.Tool.makeColorFromResourceColor($r('app.color.appColorTest')); 8124let color12: common2D.Color = drawing.Tool.makeColorFromResourceColor($r('app.string.appColorTest')); 8125let color13: common2D.Color = drawing.Tool.makeColorFromResourceColor($r('app.integer.appColorTest')); 8126 8127// Use color 8128let brush = new drawing.Brush(); 8129brush.setColor(color1); 8130``` 8131 8132## RegionOp<sup>12+</sup> 8133 8134两个区域合并时的操作的枚举。 8135 8136**系统能力**:SystemCapability.Graphics.Drawing 8137 8138| 名称 | 值 | 说明 | 示意图 | 8139| --------------------- | ---- | ------------------------------ | -------- | 8140| DIFFERENCE | 0 | 两个区域相减操作。 |  | 8141| INTERSECT | 1 | 两个区域相交操作。 |  | 8142| UNION | 2 | 两个区域联合操作。 |  | 8143| XOR | 3 | 两个区域异或操作。 |  | 8144| REVERSE_DIFFERENCE | 4 | 两个区域反向相减操作。 |  | 8145| REPLACE | 5 | 两个区域替换操作。 |  | 8146 8147> **说明:** 8148> 8149> 示意图展示的是以一个红色区域为基础,使用不同枚举值与另一个蓝色区域合并后获得的结果,其中绿色区域为最终得到的区域。 8150 8151## CornerPos<sup>12+</sup> 8152 8153圆角位置枚举。 8154 8155**系统能力**:SystemCapability.Graphics.Drawing 8156 8157| 名称 | 值 | 说明 | 8158| --------------------- | ---- | ------------------------------ | 8159| TOP_LEFT_POS | 0 | 左上角圆角位置。 | 8160| TOP_RIGHT_POS | 1 | 右上角圆角位置。 | 8161| BOTTOM_RIGHT_POS | 2 | 右下角圆角位置。 | 8162| BOTTOM_LEFT_POS | 3 | 左下角圆角位置。 |