• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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```