1# Class (Region) 2 3<!--Kit: ArkGraphics 2D--> 4<!--Subsystem: Graphics--> 5<!--Owner: @hangmengxin--> 6<!--Designer: @wangyanglan--> 7<!--Tester: @nobuggers--> 8<!--Adviser: @ge-yafang--> 9 10> **说明:** 11> 12> - 本模块首批接口从API version 11开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。 13> 14> - 本Class首批接口从API version 12开始支持。 15> 16> - 本模块使用屏幕物理像素单位px。 17> 18> - 本模块为单线程模型策略,需要调用方自行管理线程安全和上下文状态的切换。 19 20区域对象,用于描述所绘制图形的区域信息。 21 22## 导入模块 23 24```ts 25import { drawing } from '@kit.ArkGraphics2D'; 26``` 27 28## constructor<sup>20+</sup> 29 30constructor() 31 32构造一个区域对象。 33 34**系统能力:** SystemCapability.Graphics.Drawing 35 36```ts 37import { RenderNode } from '@kit.ArkUI'; 38import { drawing } from '@kit.ArkGraphics2D'; 39class DrawingRenderNode extends RenderNode { 40 draw(context : DrawContext) { 41 const canvas = context.canvas; 42 const pen = new drawing.Pen(); 43 pen.setColor({ alpha: 255, red: 255, green: 0, blue: 0 }); 44 pen.setStrokeWidth(10); 45 canvas.attachPen(pen); 46 let region = new drawing.Region(); 47 region.setRect(200, 200, 400, 400); 48 canvas.drawRegion(region); 49 canvas.detachPen(); 50 } 51} 52``` 53 54## constructor<sup>20+</sup> 55 56constructor(region: Region) 57 58拷贝一个区域对象。 59 60**系统能力:** SystemCapability.Graphics.Drawing 61 62**参数:** 63 64| 参数名 | 类型 | 必填 | 说明 | 65| ------ | ------ | ---- | ----------------------- | 66| region | [Region](arkts-apis-graphics-drawing-Region.md) | 是 | 用于拷贝的区域。 | 67 68**示例:** 69 70```ts 71import { RenderNode } from '@kit.ArkUI'; 72import { drawing } from '@kit.ArkGraphics2D'; 73class DrawingRenderNode extends RenderNode { 74 draw(context : DrawContext) { 75 const canvas = context.canvas; 76 const pen = new drawing.Pen(); 77 pen.setColor({ alpha: 255, red: 255, green: 0, blue: 0 }); 78 pen.setStrokeWidth(10); 79 canvas.attachPen(pen); 80 let region = new drawing.Region(); 81 region.setRect(200, 200, 400, 400); 82 let region2 = new drawing.Region(region); 83 canvas.drawRegion(region2); 84 canvas.detachPen(); 85 } 86} 87``` 88 89## constructor<sup>20+</sup> 90 91constructor(left: number, top: number, right: number, bottom: number) 92 93构造矩形区域。 94 95**系统能力:** SystemCapability.Graphics.Drawing 96 97**参数:** 98 99| 参数名 | 类型 | 必填 | 说明 | 100| ------ | ------ | ---- | ----------------------- | 101| left | number | 是 | 矩形区域的左侧位置(矩形左上角横坐标)。该参数必须为整数。0表示坐标原点,负数表示位于坐标原点左侧,正数表示位于坐标原点右侧。| 102| top | number | 是 | 矩形区域的顶部位置(矩形左上角纵坐标)。该参数必须为整数。0表示坐标原点,负数表示位于坐标原点上侧,正数表示位于坐标原点下侧。 | 103| right | number | 是 | 矩形区域的右侧位置(矩形右下角横坐标)。该参数必须为整数。0表示坐标原点,负数表示位于坐标原点左侧,正数表示位于坐标原点右侧。 | 104| bottom | number | 是 | 矩形区域的底部位置(矩形右下角纵坐标)。该参数必须为整数。0表示坐标原点,负数表示位于坐标原点上侧,正数表示位于坐标原点下侧。 | 105 106**示例:** 107 108```ts 109import { RenderNode } from '@kit.ArkUI'; 110import { drawing } from '@kit.ArkGraphics2D'; 111class DrawingRenderNode extends RenderNode { 112 draw(context : DrawContext) { 113 const canvas = context.canvas; 114 const pen = new drawing.Pen(); 115 pen.setColor({ alpha: 255, red: 255, green: 0, blue: 0 }); 116 pen.setStrokeWidth(10); 117 canvas.attachPen(pen); 118 let region = new drawing.Region(100, 100, 200, 200); 119 canvas.drawRegion(region); 120 canvas.detachPen(); 121 } 122} 123``` 124 125## isEqual<sup>20+</sup> 126 127isEqual(other: Region): boolean 128 129用于判断其他区域是否与当前区域相等。 130 131**系统能力:** SystemCapability.Graphics.Drawing 132 133**参数:** 134 135| 参数名 | 类型 | 必填 | 说明 | 136| ------ | ------ | ---- | ----------------------- | 137| other | [Region](arkts-apis-graphics-drawing-Region.md) | 是 | 区域对象。 | 138 139**返回值:** 140 141| 类型 | 说明 | 142| ------- | -------------- | 143| boolean | 返回其他区域是否与当前区域相等的结果。true表示相等,false表示不相等。 | 144 145**示例:** 146 147```ts 148import { RenderNode } from '@kit.ArkUI'; 149import { drawing } from '@kit.ArkGraphics2D'; 150class DrawingRenderNode extends RenderNode { 151 draw(context : DrawContext) { 152 const canvas = context.canvas; 153 const pen = new drawing.Pen(); 154 pen.setColor({ alpha: 255, red: 255, green: 0, blue: 0 }); 155 pen.setStrokeWidth(10); 156 canvas.attachPen(pen); 157 let region = new drawing.Region(); 158 let other = new drawing.Region(); 159 region.setRect(100, 100, 400, 400); 160 other.setRect(150, 150, 250 ,250); 161 let flag: boolean = false; 162 flag = region.isEqual(other); 163 console.info('flag: ', flag); 164 canvas.drawRegion(region); 165 canvas.drawRegion(other); 166 canvas.detachPen(); 167 } 168} 169``` 170 171## isComplex<sup>20+</sup> 172 173isComplex(): boolean 174 175判断当前区域是否包含多个矩形。 176 177**系统能力:** SystemCapability.Graphics.Drawing 178 179**返回值:** 180 181| 类型 | 说明 | 182| ------- | -------------- | 183| boolean | 返回当前区域是否包含多个矩形的结果。true表示当前区域包含多个矩形,false表示当前区域不包含多个矩形。 | 184 185**示例:** 186 187```ts 188import { common2D, drawing } from '@kit.ArkGraphics2D'; 189import { RenderNode } from '@kit.ArkUI'; 190 191class DrawingRenderNode extends RenderNode { 192 draw(context : DrawContext) { 193 const canvas = context.canvas; 194 const pen = new drawing.Pen(); 195 pen.setColor({ alpha: 255, red: 255, green: 0, blue: 0 }); 196 pen.setStrokeWidth(10); 197 canvas.attachPen(pen); 198 let region = new drawing.Region(); 199 let other = new drawing.Region(); 200 region.setRect(100, 100, 200, 200); 201 region.op(new drawing.Region(220, 200, 280, 280), drawing.RegionOp.UNION); 202 let flag: boolean = false; 203 flag = region.isComplex(); 204 console.info('flag :', flag); 205 canvas.drawRegion(region); 206 canvas.drawRegion(other); 207 canvas.detachPen(); 208 } 209} 210``` 211 212## isEmpty<sup>20+</sup> 213 214isEmpty(): boolean 215 216判断当前区域是否为空。 217 218**系统能力:** SystemCapability.Graphics.Drawing 219 220**返回值:** 221 222| 类型 | 说明 | 223| ------- | -------------- | 224| boolean | 返回当前区域是否为空。true表示当前区域为空,false表示当前区域不为空。 | 225 226**示例:** 227 228```ts 229import { RenderNode } from '@kit.ArkUI'; 230import { drawing } from '@kit.ArkGraphics2D'; 231 232class DrawingRenderNode extends RenderNode { 233 draw(context : DrawContext) { 234 const canvas = context.canvas; 235 const pen = new drawing.Pen(); 236 pen.setColor({ alpha: 255, red: 255, green: 0, blue: 0 }); 237 pen.setStrokeWidth(10); 238 canvas.attachPen(pen); 239 let region = new drawing.Region(); 240 let flag: boolean = region.isEmpty(); 241 console.info('flag: ', flag); 242 region.setRect(100, 100, 400, 400); 243 flag = region.isEmpty(); 244 console.info('flag: ', flag); 245 canvas.drawRegion(region); 246 canvas.detachPen(); 247 } 248} 249``` 250 251## getBounds<sup>20+</sup> 252 253getBounds(): common2D.Rect 254 255获取区域的边界。 256 257**系统能力:** SystemCapability.Graphics.Drawing 258 259**返回值:** 260 261| 类型 | 说明 | 262| ------- | -------------- | 263| [common2D.Rect](js-apis-graphics-common2D.md#rect) | 返回当前区域的边界矩形。 | 264 265**示例:** 266 267```ts 268import { drawing } from '@kit.ArkGraphics2D'; 269 270let region = new drawing.Region(); 271let rect = region.getBounds(); 272``` 273 274## getBoundaryPath<sup>20+</sup> 275 276getBoundaryPath(): Path 277 278返回一个新路径,该路径取自当前区域的边界。 279 280**系统能力:** SystemCapability.Graphics.Drawing 281 282**返回值:** 283 284| 类型 | 说明 | 285| ------- | -------------- | 286| [Path](arkts-apis-graphics-drawing-Path.md) | 返回当前区域边界的路径。 | 287 288**示例:** 289 290```ts 291import { drawing } from '@kit.ArkGraphics2D'; 292let region = new drawing.Region(); 293let path = region.getBoundaryPath(); 294``` 295 296## isPointContained<sup>12+</sup> 297 298isPointContained(x: number, y: number) : boolean 299 300判断测试点是否在区域内。 301 302**系统能力:** SystemCapability.Graphics.Drawing 303 304**参数:** 305 306| 参数名 | 类型 | 必填 | 说明 | 307| ------ | ------ | ---- | ----------------------- | 308| x | number | 是 | 测试点的x轴坐标。该参数必须为整数。如果输入的数字包含小数部分,小数部分将被舍去。 | 309| y | number | 是 | 测试点的y轴坐标。该参数必须为整数。如果输入的数字包含小数部分,小数部分将被舍去。 | 310 311**返回值:** 312 313| 类型 | 说明 | 314| ------- | -------------- | 315| boolean | 返回测试点是否在区域内的结果。true表示测试点在区域内,false表示测试点不在区域内。 | 316 317**错误码:** 318 319以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 320 321| 错误码ID | 错误信息 | 322| ------- | --------------------------------------------| 323| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. | 324 325**示例:** 326 327```ts 328import { RenderNode } from '@kit.ArkUI'; 329import { drawing } from '@kit.ArkGraphics2D'; 330 331class DrawingRenderNode extends RenderNode { 332 draw(context : DrawContext) { 333 const canvas = context.canvas; 334 const pen = new drawing.Pen(); 335 pen.setColor({ alpha: 255, red: 255, green: 0, blue: 0 }); 336 pen.setStrokeWidth(10); 337 canvas.attachPen(pen); 338 let region = new drawing.Region(); 339 region.setRect(100, 100, 400, 400); 340 let flag: boolean = false; 341 flag = region.isPointContained(200,200); 342 console.info("region isPointContained : " + flag); 343 canvas.drawPoint(200,200); 344 canvas.drawRegion(region); 345 canvas.detachPen(); 346 } 347} 348``` 349 350## offset<sup>20+</sup> 351 352offset(dx: number, dy: number): void 353 354对区域进行平移。 355 356**系统能力:** SystemCapability.Graphics.Drawing 357 358**参数:** 359 360| 参数名 | 类型 | 必填 | 说明 | 361| ------ | ------ | ---- | ----------------------- | 362| dx | number | 是 | x轴方向平移量,正数往x轴正方向平移,负数往x轴负方向平移,该参数为整数。 | 363| dy | number | 是 | y轴方向平移量,正数往y轴正方向平移,负数往y轴负方向平移,该参数为整数。| 364 365**示例:** 366 367```ts 368import { RenderNode } from '@kit.ArkUI'; 369import { drawing } from '@kit.ArkGraphics2D'; 370class DrawingRenderNode extends RenderNode { 371 draw(context : DrawContext) { 372 const canvas = context.canvas; 373 const pen = new drawing.Pen(); 374 pen.setColor({ alpha: 255, red: 255, green: 0, blue: 0 }); 375 pen.setStrokeWidth(10); 376 canvas.attachPen(pen); 377 let region = new drawing.Region(); 378 region.setRect(100, 100, 400, 400); 379 region.offset(10, 20); 380 canvas.drawPoint(200,200); 381 canvas.drawRegion(region); 382 canvas.detachPen(); 383 } 384} 385``` 386 387## isRegionContained<sup>12+</sup> 388 389isRegionContained(other: Region) : boolean 390 391判断其他区域是否在当前区域内。 392 393**系统能力:** SystemCapability.Graphics.Drawing 394 395**参数:** 396 397| 参数名 | 类型 | 必填 | 说明 | 398| ------ | ------ | ---- | ----------------------- | 399| other | [Region](arkts-apis-graphics-drawing-Region.md) | 是 | 区域对象。 | 400 401**返回值:** 402 403| 类型 | 说明 | 404| ------- | -------------- | 405| boolean | 返回其他区域是否在当前区域内的结果。true表示其他区域在当前区域内,false表示其他区域不在当前区域内。 | 406 407**错误码:** 408 409以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 410 411| 错误码ID | 错误信息 | 412| ------- | --------------------------------------------| 413| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. | 414 415**示例:** 416 417```ts 418import { RenderNode } from '@kit.ArkUI'; 419import { drawing } from '@kit.ArkGraphics2D'; 420 421class DrawingRenderNode extends RenderNode { 422 draw(context : DrawContext) { 423 const canvas = context.canvas; 424 const pen = new drawing.Pen(); 425 pen.setColor({ alpha: 255, red: 255, green: 0, blue: 0 }); 426 pen.setStrokeWidth(10); 427 canvas.attachPen(pen); 428 let region = new drawing.Region(); 429 let other = new drawing.Region(); 430 region.setRect(100, 100, 400, 400); 431 other.setRect(150, 150, 250 ,250); 432 let flag: boolean = false; 433 flag = region.isRegionContained(other); 434 console.info("region isRegionContained : " + flag); 435 canvas.drawRegion(region); 436 canvas.drawRegion(other); 437 canvas.detachPen(); 438 } 439} 440``` 441 442## op<sup>12+</sup> 443 444op(region: Region, regionOp: RegionOp) : boolean 445 446将当前区域与指定区域进行运算,并替换为运算结果。 447 448**系统能力:** SystemCapability.Graphics.Drawing 449 450**参数:** 451 452| 参数名 | 类型 | 必填 | 说明 | 453| ------ | ------ | ---- | ----------------------- | 454| region | [Region](arkts-apis-graphics-drawing-Region.md) | 是 | 区域对象。 | 455| regionOp | [RegionOp](arkts-apis-graphics-drawing-e.md#regionop12) | 是 | 区域合并操作类型。 | 456 457**返回值:** 458 459| 类型 | 说明 | 460| ------- | -------------- | 461| boolean | 返回区域运算结果是否成功替换当前区域。true表示区域运算结果替换当前区域成功,false表示区域运算结果替换当前区域失败。 | 462 463**错误码:** 464 465以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 466 467| 错误码ID | 错误信息 | 468| ------- | --------------------------------------------| 469| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. | 470 471**示例:** 472 473```ts 474import { RenderNode } from '@kit.ArkUI'; 475import { drawing } from '@kit.ArkGraphics2D'; 476 477class DrawingRenderNode extends RenderNode { 478 draw(context : DrawContext) { 479 const canvas = context.canvas; 480 const pen = new drawing.Pen(); 481 pen.setColor({ alpha: 255, red: 255, green: 0, blue: 0 }); 482 pen.setStrokeWidth(10); 483 canvas.attachPen(pen); 484 let region = new drawing.Region(); 485 region.setRect(200, 200, 400, 400); 486 let othregion = new drawing.Region(); 487 othregion.setRect(110, 110, 240, 240); 488 let flag: boolean = false; 489 flag = region.op(othregion,drawing.RegionOp.REPLACE); 490 console.info("region op : " + flag); 491 canvas.drawRegion(region); 492 canvas.detachPen(); 493 } 494} 495``` 496 497## quickReject<sup>12+</sup> 498 499quickReject(left: number, top: number, right: number, bottom: number) : boolean 500 501快速判断矩形和区域是否不相交,实际上比较的是矩形和区域的外接矩形是否不相交,因此会有误差。 502 503**系统能力:** SystemCapability.Graphics.Drawing 504 505**参数:** 506 507| 参数名 | 类型 | 必填 | 说明 | 508| ------ | ------ | ---- | ----------------------- | 509| left | number | 是 | 矩形区域的左侧位置。该参数必须为整数。当输入的数字带小数时,小数部分会被舍去。 | 510| top | number | 是 | 矩形区域的顶部位置。该参数必须为整数。当输入的数字带小数时,小数部分会被舍去。 | 511| right | number | 是 | 矩形区域的右侧位置。该参数必须为整数。当输入的数字带小数时,小数部分会被舍去。 | 512| bottom | number | 是 | 矩形区域的底部位置。该参数必须为整数。当输入的数字带小数时,小数部分会被舍去。 | 513 514**返回值:** 515 516| 类型 | 说明 | 517| ------- | -------------- | 518| boolean | 返回矩形是否与区域不相交的结果。true表示矩形与区域不相交,false表示矩形与区域相交。 | 519 520**错误码:** 521 522以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 523 524| 错误码ID | 错误信息 | 525| ------- | --------------------------------------------| 526| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. | 527 528**示例:** 529 530```ts 531import { RenderNode } from '@kit.ArkUI'; 532import { drawing } from '@kit.ArkGraphics2D'; 533 534class DrawingRenderNode extends RenderNode { 535 draw(context : DrawContext) { 536 const canvas = context.canvas; 537 const pen = new drawing.Pen(); 538 pen.setColor({ alpha: 255, red: 255, green: 0, blue: 0 }); 539 pen.setStrokeWidth(10); 540 canvas.attachPen(pen); 541 let region = new drawing.Region(); 542 region.setRect(100, 100, 400, 400); 543 let flag: boolean = false; 544 flag = region.quickReject(50, 50, 70, 70); 545 console.info("region quickReject : " + flag); 546 canvas.drawRegion(region); 547 canvas.detachPen(); 548 } 549} 550``` 551 552## quickRejectRegion<sup>20+</sup> 553 554quickRejectRegion(region: Region): boolean 555 556判断当前区域是否与另一个区域不相交。实际上比较的是两个区域的外接矩形是否不相交,因此会有误差。 557 558**系统能力:** SystemCapability.Graphics.Drawing 559 560**参数:** 561 562| 参数名 | 类型 | 必填 | 说明 | 563| ------ | ------ | ---- | ----------------------- | 564| region | [Region](arkts-apis-graphics-drawing-Region.md) | 是 | 指定的区域对象。 | 565 566**返回值:** 567 568| 类型 | 说明 | 569| ------- | -------------- | 570| boolean | 返回是否当前区域与另外的区域不相交的结果。true表示不相交,false表示相交。仅点和边相交返回true。| 571 572**示例:** 573 574```ts 575import { RenderNode } from '@kit.ArkUI'; 576import { drawing } from '@kit.ArkGraphics2D'; 577 578class DrawingRenderNode extends RenderNode { 579 draw(context : DrawContext) { 580 const canvas = context.canvas; 581 const pen = new drawing.Pen(); 582 pen.setColor({ alpha: 255, red: 255, green: 0, blue: 0 }); 583 pen.setStrokeWidth(10); 584 canvas.attachPen(pen); 585 let region = new drawing.Region(); 586 let region2 = new drawing.Region(); 587 region2.setRect(100, 100, 400, 400); 588 let flag: boolean = false; 589 flag = region.quickRejectRegion(region2); 590 console.info("region quickRejectRegion: " + flag); 591 canvas.drawRegion(region); 592 canvas.detachPen(); 593 } 594} 595``` 596 597## setPath<sup>12+</sup> 598 599setPath(path: Path, clip: Region) : boolean 600 601设置一个与裁剪区域内路径轮廓相匹配的区域。 602 603**系统能力:** SystemCapability.Graphics.Drawing 604 605**参数:** 606 607| 参数名 | 类型 | 必填 | 说明 | 608| ------ | ------ | ---- | ----------------------- | 609| path | [Path](arkts-apis-graphics-drawing-Path.md) | 是 | 路径对象。 | 610| clip | [Region](arkts-apis-graphics-drawing-Region.md) | 是 | 区域对象。 | 611 612**返回值:** 613 614| 类型 | 说明 | 615| ------- | -------------- | 616| boolean | 返回设置一个与裁剪区域内路径轮廓相匹配的区域是否成功。true表示设置成功,false表示设置失败。 | 617 618**错误码:** 619 620以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 621 622| 错误码ID | 错误信息 | 623| ------- | --------------------------------------------| 624| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. | 625 626**示例:** 627 628```ts 629import { RenderNode } from '@kit.ArkUI'; 630import { drawing } from '@kit.ArkGraphics2D'; 631 632class DrawingRenderNode extends RenderNode { 633 draw(context : DrawContext) { 634 const canvas = context.canvas; 635 const pen = new drawing.Pen(); 636 pen.setColor({ alpha: 255, red: 255, green: 0, blue: 0 }); 637 pen.setStrokeWidth(10); 638 canvas.attachPen(pen); 639 let region = new drawing.Region(); 640 let path = new drawing.Path(); 641 region.setRect(100, 100, 400, 400); 642 path.arcTo(50, 50, 300, 300, 0, 359); 643 let flag: boolean = false; 644 flag = region.setPath(path,region); 645 console.info("region setPath : " + flag); 646 canvas.drawRegion(region); 647 canvas.detachPen(); 648 } 649} 650``` 651 652## setRegion<sup>20+</sup> 653 654setRegion(region: Region): void 655 656设置当前区域为另一块区域。 657 658**系统能力:** SystemCapability.Graphics.Drawing 659 660**参数:** 661 662| 参数名 | 类型 | 必填 | 说明 | 663| ------ | ------ | ---- | ----------------------- | 664| region | [Region](arkts-apis-graphics-drawing-Region.md) | 是 | 用于赋值的区域。 | 665 666**示例:** 667 668```ts 669import { RenderNode } from '@kit.ArkUI'; 670import { drawing } from '@kit.ArkGraphics2D'; 671 672class DrawingRenderNode extends RenderNode { 673 draw(context : DrawContext) { 674 const canvas = context.canvas; 675 const pen = new drawing.Pen(); 676 pen.setColor({ alpha: 255, red: 255, green: 0, blue: 0 }); 677 pen.setStrokeWidth(10); 678 canvas.attachPen(pen); 679 let region = new drawing.Region(); 680 region.setRect(100, 100, 200, 200); 681 let region2 = new drawing.Region(); 682 region2.setRegion(region); 683 canvas.drawRegion(region2); 684 canvas.detachPen(); 685 } 686} 687``` 688 689## setEmpty<sup>20+</sup> 690 691setEmpty(): void 692 693设置当前区域为空。 694 695**系统能力:** SystemCapability.Graphics.Drawing 696 697**示例:** 698 699```ts 700import { RenderNode } from '@kit.ArkUI'; 701import { drawing } from '@kit.ArkGraphics2D'; 702 703class DrawingRenderNode extends RenderNode { 704 draw(context : DrawContext) { 705 let region = new drawing.Region(); 706 region.setRect(100, 100, 200, 200); 707 let isEmpty = region.isEmpty(); 708 console.info("isEmpty :" + isEmpty); 709 region.setEmpty(); 710 isEmpty = region.isEmpty(); 711 console.info("isEmpty :" + isEmpty); 712 } 713} 714``` 715 716## setRect<sup>12+</sup> 717 718setRect(left: number, top: number, right: number, bottom: number) : boolean 719 720设置一个矩形区域。 721 722**系统能力:** SystemCapability.Graphics.Drawing 723 724**参数:** 725 726| 参数名 | 类型 | 必填 | 说明 | 727| ------ | ------ | ---- | ----------------------- | 728| left | number | 是 | 矩形区域的左侧位置。该参数必须为整数。当输入的数字带小数时,小数部分会被舍去。 | 729| top | number | 是 | 矩形区域的顶部位置。该参数必须为整数。当输入的数字带小数时,小数部分会被舍去。 | 730| right | number | 是 | 矩形区域的右侧位置。该参数必须为整数。当输入的数字带小数时,小数部分会被舍去。 | 731| bottom | number | 是 | 矩形区域的底部位置。该参数必须为整数。当输入的数字带小数时,小数部分会被舍去。 | 732 733**返回值:** 734 735| 类型 | 说明 | 736| ------- | -------------- | 737| boolean | 返回设置矩形区域是否成功的结果。true表示设置矩形区域成功,false表示设置矩形区域失败。 | 738 739**错误码:** 740 741以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 742 743| 错误码ID | 错误信息 | 744| ------- | --------------------------------------------| 745| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. | 746 747**示例:** 748 749```ts 750import { RenderNode } from '@kit.ArkUI'; 751import { drawing } from '@kit.ArkGraphics2D'; 752 753class DrawingRenderNode extends RenderNode { 754 draw(context : DrawContext) { 755 const canvas = context.canvas; 756 const pen = new drawing.Pen(); 757 pen.setColor({ alpha: 255, red: 255, green: 0, blue: 0 }); 758 pen.setStrokeWidth(10); 759 canvas.attachPen(pen); 760 let region = new drawing.Region(); 761 let flag: boolean = false; 762 flag = region.setRect(50, 50, 300, 300); 763 console.info("region setRect : " + flag); 764 canvas.drawRegion(region); 765 canvas.detachPen(); 766 } 767} 768```