• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# Graphics
2
3自定义节点相关属性定义的详细信息。
4
5> **说明:**
6>
7> 本模块首批接口从API version 11开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。
8
9## 导入模块
10
11```ts
12import { DrawContext, Size, Offset, Position, Pivot, Scale, Translation, Matrix4, Rotation, Frame } from "@ohos.arkui.node";
13```
14
15## Size
16
17用于返回组件布局大小的宽和高,单位为vp。
18
19**系统能力:** SystemCapability.ArkUI.ArkUI.Full
20
21| 名称   | 类型   | 可读 | 可写 | 说明                   |
22| ------ | ------ | ---- | ---- | ---------------------- |
23| width  | number | 是   | 是   | 组件的宽度,单位为vp。 |
24| height | number | 是   | 是   | 组件的高度,单位为vp。 |
25
26## Position
27
28用于设置或返回组件的位置。
29
30**系统能力:** SystemCapability.ArkUI.ArkUI.Full
31
32| 名称 | 类型   | 可读 | 可写 | 说明                     |
33| ---- | ------ | ---- | ---- | ------------------------ |
34| x    | number | 是   | 是   | 水平方向位置,单位为vp。 |
35| y    | number | 是   | 是   | 垂直方向位置,单位为vp。 |
36
37## Frame
38
39用于设置或返回组件的布局大小和位置,单位为vp。
40
41**系统能力:** SystemCapability.ArkUI.ArkUI.Full
42
43| 名称   | 类型   | 可读 | 可写 | 说明                     |
44| ------ | ------ | ---- | ---- | ------------------------ |
45| x      | number | 是   | 是   | 水平方向位置,单位为vp。 |
46| y      | number | 是   | 是   | 垂直方向位置,单位为vp。 |
47| width  | number | 是   | 是   | 组件的宽度,单位为vp。   |
48| height | number | 是   | 是   | 组件的高度,单位为vp。   |
49
50## Pivot
51
52用于设置组件的轴心坐标,轴心会作为组件的旋转/缩放中心点,影响旋转和缩放效果。
53
54**系统能力:** SystemCapability.ArkUI.ArkUI.Full
55
56| 名称 | 类型   | 可读 | 可写 | 说明                                                         |
57| ---- | ------ | ---- | ---- | ------------------------------------------------------------ |
58| x    | number | 是   | 是   | 轴心的X轴坐标。该参数为浮点数,默认值为0.5, 取值范围为[0.0, 1.0]。 |
59| y    | number | 是   | 是   | 轴心的Y轴坐标。该参数为浮点数,默认值为0.5, 取值范围为[0.0, 1.0]。 |
60
61## Scale
62
63用于设置组件的缩放比例。
64
65**系统能力:** SystemCapability.ArkUI.ArkUI.Full
66
67| 名称 | 类型   | 可读 | 可写 | 说明                                         |
68| ---- | ------ | ---- | ---- | -------------------------------------------- |
69| x    | number | 是   | 是   | X轴的缩放参数。该参数为浮点数,默认值为1.0。 |
70| y    | number | 是   | 是   | Y轴的缩放参数。该参数为浮点数,默认值为1.0。 |
71
72## Translation
73
74用于设置组件的平移量。
75
76**系统能力:** SystemCapability.ArkUI.ArkUI.Full
77
78| 名称 | 类型   | 可读 | 可写 | 说明                         |
79| ---- | ------ | ---- | ---- | ---------------------------- |
80| x    | number | 是   | 是   | 水平方向的平移量,单位为vp。 |
81| y    | number | 是   | 是   | 垂直方向的平移量,单位为vp。 |
82
83## Rotation
84
85用于设置组件的旋转角度。
86
87**系统能力:** SystemCapability.ArkUI.ArkUI.Full
88
89| 名称 | 类型   | 可读 | 可写 | 说明                           |
90| ---- | ------ | ---- | ---- | ------------------------------ |
91| x    | number | 是   | 是   | x 轴方向的旋转角度,单位为vp。 |
92| y    | number | 是   | 是   | y 轴方向的旋转角度,单位为vp。 |
93| z    | number | 是   | 是   | z 轴方向的旋转角度,单位为vp。 |
94
95## Offset
96
97用于设置组件或效果的偏移。
98
99**系统能力:** SystemCapability.ArkUI.ArkUI.Full
100
101
102| 名称 | 类型   | 可读 | 可写 | 说明                        |
103| ---- | ------ | ---- | ---- | --------------------------- |
104| x    | number | 是   | 是   | x轴方向的偏移量,单位为px。 |
105| y    | number | 是   | 是   | y轴方向的偏移量,单位为px。 |
106
107## Matrix4
108
109用于设置组件的变换信息,该类型为一个 4x4 矩阵,使用一个长度为16的`number[]`进行表示,例如:
110```ts
111const transform: Matrix4 = [
112  1, 0, 45, 0,
113  0, 1,  0, 0,
114  0, 0,  1, 0,
115  0, 0,  0, 1
116]
117```
118
119**系统能力:** SystemCapability.ArkUI.ArkUI.Full
120
121## DrawContext
122
123图形绘制上下文,提供绘制所需的画布宽度和高度。
124
125### size
126
127get size(): Size
128
129获取画布的宽度和高度。
130
131**系统能力:** SystemCapability.ArkUI.ArkUI.Full
132
133**返回值:**
134
135| 类型          | 说明             |
136| ------------- | ---------------- |
137| [Size](#size) | 画布的宽度和高度。 |
138
139### canvas
140
141get canvas(): Canvas
142
143获取用于绘制的画布。
144
145**系统能力:** SystemCapability.ArkUI.ArkUI.Full
146
147**返回值:**
148
149| 类型          | 说明             |
150| ------------- | ---------------- |
151| [Canvas](../apis-arkgraphics2d/js-apis-graphics-drawing.md#canvas) | 用于绘制的画布。 |
152
153**示例:**
154
155```ts
156import { RenderNode, FrameNode, NodeController, DrawContext } from "@ohos.arkui.node";
157
158class MyRenderNode extends RenderNode {
159  flag: boolean = false;
160
161  draw(context: DrawContext) {
162    const size = context.size;
163    const canvas = context.canvas;
164  }
165}
166
167const renderNode = new MyRenderNode();
168renderNode.frame = { x: 0, y: 0, width: 100, height: 100 };
169renderNode.backgroundColor = 0xffff0000;
170
171class MyNodeController extends NodeController {
172  private rootNode: FrameNode | null = null;
173
174  makeNode(uiContext: UIContext): FrameNode | null {
175    this.rootNode = new FrameNode(uiContext);
176
177    const rootRenderNode = this.rootNode.getRenderNode();
178    if (rootRenderNode !== null) {
179      rootRenderNode.appendChild(renderNode);
180    }
181
182    return this.rootNode;
183  }
184}
185
186@Entry
187@Component
188struct Index {
189  private myNodeController: MyNodeController = new MyNodeController();
190
191  build() {
192    Row() {
193      NodeContainer(this.myNodeController)
194    }
195  }
196}
197```
198