• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# Graphics
2<!--Kit: ArkUI-->
3<!--Subsystem: ArkUI-->
4<!--Owner: @xiang-shouxing-->
5<!--Designer: @xiang-shouxing-->
6<!--Tester: @sally__-->
7<!--Adviser: @HelloCrease-->
8
9自定义节点相关属性定义的详细信息。
10
11> **说明:**
12>
13> 本模块首批接口从API version 11开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。
14
15## 导入模块
16
17```ts
18import { DrawContext, Size, Offset, Position, Pivot, Scale, Translation, Matrix4, Rotation, Frame, LengthMetricsUnit } from "@kit.ArkUI";
19```
20
21## Size
22
23用于返回组件布局大小的宽和高。默认单位为vp,不同的接口使用Size类型时会再定义单位,以接口定义的单位为准。
24
25**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
26
27**系统能力:** SystemCapability.ArkUI.ArkUI.Full
28
29| 名称   | 类型   | 只读 | 可选 | 说明                   |
30| ------ | ------ | ---- | ---- | ---------------------- |
31| width  | number | 否   | 否   | 组件大小的宽度。<br/>单位:vp<br/>取值范围:[0, +∞) |
32| height | number | 否   | 否   | 组件大小的高度。<br/>单位:vp<br/>取值范围:[0, +∞) |
33
34## Position
35
36type Position = Vector2
37
38用于设置或返回组件的位置。
39
40**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
41
42**系统能力:** SystemCapability.ArkUI.ArkUI.Full
43
44| 类型                | 说明                                |
45| ------------------- | ----------------------------------- |
46| [Vector2](#vector2) | 包含x和y两个值的向量。<br/>单位:vp |
47
48## PositionT<sup>12+</sup>
49
50type PositionT\<T> = Vector2T\<T>
51
52用于设置或返回组件的位置。
53
54**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
55
56**系统能力:** SystemCapability.ArkUI.ArkUI.Full
57
58| 类型                         | 说明                                |
59| ---------------------------- | ----------------------------------- |
60| [Vector2T\<T>](#vector2tt12) | 包含x和y两个值的向量。<br/>单位:vp |
61
62## Frame
63
64用于设置或返回组件的布局大小和位置。
65
66**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
67
68**系统能力:** SystemCapability.ArkUI.ArkUI.Full
69
70| 名称   | 类型   | 只读 | 可选 | 说明                        |
71| ------ | ------ | ---- | ---- | --------------------------- |
72| x      | number | 否   | 否   | 水平方向位置。<br/>单位:vp<br/>取值范围:(-∞, +∞) |
73| y      | number | 否   | 否   | 垂直方向位置。<br/>单位:vp<br/>取值范围:(-∞, +∞) |
74| width  | number | 否   | 否   | 组件的宽度。<br/>单位:vp<br/>取值范围:[0, +∞)   |
75| height | number | 否   | 否   | 组件的高度。<br/>单位:vp<br/>取值范围:[0, +∞)   |
76
77## Pivot
78
79type Pivot = Vector2
80
81用于设置组件的轴心坐标,轴心会作为组件的旋转/缩放中心点,影响旋转和缩放效果。
82
83**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
84
85**系统能力:** SystemCapability.ArkUI.ArkUI.Full
86
87| 类型                | 说明                                                         |
88| ------------------- | ------------------------------------------------------------ |
89| [Vector2](#vector2) | 轴心的x和y轴坐标。该参数为浮点数,默认值为0.5, 取值范围为[0.0, 1.0]。 |
90
91## Scale
92
93type Scale = Vector2
94
95用于设置组件的缩放比例。
96
97**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
98
99**系统能力:** SystemCapability.ArkUI.ArkUI.Full
100
101| 类型                | 说明                                            |
102| ------------------- | ----------------------------------------------- |
103| [Vector2](#vector2) | x和y轴的缩放参数。该参数为浮点数,默认值为1.0。 |
104
105## Translation
106
107type Translation = Vector2
108
109用于设置组件的平移量。
110
111**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
112
113**系统能力:** SystemCapability.ArkUI.ArkUI.Full
114
115| 类型                | 说明                          |
116| ------------------- | ----------------------------- |
117| [Vector2](#vector2) | x和y轴的平移量。<br/>单位:px |
118
119## Rotation
120
121type Rotation = Vector3
122
123用于设置组件的旋转角度。
124
125**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
126
127**系统能力:** SystemCapability.ArkUI.ArkUI.Full
128
129| 类型                | 说明                                   |
130| ------------------- | -------------------------------------- |
131| [Vector3](#vector3) | x、y、z轴方向的旋转角度。<br/>单位:度 |
132
133## Offset
134
135type Offset = Vector2
136
137用于设置组件或效果的偏移。
138
139**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
140
141**系统能力:** SystemCapability.ArkUI.ArkUI.Full
142
143| 类型                | 说明                              |
144| ------------------- | --------------------------------- |
145| [Vector2](#vector2) | x和y轴方向的偏移量。<br/>单位:vp |
146
147## Matrix4
148
149type Matrix4 = [number,number,number,number,number,number,number,number,number,number,number,number,number,number,number,number]
150
151设置四阶矩阵。
152
153**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
154
155**系统能力:** SystemCapability.ArkUI.ArkUI.Full
156
157| 类型                                                         | 说明                                 |
158| ------------------------------------------------------------ | ------------------------------------ |
159| [number,number,number,number,<br/>number,number,number,number,<br/>number,number,number,number,<br/>number,number,number,number] | 参数为长度为16(4\*4)的number数组。<br/>各number取值范围:(-∞, +∞) |
160
161用于设置组件的变换信息,该类型为一个 4x4 矩阵,使用一个长度为16的`number[]`进行表示,例如:
162```ts
163const transform: Matrix4 = [
164  1, 0, 45, 0,
165  0, 1,  0, 0,
166  0, 0,  1, 0,
167  0, 0,  0, 1
168]
169```
170
171## Vector2
172
173用于表示包含x和y两个值的向量。
174
175**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
176
177**系统能力:** SystemCapability.ArkUI.ArkUI.Full
178
179| 名称 | 类型   | 只读 | 可选 | 说明              |
180| ---- | ------ | ---- | ---- | ----------------- |
181| x    | number | 否   | 否   | 向量x轴方向的值。<br/>取值范围:(-∞, +∞) |
182| y    | number | 否   | 否   | 向量y轴方向的值。<br/>取值范围:(-∞, +∞) |
183
184## Vector3
185
186用于表示包含x、y、z三个值的向量。
187
188**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
189
190**系统能力:** SystemCapability.ArkUI.ArkUI.Full
191
192| 名称 | 类型   | 只读 | 可选 | 说明                |
193| ---- | ------ | ---- | ---- | ------------------- |
194| x    | number | 否   | 否   | x轴方向的旋转角度。<br/>取值范围:(-∞, +∞) |
195| y    | number | 否   | 否   | y轴方向的旋转角度。<br/>取值范围:(-∞, +∞) |
196| z    | number | 否   | 否   | z轴方向的旋转角度。<br/>取值范围:(-∞, +∞) |
197
198## Vector2T\<T><sup>12+</sup>
199
200用于表示T类型的包含x和y两个值的向量。
201
202**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
203
204**系统能力:** SystemCapability.ArkUI.ArkUI.Full
205
206| 名称 | 类型   | 只读 | 可选 | 说明              |
207| ---- | ------ | ---- | ---- | ----------------- |
208| x    | T | 否  | 否  | 向量x轴方向的值。 |
209| y    | T | 否  | 否  | 向量y轴方向的值。 |
210
211## DrawContext
212
213图形绘制上下文,提供绘制所需的画布宽度和高度。
214
215### size
216
217get size(): Size
218
219获取画布的宽度和高度。
220
221**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
222
223**系统能力:** SystemCapability.ArkUI.ArkUI.Full
224
225**返回值:**
226
227| 类型          | 说明             |
228| ------------- | ---------------- |
229| [Size](#size) | 画布的宽度和高度。 |
230
231### sizeInPixel<sup>12+</sup>
232
233get sizeInPixel(): Size
234
235获取以px为单位的画布的宽度和高度。
236
237**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
238
239**系统能力:** SystemCapability.ArkUI.ArkUI.Full
240
241**返回值:**
242
243| 类型          | 说明             |
244| ------------- | ---------------- |
245| [Size](#size) | 画布的宽度和高度,以px为单位。 |
246
247### canvas
248
249get canvas(): drawing.Canvas
250
251获取用于绘制的画布。
252
253**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
254
255**系统能力:** SystemCapability.ArkUI.ArkUI.Full
256
257**返回值:**
258
259| 类型          | 说明             |
260| ------------- | ---------------- |
261| [drawing.Canvas](../apis-arkgraphics2d/arkts-apis-graphics-drawing-Canvas.md) | 用于绘制的画布。 |
262
263**示例:**
264
265```ts
266import { RenderNode, FrameNode, NodeController, DrawContext } from "@kit.ArkUI";
267
268class MyRenderNode extends RenderNode {
269  flag: boolean = false;
270
271  draw(context: DrawContext) {
272    const size = context.size;
273    const canvas = context.canvas;
274    const sizeInPixel = context.sizeInPixel;
275  }
276}
277
278const renderNode = new MyRenderNode();
279renderNode.frame = { x: 0, y: 0, width: 100, height: 100 };
280renderNode.backgroundColor = 0xffff0000;
281
282class MyNodeController extends NodeController {
283  private rootNode: FrameNode | null = null;
284
285  makeNode(uiContext: UIContext): FrameNode | null {
286    this.rootNode = new FrameNode(uiContext);
287
288    const rootRenderNode = this.rootNode.getRenderNode();
289    if (rootRenderNode !== null) {
290      rootRenderNode.appendChild(renderNode);
291    }
292
293    return this.rootNode;
294  }
295}
296
297@Entry
298@Component
299struct Index {
300  private myNodeController: MyNodeController = new MyNodeController();
301
302  build() {
303    Row() {
304      NodeContainer(this.myNodeController)
305    }
306  }
307}
308```
309
310## Edges\<T><sup>12+</sup>
311
312用于设置边框的属性。
313
314**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
315
316**系统能力:** SystemCapability.ArkUI.ArkUI.Full
317
318| 名称   | 类型 | 只读 | 可选 | 说明             |
319| ------ | ---- | ---- | ---- | ---------------- |
320| left   | T    | 否   | 否   | 左侧边框的属性。 |
321| top    | T    | 否   | 否   | 顶部边框的属性。 |
322| right  | T    | 否   | 否   | 右侧边框的属性。 |
323| bottom | T    | 否   | 否   | 底部边框的属性。 |
324
325## LengthUnit<sup>12+</sup>
326
327长度属性单位枚举。
328
329**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
330
331**系统能力:** SystemCapability.ArkUI.ArkUI.Full
332
333| 名称 | 值 | 说明 |
334| -------- | -------- | -------- |
335| PX | 0 | 长度类型,用于描述以px像素单位为单位的长度。 |
336| VP | 1 | 长度类型,用于描述以vp像素单位为单位的长度。 |
337| FP | 2 | 长度类型,用于描述以fp像素单位为单位的长度。 |
338| PERCENT | 3 | 长度类型,用于描述以%像素单位为单位的长度。 |
339| LPX | 4 | 长度类型,用于描述以lpx像素单位为单位的长度。 |
340
341## SizeT\<T><sup>12+</sup>
342
343用于设置宽高的属性。
344
345**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
346
347**系统能力:** SystemCapability.ArkUI.ArkUI.Full
348
349| 名称   | 类型 | 只读 | 可选 | 说明             |
350| ------ | ---- | ---- | ---- | ---------------- |
351| width   | T    | 否   | 否   | 宽度的属性。 |
352| height    | T    | 否   | 否   | 高度的属性。 |
353
354## LengthMetricsUnit<sup>12+</sup>
355
356长度属性单位枚举。
357
358**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
359
360**系统能力:** SystemCapability.ArkUI.ArkUI.Full
361
362| 名称 | 值 | 说明 |
363| -------- | -------- | -------- |
364| DEFAULT | 0 | 长度类型,用于描述以默认的vp像素单位为单位的长度。 |
365| PX | 1 | 长度类型,用于描述以px像素单位为单位的长度。 |
366
367## LengthMetrics<sup>12+</sup>
368
369用于设置长度属性,当长度单位为PERCENT时,值为1表示100%。
370
371### 属性
372
373**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
374
375**系统能力:** SystemCapability.ArkUI.ArkUI.Full
376
377| 名称   | 类型 | 只读 | 可选 | 说明             |
378| ------------ | ---------------------------------------- | ---- | ---- | ------ |
379| value       | number | 否   | 否   | 长度属性的值。   |
380| unit | [LengthUnit](#lengthunit12)                                   | 否   | 否   | 长度属性的单位,默认为VP。|
381
382### constructor<sup>12+</sup>
383
384constructor(value: number, unit?: LengthUnit)
385
386LengthMetrics的构造函数。若参数unit不传入值或传入undefined,返回值使用默认单位VP;若unit传入非LengthUnit类型的值,返回默认值0VP。
387
388**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
389
390**系统能力:** SystemCapability.ArkUI.ArkUI.Full
391
392**参数:**
393
394| 参数名 | 类型          | 必填 | 说明         |
395| ------ | ------------- | ---- | ------------ |
396| value   | number | 是   | 长度属性的值。<br/>取值范围:[0, +∞) |
397| unit   | [LengthUnit](#lengthunit12) | 否   | 长度属性的单位。 |
398
399### px<sup>12+</sup>
400
401static px(value: number): LengthMetrics
402
403用于生成单位为PX的长度属性。
404
405**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
406
407**系统能力:** SystemCapability.ArkUI.ArkUI.Full
408
409**参数:**
410
411| 参数名 | 类型          | 必填 | 说明         |
412| ------ | ------------- | ---- | ------------ |
413| value   | number | 是   | 长度属性的值。<br/>取值范围:(-∞, +∞) |
414
415**返回值:**
416
417| 类型          | 说明             |
418| ------------- | ---------------- |
419| [LengthMetrics](#lengthmetrics12) | LengthMetrics 类的实例。 |
420
421### vp<sup>12+</sup>
422
423static vp(value: number): LengthMetrics
424
425用于生成单位为VP的长度属性。
426
427**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
428
429**系统能力:** SystemCapability.ArkUI.ArkUI.Full
430
431**参数:**
432
433| 参数名 | 类型          | 必填 | 说明         |
434| ------ | ------------- | ---- | ------------ |
435| value   | number | 是   | 长度属性的值。<br/>取值范围:(-∞, +∞) |
436
437**返回值:**
438
439| 类型          | 说明             |
440| ------------- | ---------------- |
441| [LengthMetrics](#lengthmetrics12) | LengthMetrics 类的实例。 |
442
443### fp<sup>12+</sup>
444
445static fp(value: number): LengthMetrics
446
447用于生成单位为FP的长度属性。
448
449**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
450
451**系统能力:** SystemCapability.ArkUI.ArkUI.Full
452
453**参数:**
454
455| 参数名 | 类型          | 必填 | 说明         |
456| ------ | ------------- | ---- | ------------ |
457| value   | number | 是   | 长度属性的值。<br/>取值范围:(-∞, +∞) |
458
459**返回值:**
460
461| 类型          | 说明             |
462| ------------- | ---------------- |
463| [LengthMetrics](#lengthmetrics12) | LengthMetrics 类的实例。 |
464
465### percent<sup>12+</sup>
466
467static percent(value: number): LengthMetrics
468
469用于生成单位为PERCENT的长度属性,值为1表示100%。
470
471**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
472
473**系统能力:** SystemCapability.ArkUI.ArkUI.Full
474
475**参数:**
476
477| 参数名 | 类型          | 必填 | 说明         |
478| ------ | ------------- | ---- | ------------ |
479| value   | number | 是   | 长度属性的值。<br/>取值范围:[0, 1] |
480
481**返回值:**
482
483| 类型          | 说明             |
484| ------------- | ---------------- |
485| [LengthMetrics](#lengthmetrics12) | LengthMetrics 类的实例。 |
486
487### lpx<sup>12+</sup>
488
489static lpx(value: number): LengthMetrics
490
491用于生成单位为LPX的长度属性。
492
493**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
494
495**系统能力:** SystemCapability.ArkUI.ArkUI.Full
496
497**参数:**
498
499| 参数名 | 类型          | 必填 | 说明         |
500| ------ | ------------- | ---- | ------------ |
501| value   | number | 是   | 长度属性的值。<br/>取值范围:(-∞, +∞) |
502
503**返回值:**
504
505| 类型          | 说明             |
506| ------------- | ---------------- |
507| [LengthMetrics](#lengthmetrics12) | LengthMetrics 类的实例。 |
508
509### resource<sup>12+</sup>
510
511static resource(value: Resource): LengthMetrics
512
513用于生成Resource类型资源的长度属性。
514
515**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
516
517**系统能力:** SystemCapability.ArkUI.ArkUI.Full
518
519**参数:**
520
521| 参数名 | 类型          | 必填 | 说明         |
522| ------ | ------------- | ---- | ------------ |
523| value   | Resource | 是   | 长度属性的值。 |
524
525**返回值:**
526
527| 类型          | 说明             |
528| ------------- | ---------------- |
529| [LengthMetrics](#lengthmetrics12) | LengthMetrics 类的实例。 |
530
531## ColorMetrics<sup>12+</sup>
532
533用于混合颜色。
534
535**系统能力:** SystemCapability.ArkUI.ArkUI.Full
536
537### numeric<sup>12+</sup>
538
539static numeric(value: number): ColorMetrics
540
541使用HEX格式颜色实例化 ColorMetrics 类。
542
543**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
544
545**系统能力:** SystemCapability.ArkUI.ArkUI.Full
546
547**参数:**
548
549| 参数名 | 类型          | 必填 | 说明         |
550| ------ | ------------- | ---- | ------------ |
551| value   | number | 是   | HEX格式颜色。<br/>取值范围:支持rgb或者argb |
552
553**返回值:**
554
555| 类型          | 说明             |
556| ------------- | ---------------- |
557| [ColorMetrics](#colormetrics12) | ColorMetrics 类的实例。 |
558
559### rgba<sup>12+</sup>
560
561static rgba(red: number, green: number, blue: number, alpha?: number): ColorMetrics
562
563使用rgb或者rgba格式颜色实例化 ColorMetrics 类。
564
565**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
566
567**系统能力:** SystemCapability.ArkUI.ArkUI.Full
568
569**参数:**
570
571| 参数名 | 类型          | 必填 | 说明         |
572| ------ | ------------- | ---- | ------------ |
573| red   | number | 是   | 颜色的R分量(红色),值是0~255的整数。 |
574| green | number | 是   | 颜色的G分量(绿色),值是0~255的整数。 |
575| blue  | number | 是   | 颜色的B分量(蓝色),值是0~255的整数。 |
576| alpha | number | 否   | 颜色的A分量(透明度),值是0.0~1.0的浮点数,默认值为1.0,不透明。|
577
578**返回值:**
579
580| 类型          | 说明             |
581| ------------- | ---------------- |
582| [ColorMetrics](#colormetrics12) | ColorMetrics 类的实例。 |
583
584### colorWithSpace<sup>20+</sup>
585
586static colorWithSpace(colorSpace: ColorSpace, red: number, green: number, blue: number, alpha?: number): ColorMetrics
587
588使用[ColorSpace](./arkui-ts/ts-appendix-enums.md#colorspace20)和rgba格式颜色实例化ColorMetrics类。仅部分属性支持在display-p3色彩空间中设置颜色。
589
590**原子化服务API:** 从API version 20开始,该接口支持在原子化服务中使用。
591
592**系统能力:** SystemCapability.ArkUI.ArkUI.Full
593
594**参数:**
595
596| 参数名 | 类型          | 必填 | 说明         |
597| ------ | ------------- | ---- | ------------ |
598| colorSpace   | [ColorSpace](./arkui-ts/ts-appendix-enums.md#colorspace20) | 是   | 颜色空间,用于指定颜色的色彩空间。使用ColorSpace.DISPLAY_P3,需要对应窗口调用[setWindowColorSpace](./arkts-apis-window-Window.md#setwindowcolorspace9-1)接口,将当前窗口设置为广色域模式。 |
599| red   | number | 是   | 颜色的R分量(红色),值是0~1的浮动数值。 |
600| green | number | 是   | 颜色的G分量(绿色),值是0~1的浮动数值。 |
601| blue  | number | 是   | 颜色的B分量(蓝色),值是0~1的浮动数值。 |
602| alpha | number | 否   | 颜色的A分量(透明度),值是0.0~1.0的浮点数,默认值为1.0,不透明。|
603
604**返回值:**
605
606| 类型          | 说明             |
607| ------------- | ---------------- |
608| [ColorMetrics](#colormetrics12) | ColorMetrics类的实例。|
609
610### resourceColor<sup>12+</sup>
611
612static resourceColor(color: ResourceColor): ColorMetrics
613
614使用资源格式颜色实例化 ColorMetrics 类。
615
616**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
617
618**系统能力:** SystemCapability.ArkUI.ArkUI.Full
619
620**参数:**
621
622| 参数名 | 类型          | 必填 | 说明         |
623| ------ | ------------- | ---- | ------------ |
624| color | [ResourceColor](arkui-ts/ts-types.md#resourcecolor) | 是 | 资源格式颜色。 |
625
626**返回值:**
627
628| 类型          | 说明             |
629| ------------- | ---------------- |
630| [ColorMetrics](#colormetrics12) | ColorMetrics 类的实例。 |
631
632**错误码**:
633
634以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[系统资源错误码](errorcode-system-resource.md)。
635
636| 错误码ID | 错误信息 |
637| -------- | ---------------------------------------- |
638| 401   | Parameter error. Possible cause:1.The type of the input color parameter is not ResourceColor;2.The format of the input color string is not RGB or RGBA.             |
639| 180003   | Failed to obtain the color resource.         |
640
641### blendColor<sup>12+</sup>
642
643blendColor(overlayColor: ColorMetrics): ColorMetrics
644
645颜色混合。
646
647**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
648
649**系统能力:** SystemCapability.ArkUI.ArkUI.Full
650
651**参数:**
652
653| 参数名 | 类型          | 必填 | 说明         |
654| ------ | ------------- | ---- | ------------ |
655| overlayColor | [ColorMetrics](#colormetrics12) | 是 | 叠加颜色的 ColorMetrics 类的实例。 |
656
657**返回值:**
658
659| 类型          | 说明             |
660| ------------- | ---------------- |
661| [ColorMetrics](#colormetrics12) | 混合后的ColorMetrics 类的实例。 |
662
663**错误码**:
664
665以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
666
667| 错误码ID | 错误信息 |
668| -------- | ---------------------------------------- |
669| 401   | Parameter error. The type of the input parameter is not ColorMetrics.                |
670
671### color<sup>12+</sup>
672
673get color(): string
674
675获取ColorMetrics的颜色,返回的是rgba字符串的格式。
676
677**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
678
679**系统能力:** SystemCapability.ArkUI.ArkUI.Full
680
681**返回值:**
682
683| 类型          | 说明             |
684| ------------- | ---------------- |
685| string | rgba字符串格式的颜色。 示例:'rgba(255, 100, 255, 0.5)'|
686
687### red<sup>12+</sup>
688
689get red(): number
690
691获取ColorMetrics颜色的R分量(红色)。
692
693**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
694
695**系统能力:** SystemCapability.ArkUI.ArkUI.Full
696
697**返回值:**
698
699| 类型          | 说明             |
700| ------------- | ---------------- |
701| number | 颜色的R分量(红色),值是0~255的整数。|
702
703### green<sup>12+</sup>
704
705get green(): number
706
707获取ColorMetrics颜色的G分量(绿色)。
708
709**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
710
711**系统能力:** SystemCapability.ArkUI.ArkUI.Full
712
713**返回值:**
714
715| 类型          | 说明             |
716| ------------- | ---------------- |
717| number | 颜色的G分量(绿色),值是0~255的整数。|
718
719### blue<sup>12+</sup>
720
721get blue(): number
722
723获取ColorMetrics颜色的B分量(蓝色)。
724
725**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
726
727**系统能力:** SystemCapability.ArkUI.ArkUI.Full
728
729**返回值:**
730
731| 类型          | 说明             |
732| ------------- | ---------------- |
733| number | 颜色的B分量(蓝色),值是0~255的整数。|
734
735### alpha<sup>12+</sup>
736
737get alpha(): number
738
739获取ColorMetrics颜色的A分量(透明度)。
740
741**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
742
743**系统能力:** SystemCapability.ArkUI.ArkUI.Full
744
745**返回值:**
746
747| 类型          | 说明             |
748| ------------- | ---------------- |
749| number | 颜色的A分量(透明度),值是0~255的整数。|
750
751**示例:**
752
753```ts
754import { ColorMetrics } from '@kit.ArkUI';
755import { BusinessError } from '@kit.BasicServicesKit';
756
757function getBlendColor(baseColor: ResourceColor): ColorMetrics {
758  let sourceColor: ColorMetrics;
759  try {
760    //在使用ColorMetrics的resourceColor和blendColor需要追加捕获异常处理
761    //可能返回的arkui子系统错误码有401和180003
762    sourceColor = ColorMetrics.resourceColor(baseColor).blendColor(ColorMetrics.resourceColor("#19000000"));
763  } catch (error) {
764    console.error("getBlendColor failed, code = " + (error as BusinessError).code + ", message = " +
765    (error as BusinessError).message);
766    sourceColor = ColorMetrics.resourceColor("#19000000");
767  }
768  return sourceColor;
769}
770
771@Entry
772@Component
773struct ColorMetricsSample {
774  build() {
775    Flex({ direction: FlexDirection.Column, alignItems: ItemAlign.Center, justifyContent: FlexAlign.Center }) {
776      Button("ColorMetrics")
777        .width('80%')
778        .align(Alignment.Center)
779        .height(50)
780        .backgroundColor(getBlendColor(Color.Red).color)
781    }
782    .width('100%')
783    .height('100%')
784  }
785}
786```
787## Corners\<T><sup>12+</sup>
788
789用于设置四个角的圆角度数。
790
791**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
792
793**系统能力:** SystemCapability.ArkUI.ArkUI.Full
794
795| 名称        | 类型 | 只读 | 可选 | 说明                   |
796| ----------- | ---- | ---- | ---- | ---------------------- |
797| topLeft     | T    | 否   | 否   | 左上边框的圆角属性。   |
798| topRight    | T    | 否   | 否   | 右上边框的圆角属性。 |
799| bottomLeft  | T    | 否   | 否   | 左下边框的圆角属性。   |
800| bottomRight | T    | 否   | 否   | 右下边框的圆角属性。   |
801
802## CornerRadius<sup>12+</sup>
803
804type CornerRadius = Corners\<Vector2>
805
806设置四个角的圆角度数。
807
808**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
809
810**系统能力:** SystemCapability.ArkUI.ArkUI.Full
811
812| 类型                                         | 说明               |
813| -------------------------------------------- | ------------------ |
814| [Corners](#cornerst12)[\<Vector2>](#vector2) | 四个角的圆角度数。 |
815
816## BorderRadiuses<sup>12+</sup>
817
818type BorderRadiuses = Corners\<number>
819
820设置四个角的圆角度数。
821
822**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
823
824**系统能力:** SystemCapability.ArkUI.ArkUI.Full
825
826| 类型                            | 说明               |
827| ------------------------------- | ------------------ |
828| [Corners\<number>](#cornerst12) | 四个角的圆角度数。 |
829
830## Rect<sup>12+</sup>
831
832type Rect = common2D.Rect
833
834用于设置矩形的形状。
835
836**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
837
838**系统能力:** SystemCapability.ArkUI.ArkUI.Full
839
840| 类型                                                         | 说明       |
841| ------------------------------------------------------------ | ---------- |
842| [common2D.Rect](../apis-arkgraphics2d/js-apis-graphics-common2D.md#rect) | 矩形区域。 |
843
844## RoundRect<sup>12+</sup>
845
846用于设置带有圆角的矩形。
847
848**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
849
850**系统能力:** SystemCapability.ArkUI.ArkUI.Full
851
852| 名称    | 类型                          | 只读 | 可选 | 说明             |
853| ------- | ----------------------------- | ---- | ---- | ---------------- |
854| rect    | [Rect](#rect12)                 | 否   | 否   | 设置矩形的属性。 |
855| corners | [CornerRadius](#cornerradius12) | 否   | 否   | 设置圆角的属性。 |
856
857## Circle<sup>12+</sup>
858
859用于设置圆形的属性。
860
861**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
862
863**系统能力:** SystemCapability.ArkUI.ArkUI.Full
864
865| 名称    | 类型   | 只读 | 可选 | 说明                      |
866| ------- | ------ | ---- | ---- | ------------------------- |
867| centerX | number | 否   | 否   | 圆心x轴的位置,单位为px。 |
868| centerY | number | 否   | 否   | 圆心y轴的位置,单位为px。 |
869| radius  | number | 否   | 否   | 圆形的半径,单位为px。 <br/> 取值范围:[0, +∞)   |
870
871## CommandPath<sup>12+</sup>
872
873用于设置路径绘制的指令。
874
875**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
876
877**系统能力:** SystemCapability.ArkUI.ArkUI.Full
878
879| 名称                                                         | 类型   | 只读 | 可选 | 说明                                                         |
880| ------------------------------------------------------------ | ------ | ---- | ---- | ------------------------------------------------------------ |
881| [commands](./arkui-ts/ts-drawing-components-path.md#commands) | string | 否   | 否   | 路径绘制的指令字符串。像素单位的转换方法请参考[像素单位转换](./arkui-ts/ts-pixel-units.md#像素单位转换)。<br/>单位:px |
882
883## ShapeMask<sup>12+</sup>
884
885用于设置图形遮罩。
886
887### 属性
888
889**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
890
891**系统能力:** SystemCapability.ArkUI.ArkUI.Full
892
893| 名称            | 类型    | 只读 | 可选 | 说明                                                |
894| --------------- | ------ | ---- | ---- | -------------------------------------------------- |
895| fillColor       | number | 否   | 否   | 遮罩的填充颜色,使用ARGB格式。默认值为`0XFF000000`。   |
896| strokeColor     | number | 否   | 否   | 遮罩的边框颜色,使用ARGB格式。默认值为`0XFF000000`。   |
897| strokeWidth     | number | 否   | 否   | 遮罩的边框宽度,单位为px。默认值为0。                  |
898
899### constructor<sup>12+</sup>
900
901constructor()
902
903ShapeMask的构造函数。
904
905**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
906
907**系统能力:** SystemCapability.ArkUI.ArkUI.Full
908
909### setRectShape<sup>12+</sup>
910
911setRectShape(rect: Rect): void
912
913用于设置矩形遮罩。
914
915**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
916
917**系统能力:** SystemCapability.ArkUI.ArkUI.Full
918
919**参数:**
920
921| 参数名 | 类型          | 必填 | 说明         |
922| ------ | ------------- | ---- | ------------ |
923| rect   | [Rect](#rect12) | 是   | 矩形的形状。 |
924
925**示例:**
926
927```ts
928import { RenderNode, FrameNode, NodeController, ShapeMask } from '@kit.ArkUI';
929
930class MyNodeController extends NodeController {
931  private rootNode: FrameNode | null = null;
932
933  makeNode(uiContext: UIContext): FrameNode | null {
934    this.rootNode = new FrameNode(uiContext);
935
936    const mask = new ShapeMask();
937    mask.setRectShape({ left: 0, right: uiContext.vp2px(150), top: 0, bottom: uiContext.vp2px(150) });
938    mask.fillColor = 0X55FF0000;
939
940    const renderNode = new RenderNode();
941    renderNode.frame = { x: 0, y: 0, width: 150, height: 150 };
942    renderNode.backgroundColor = 0XFF00FF00;
943    renderNode.shapeMask = mask;
944
945    const rootRenderNode = this.rootNode.getRenderNode();
946    if (rootRenderNode !== null) {
947      rootRenderNode.appendChild(renderNode);
948    }
949
950    return this.rootNode;
951  }
952}
953
954@Entry
955@Component
956struct Index {
957  private myNodeController: MyNodeController = new MyNodeController();
958
959  build() {
960    Row() {
961      NodeContainer(this.myNodeController)
962    }
963  }
964}
965```
966
967### setRoundRectShape<sup>12+</sup>
968
969setRoundRectShape(roundRect: RoundRect): void
970
971用于设置圆角矩形遮罩。
972
973**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
974
975**系统能力:** SystemCapability.ArkUI.ArkUI.Full
976
977**参数:**
978
979| 参数名    | 类型                    | 必填 | 说明             |
980| --------- | ----------------------- | ---- | ---------------- |
981| roundRect | [RoundRect](#roundrect12) | 是   | 圆角矩形的形状。 |
982
983**示例:**
984
985```ts
986import { RenderNode, FrameNode, NodeController, ShapeMask,RoundRect} from '@kit.ArkUI';
987
988class MyNodeController extends NodeController {
989  private rootNode: FrameNode | null = null;
990
991  makeNode(uiContext: UIContext): FrameNode | null {
992    this.rootNode = new FrameNode(uiContext);
993
994    const mask = new ShapeMask();
995    const roundRect: RoundRect = {
996      rect: { left: 0, top: 0, right: uiContext.vp2px(150), bottom: uiContext.vp2px(150) },
997      corners: {
998        topLeft: { x: 32, y: 32 },
999        topRight: { x: 32, y: 32 },
1000        bottomLeft: { x: 32, y: 32 },
1001        bottomRight: { x: 32, y: 32 }
1002      }
1003    }
1004    mask.setRoundRectShape(roundRect);
1005    mask.fillColor = 0X55FF0000;
1006
1007    const renderNode = new RenderNode();
1008    renderNode.frame = { x: 0, y: 0, width: 150, height: 150 };
1009    renderNode.backgroundColor = 0XFF00FF00;
1010    renderNode.shapeMask = mask;
1011
1012    const rootRenderNode = this.rootNode.getRenderNode();
1013    if (rootRenderNode !== null) {
1014      rootRenderNode.appendChild(renderNode);
1015    }
1016
1017    return this.rootNode;
1018  }
1019}
1020
1021@Entry
1022@Component
1023struct Index {
1024  private myNodeController: MyNodeController = new MyNodeController();
1025
1026  build() {
1027    Row() {
1028      NodeContainer(this.myNodeController)
1029    }
1030  }
1031}
1032```
1033
1034### setCircleShape<sup>12+</sup>
1035
1036setCircleShape(circle: Circle): void
1037
1038用于设置圆形遮罩。
1039
1040**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
1041
1042**系统能力:** SystemCapability.ArkUI.ArkUI.Full
1043
1044**参数:**
1045
1046| 参数名 | 类型              | 必填 | 说明         |
1047| ------ | ----------------- | ---- | ------------ |
1048| circle | [Circle](#circle12) | 是   | 圆形的形状。 |
1049
1050**示例:**
1051
1052```ts
1053import { RenderNode, FrameNode, NodeController, ShapeMask } from '@kit.ArkUI';
1054
1055class MyNodeController extends NodeController {
1056  private rootNode: FrameNode | null = null;
1057
1058  makeNode(uiContext: UIContext): FrameNode | null {
1059    this.rootNode = new FrameNode(uiContext);
1060
1061    const mask = new ShapeMask();
1062    mask.setCircleShape({ centerY: uiContext.vp2px(75), centerX: uiContext.vp2px(75), radius: uiContext.vp2px(75) });
1063    mask.fillColor = 0X55FF0000;
1064
1065    const renderNode = new RenderNode();
1066    renderNode.frame = { x: 0, y: 0, width: 150, height: 150 };
1067    renderNode.backgroundColor = 0XFF00FF00;
1068    renderNode.shapeMask = mask;
1069
1070    const rootRenderNode = this.rootNode.getRenderNode();
1071    if (rootRenderNode !== null) {
1072      rootRenderNode.appendChild(renderNode);
1073    }
1074
1075    return this.rootNode;
1076  }
1077}
1078
1079@Entry
1080@Component
1081struct Index {
1082  private myNodeController: MyNodeController = new MyNodeController();
1083
1084  build() {
1085    Row() {
1086      NodeContainer(this.myNodeController)
1087    }
1088  }
1089}
1090```
1091
1092### setOvalShape<sup>12+</sup>
1093
1094setOvalShape(oval: Rect): void
1095
1096用于设置椭圆形遮罩。
1097
1098**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
1099
1100**系统能力:** SystemCapability.ArkUI.ArkUI.Full
1101
1102**参数:**
1103
1104| 参数名 | 类型          | 必填 | 说明           |
1105| ------ | ------------- | ---- | -------------- |
1106| oval   | [Rect](#rect12) | 是   | 椭圆形的形状。 |
1107
1108**示例:**
1109
1110```ts
1111import { RenderNode, FrameNode, NodeController, ShapeMask } from '@kit.ArkUI';
1112
1113class MyNodeController extends NodeController {
1114  private rootNode: FrameNode | null = null;
1115
1116  makeNode(uiContext: UIContext): FrameNode | null {
1117    this.rootNode = new FrameNode(uiContext);
1118
1119    const mask = new ShapeMask();
1120    mask.setOvalShape({ left: 0, right: uiContext.vp2px(150), top: 0, bottom: uiContext.vp2px(100) });
1121    mask.fillColor = 0X55FF0000;
1122
1123    const renderNode = new RenderNode();
1124    renderNode.frame = { x: 0, y: 0, width: 150, height: 150 };
1125    renderNode.backgroundColor = 0XFF00FF00;
1126    renderNode.shapeMask = mask;
1127
1128    const rootRenderNode = this.rootNode.getRenderNode();
1129    if (rootRenderNode !== null) {
1130      rootRenderNode.appendChild(renderNode);
1131    }
1132
1133    return this.rootNode;
1134  }
1135}
1136
1137@Entry
1138@Component
1139struct Index {
1140  private myNodeController: MyNodeController = new MyNodeController();
1141
1142  build() {
1143    Row() {
1144      NodeContainer(this.myNodeController)
1145    }
1146  }
1147}
1148```
1149
1150### setCommandPath<sup>12+</sup>
1151
1152setCommandPath(path: CommandPath): void
1153
1154用于设置路径绘制指令。
1155
1156**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
1157
1158**系统能力:** SystemCapability.ArkUI.ArkUI.Full
1159
1160**参数:**
1161
1162| 参数名 | 类型                        | 必填 | 说明           |
1163| ------ | --------------------------- | ---- | -------------- |
1164| path   | [CommandPath](#commandpath12) | 是   | 路径绘制指令。 |
1165
1166**示例:**
1167
1168```ts
1169import { RenderNode, FrameNode, NodeController, ShapeMask } from '@kit.ArkUI';
1170
1171const mask = new ShapeMask();
1172mask.setCommandPath({ commands: "M100 0 L0 100 L50 200 L150 200 L200 100 Z" });
1173mask.fillColor = 0X55FF0000;
1174
1175const renderNode = new RenderNode();
1176renderNode.frame = { x: 0, y: 0, width: 150, height: 150 };
1177renderNode.backgroundColor = 0XFF00FF00;
1178renderNode.shapeMask = mask;
1179
1180
1181class MyNodeController extends NodeController {
1182  private rootNode: FrameNode | null = null;
1183
1184  makeNode(uiContext: UIContext): FrameNode | null {
1185    this.rootNode = new FrameNode(uiContext);
1186
1187    const rootRenderNode = this.rootNode.getRenderNode();
1188    if (rootRenderNode !== null) {
1189      rootRenderNode.appendChild(renderNode);
1190    }
1191
1192    return this.rootNode;
1193  }
1194}
1195
1196@Entry
1197@Component
1198struct Index {
1199  private myNodeController: MyNodeController = new MyNodeController();
1200
1201  build() {
1202    Row() {
1203      NodeContainer(this.myNodeController)
1204    }
1205  }
1206}
1207```
1208
1209## ShapeClip<sup>12+</sup>
1210
1211用于设置图形裁剪。
1212
1213### constructor<sup>12+</sup>
1214
1215constructor()
1216
1217ShapeClip的构造函数。
1218
1219**系统能力:** SystemCapability.ArkUI.ArkUI.Full
1220
1221**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
1222
1223### setRectShape<sup>12+</sup>
1224
1225setRectShape(rect: Rect): void
1226
1227用于裁剪矩形。
1228
1229**系统能力:** SystemCapability.ArkUI.ArkUI.Full
1230
1231**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
1232
1233**参数:**
1234
1235| 参数名 | 类型          | 必填 | 说明         |
1236| ------ | ------------- | ---- | ------------ |
1237| rect   | [Rect](#rect12) | 是   | 矩形的形状。 |
1238
1239**示例:**
1240
1241```ts
1242import { RenderNode, FrameNode, NodeController, ShapeClip } from '@kit.ArkUI';
1243
1244const clip = new ShapeClip();
1245clip.setCommandPath({ commands: "M100 0 L0 100 L50 200 L150 200 L200 100 Z" });
1246
1247const renderNode = new RenderNode();
1248renderNode.frame = {
1249  x: 0,
1250  y: 0,
1251  width: 150,
1252  height: 150
1253};
1254renderNode.backgroundColor = 0XFF00FF00;
1255renderNode.shapeClip = clip;
1256const shapeClip = renderNode.shapeClip;
1257
1258class MyNodeController extends NodeController {
1259  private rootNode: FrameNode | null = null;
1260
1261  makeNode(uiContext: UIContext): FrameNode | null {
1262    this.rootNode = new FrameNode(uiContext);
1263
1264    const rootRenderNode = this.rootNode.getRenderNode();
1265    if (rootRenderNode !== null) {
1266      rootRenderNode.appendChild(renderNode);
1267    }
1268
1269    return this.rootNode;
1270  }
1271}
1272
1273@Entry
1274@Component
1275struct Index {
1276  private myNodeController: MyNodeController = new MyNodeController();
1277
1278  build() {
1279    Column() {
1280      NodeContainer(this.myNodeController)
1281        .borderWidth(1)
1282      Button("setRectShape")
1283        .onClick(() => {
1284          shapeClip.setRectShape({
1285            left: 0,
1286            right: 150,
1287            top: 0,
1288            bottom: 150
1289          });
1290          renderNode.shapeClip = shapeClip;
1291        })
1292    }
1293  }
1294}
1295```
1296
1297### setRoundRectShape<sup>12+</sup>
1298
1299setRoundRectShape(roundRect: RoundRect): void
1300
1301用于裁剪圆角矩形。
1302
1303**系统能力:** SystemCapability.ArkUI.ArkUI.Full
1304
1305**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
1306
1307**参数:**
1308
1309| 参数名    | 类型                    | 必填 | 说明             |
1310| --------- | ----------------------- | ---- | ---------------- |
1311| roundRect | [RoundRect](#roundrect12) | 是   | 圆角矩形的形状。 |
1312
1313**示例:**
1314```ts
1315import { RenderNode, FrameNode, NodeController, ShapeClip } from '@kit.ArkUI';
1316
1317const clip = new ShapeClip();
1318clip.setCommandPath({ commands: "M100 0 L0 100 L50 200 L150 200 L200 100 Z" });
1319
1320const renderNode = new RenderNode();
1321renderNode.frame = {
1322  x: 0,
1323  y: 0,
1324  width: 150,
1325  height: 150
1326};
1327renderNode.backgroundColor = 0XFF00FF00;
1328renderNode.shapeClip = clip;
1329
1330class MyNodeController extends NodeController {
1331  private rootNode: FrameNode | null = null;
1332
1333  makeNode(uiContext: UIContext): FrameNode | null {
1334    this.rootNode = new FrameNode(uiContext);
1335
1336    const rootRenderNode = this.rootNode.getRenderNode();
1337    if (rootRenderNode !== null) {
1338      rootRenderNode.appendChild(renderNode);
1339    }
1340
1341    return this.rootNode;
1342  }
1343}
1344
1345@Entry
1346@Component
1347struct Index {
1348  private myNodeController: MyNodeController = new MyNodeController();
1349
1350  build() {
1351    Column() {
1352      NodeContainer(this.myNodeController)
1353        .borderWidth(1)
1354      Button("setRoundRectShape")
1355        .onClick(() => {
1356          renderNode.shapeClip.setRoundRectShape({
1357            rect: {
1358              left: 0,
1359              top: 0,
1360              right: this.getUIContext().vp2px(150),
1361              bottom: this.getUIContext().vp2px(150)
1362            },
1363            corners: {
1364              topLeft: { x: 32, y: 32 },
1365              topRight: { x: 32, y: 32 },
1366              bottomLeft: { x: 32, y: 32 },
1367              bottomRight: { x: 32, y: 32 }
1368            }
1369          });
1370        })
1371    }
1372  }
1373}
1374```
1375
1376### setCircleShape<sup>12+</sup>
1377
1378setCircleShape(circle: Circle): void
1379
1380用于裁剪圆形。
1381
1382**系统能力:** SystemCapability.ArkUI.ArkUI.Full
1383
1384**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
1385
1386**参数:**
1387
1388| 参数名 | 类型              | 必填 | 说明         |
1389| ------ | ----------------- | ---- | ------------ |
1390| circle | [Circle](#circle12) | 是   | 圆形的形状。 |
1391
1392**示例:**
1393
1394```ts
1395import { RenderNode, FrameNode, NodeController, ShapeClip } from '@kit.ArkUI';
1396
1397const clip = new ShapeClip();
1398clip.setCommandPath({ commands: "M100 0 L0 100 L50 200 L150 200 L200 100 Z" });
1399
1400const renderNode = new RenderNode();
1401renderNode.frame = {
1402  x: 0,
1403  y: 0,
1404  width: 150,
1405  height: 150
1406};
1407renderNode.backgroundColor = 0XFF00FF00;
1408renderNode.shapeClip = clip;
1409
1410class MyNodeController extends NodeController {
1411  private rootNode: FrameNode | null = null;
1412
1413  makeNode(uiContext: UIContext): FrameNode | null {
1414    this.rootNode = new FrameNode(uiContext);
1415
1416    const rootRenderNode = this.rootNode.getRenderNode();
1417    if (rootRenderNode !== null) {
1418      rootRenderNode.appendChild(renderNode);
1419    }
1420
1421    return this.rootNode;
1422  }
1423}
1424
1425@Entry
1426@Component
1427struct Index {
1428  private myNodeController: MyNodeController = new MyNodeController();
1429
1430  build() {
1431    Column() {
1432      NodeContainer(this.myNodeController)
1433        .borderWidth(1)
1434      Button("setCircleShape")
1435        .onClick(() => {
1436          renderNode.shapeClip.setCircleShape({ centerY: 75, centerX: 75, radius: 75 });
1437
1438        })
1439    }
1440  }
1441}
1442```
1443
1444### setOvalShape<sup>12+</sup>
1445
1446setOvalShape(oval: Rect): void
1447
1448用于裁剪椭圆形。
1449
1450**系统能力:** SystemCapability.ArkUI.ArkUI.Full
1451
1452**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
1453
1454**参数:**
1455
1456| 参数名 | 类型          | 必填 | 说明           |
1457| ------ | ------------- | ---- | -------------- |
1458| oval   | [Rect](#rect12) | 是   | 椭圆形的形状。 |
1459
1460**示例:**
1461
1462```ts
1463import { RenderNode, FrameNode, NodeController, ShapeClip } from '@kit.ArkUI';
1464
1465const clip = new ShapeClip();
1466clip.setCommandPath({ commands: "M100 0 L0 100 L50 200 L150 200 L200 100 Z" });
1467
1468const renderNode = new RenderNode();
1469renderNode.frame = {
1470  x: 0,
1471  y: 0,
1472  width: 150,
1473  height: 150
1474};
1475renderNode.backgroundColor = 0XFF00FF00;
1476renderNode.shapeClip = clip;
1477
1478class MyNodeController extends NodeController {
1479  private rootNode: FrameNode | null = null;
1480
1481  makeNode(uiContext: UIContext): FrameNode | null {
1482    this.rootNode = new FrameNode(uiContext);
1483
1484    const rootRenderNode = this.rootNode.getRenderNode();
1485    if (rootRenderNode !== null) {
1486      rootRenderNode.appendChild(renderNode);
1487    }
1488
1489    return this.rootNode;
1490  }
1491}
1492
1493@Entry
1494@Component
1495struct Index {
1496  private myNodeController: MyNodeController = new MyNodeController();
1497
1498  build() {
1499    Column() {
1500      NodeContainer(this.myNodeController)
1501        .borderWidth(1)
1502      Button("setOvalShape")
1503        .onClick(() => {
1504          renderNode.shapeClip.setOvalShape({
1505            left: 0,
1506            right: this.getUIContext().vp2px(150),
1507            top: 0,
1508            bottom: this.getUIContext().vp2px(100)
1509          });
1510        })
1511    }
1512  }
1513}
1514```
1515
1516### setCommandPath<sup>12+</sup>
1517
1518setCommandPath(path: CommandPath): void
1519
1520用于裁剪路径绘制指令。
1521
1522**系统能力:** SystemCapability.ArkUI.ArkUI.Full
1523
1524**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
1525
1526**参数:**
1527
1528| 参数名 | 类型                        | 必填 | 说明           |
1529| ------ | --------------------------- | ---- | -------------- |
1530| path   | [CommandPath](#commandpath12) | 是   | 路径绘制指令。 |
1531
1532**示例:**
1533
1534```ts
1535import { RenderNode, FrameNode, NodeController, ShapeClip } from '@kit.ArkUI';
1536
1537const clip = new ShapeClip();
1538clip.setCommandPath({ commands: "M100 0 L0 100 L50 200 L150 200 L200 100 Z" });
1539
1540const renderNode = new RenderNode();
1541renderNode.frame = { x: 0, y: 0, width: 150, height: 150 };
1542renderNode.backgroundColor = 0XFF00FF00;
1543renderNode.shapeClip = clip;
1544
1545class MyNodeController extends NodeController {
1546  private rootNode: FrameNode | null = null;
1547
1548  makeNode(uiContext: UIContext): FrameNode | null {
1549    this.rootNode = new FrameNode(uiContext);
1550
1551    const rootRenderNode = this.rootNode.getRenderNode();
1552    if (rootRenderNode !== null) {
1553      rootRenderNode.appendChild(renderNode);
1554    }
1555
1556    return this.rootNode;
1557  }
1558}
1559
1560@Entry
1561@Component
1562struct Index {
1563  private myNodeController: MyNodeController = new MyNodeController();
1564
1565  build() {
1566    Column() {
1567      NodeContainer(this.myNodeController)
1568        .borderWidth(1)
1569      Button("setCommandPath")
1570        .onClick(()=>{
1571          renderNode.shapeClip.setCommandPath({ commands: "M100 0 L0 100 L50 200 L150 200 L200 100 Z" });
1572        })
1573    }
1574  }
1575}
1576```
1577
1578## edgeColors<sup>12+</sup>
1579
1580edgeColors(all: number): Edges\<number>
1581
1582用于生成边框颜色均设置为传入值的边框颜色对象。
1583
1584**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
1585
1586**系统能力:** SystemCapability.ArkUI.ArkUI.Full
1587
1588**参数:**
1589
1590| 参数名 | 类型   | 必填 | 说明                 |
1591| ------ | ------ | ---- | -------------------- |
1592| all    | number | 是   | 边框颜色,ARGB格式,示例:0xffff00ff。<br/>取值范围:[0, 0xffffffff] |
1593
1594**返回值:**
1595
1596| 类型                     | 说明                                   |
1597| ------------------------ | -------------------------------------- |
1598| [Edges\<number>](#edgest12) | 边框颜色均设置为传入值的边框颜色对象。 |
1599
1600**示例:**
1601
1602```ts
1603import { RenderNode, FrameNode, NodeController, edgeColors } from '@kit.ArkUI';
1604
1605const renderNode = new RenderNode();
1606renderNode.frame = { x: 0, y: 0, width: 150, height: 150 };
1607renderNode.backgroundColor = 0XFF00FF00;
1608renderNode.borderWidth = { left: 8, top: 8, right: 8, bottom: 8 };
1609renderNode.borderColor = edgeColors(0xFF0000FF);
1610
1611
1612class MyNodeController extends NodeController {
1613  private rootNode: FrameNode | null = null;
1614
1615  makeNode(uiContext: UIContext): FrameNode | null {
1616    this.rootNode = new FrameNode(uiContext);
1617
1618    const rootRenderNode = this.rootNode.getRenderNode();
1619    if (rootRenderNode !== null) {
1620      rootRenderNode.appendChild(renderNode);
1621    }
1622
1623    return this.rootNode;
1624  }
1625}
1626
1627@Entry
1628@Component
1629struct Index {
1630  private myNodeController: MyNodeController = new MyNodeController();
1631
1632  build() {
1633    Row() {
1634      NodeContainer(this.myNodeController)
1635    }
1636  }
1637}
1638```
1639
1640## edgeWidths<sup>12+</sup>
1641
1642edgeWidths(all: number): Edges\<number>
1643
1644用于生成边框宽度均设置为传入值的边框宽度对象。
1645
1646**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
1647
1648**系统能力:** SystemCapability.ArkUI.ArkUI.Full
1649
1650**参数:**
1651
1652| 参数名 | 类型   | 必填 | 说明                 |
1653| ------ | ------ | ---- | -------------------- |
1654| all    | number | 是   | 边框宽度,单位为vp。<br/>取值范围:[0, +∞) |
1655
1656**返回值:**
1657
1658| 类型                     | 说明                                   |
1659| ------------------------ | -------------------------------------- |
1660| [Edges\<number>](#edgest12) | 边框宽度均设置为传入值的边框宽度对象。 |
1661
1662**示例:**
1663
1664```ts
1665import { RenderNode, FrameNode, NodeController, edgeWidths } from '@kit.ArkUI';
1666
1667const renderNode = new RenderNode();
1668renderNode.frame = { x: 0, y: 0, width: 150, height: 150 };
1669renderNode.backgroundColor = 0XFF00FF00;
1670renderNode.borderWidth = edgeWidths(8);
1671renderNode.borderColor = { left: 0xFF0000FF, top: 0xFF0000FF, right: 0xFF0000FF, bottom: 0xFF0000FF };
1672
1673
1674class MyNodeController extends NodeController {
1675  private rootNode: FrameNode | null = null;
1676
1677  makeNode(uiContext: UIContext): FrameNode | null {
1678    this.rootNode = new FrameNode(uiContext);
1679
1680    const rootRenderNode = this.rootNode.getRenderNode();
1681    if (rootRenderNode !== null) {
1682      rootRenderNode.appendChild(renderNode);
1683    }
1684
1685    return this.rootNode;
1686  }
1687}
1688
1689@Entry
1690@Component
1691struct Index {
1692  private myNodeController: MyNodeController = new MyNodeController();
1693
1694  build() {
1695    Row() {
1696      NodeContainer(this.myNodeController)
1697    }
1698  }
1699}
1700```
1701
1702## borderStyles<sup>12+</sup>
1703
1704borderStyles(all: BorderStyle): Edges\<BorderStyle>
1705
1706用于生成边框样式均设置为传入值的边框样式对象。
1707
1708**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
1709
1710**系统能力:** SystemCapability.ArkUI.ArkUI.Full
1711
1712**参数:**
1713
1714| 参数名 | 类型                                                       | 必填 | 说明       |
1715| ------ | ---------------------------------------------------------- | ---- | ---------- |
1716| all    | [BorderStyle](./arkui-ts/ts-appendix-enums.md#borderstyle) | 是   | 边框样式。 |
1717
1718**返回值:**
1719
1720| 类型                                                                        | 说明                                   |
1721| --------------------------------------------------------------------------- | -------------------------------------- |
1722| [Edges](#edgest12)<[BorderStyle](./arkui-ts/ts-appendix-enums.md#borderstyle)> | 边框样式均设置为传入值的边框样式对象。 |
1723
1724**示例:**
1725
1726```ts
1727import { RenderNode, FrameNode, NodeController, borderStyles } from '@kit.ArkUI';
1728
1729const renderNode = new RenderNode();
1730renderNode.frame = { x: 0, y: 0, width: 150, height: 150 };
1731renderNode.backgroundColor = 0XFF00FF00;
1732renderNode.borderWidth = { left: 8, top: 8, right: 8, bottom: 8 };
1733renderNode.borderColor = { left: 0xFF0000FF, top: 0xFF0000FF, right: 0xFF0000FF, bottom: 0xFF0000FF };
1734renderNode.borderStyle = borderStyles(BorderStyle.Dotted);
1735
1736
1737class MyNodeController extends NodeController {
1738  private rootNode: FrameNode | null = null;
1739
1740  makeNode(uiContext: UIContext): FrameNode | null {
1741    this.rootNode = new FrameNode(uiContext);
1742
1743    const rootRenderNode = this.rootNode.getRenderNode();
1744    if (rootRenderNode !== null) {
1745      rootRenderNode.appendChild(renderNode);
1746    }
1747
1748    return this.rootNode;
1749  }
1750}
1751
1752@Entry
1753@Component
1754struct Index {
1755  private myNodeController: MyNodeController = new MyNodeController();
1756
1757  build() {
1758    Row() {
1759      NodeContainer(this.myNodeController)
1760    }
1761  }
1762}
1763```
1764
1765## borderRadiuses<sup>12+</sup>
1766
1767borderRadiuses(all: number): BorderRadiuses
1768
1769用于生成边框圆角均设置为传入值的边框圆角对象。
1770
1771**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
1772
1773**系统能力:** SystemCapability.ArkUI.ArkUI.Full
1774
1775**参数:**
1776
1777| 参数名 | 类型   | 必填 | 说明       |
1778| ------ | ------ | ---- | ---------- |
1779| all    | number | 是   | 边框圆角。<br/>单位:vp<br/>取值范围:[0, +∞) |
1780
1781**返回值:**
1782
1783| 类型                              | 说明                                   |
1784| --------------------------------- | -------------------------------------- |
1785| [BorderRadiuses](#borderradiuses12) | 边框圆角均设置为传入值的边框圆角对象。 |
1786
1787**示例:**
1788
1789```ts
1790import { RenderNode, FrameNode, NodeController, borderRadiuses }  from '@kit.ArkUI';
1791
1792const renderNode = new RenderNode();
1793renderNode.frame = { x: 0, y: 0, width: 150, height: 150 };
1794renderNode.backgroundColor = 0XFF00FF00;
1795renderNode.borderRadius = borderRadiuses(32);
1796
1797
1798class MyNodeController extends NodeController {
1799  private rootNode: FrameNode | null = null;
1800
1801  makeNode(uiContext: UIContext): FrameNode | null {
1802    this.rootNode = new FrameNode(uiContext);
1803
1804    const rootRenderNode = this.rootNode.getRenderNode();
1805    if (rootRenderNode !== null) {
1806      rootRenderNode.appendChild(renderNode);
1807    }
1808
1809    return this.rootNode;
1810  }
1811}
1812
1813@Entry
1814@Component
1815struct Index {
1816  private myNodeController: MyNodeController = new MyNodeController();
1817
1818  build() {
1819    Row() {
1820      NodeContainer(this.myNodeController)
1821    }
1822  }
1823}
1824```
1825