Graphics

自定义节点相关属性定义的详细信息。

说明:

本模块首批接口从API version 11开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。

导入模块

import { DrawContext, Size, Offset, Position, Pivot, Scale, Translation, Matrix4, Rotation, Frame } from "@ohos.arkui.node";

Size

用于返回组件布局大小的宽和高,单位为vp。

系统能力: SystemCapability.ArkUI.ArkUI.Full

名称 类型 可读 可写 说明
width number 组件的宽度,单位为vp。
height number 组件的高度,单位为vp。

Position

用于设置或返回组件的位置。

系统能力: SystemCapability.ArkUI.ArkUI.Full

名称 类型 可读 可写 说明
x number 水平方向位置,单位为vp。
y number 垂直方向位置,单位为vp。

Frame

用于设置或返回组件的布局大小和位置,单位为vp。

系统能力: SystemCapability.ArkUI.ArkUI.Full

名称 类型 可读 可写 说明
x number 水平方向位置,单位为vp。
y number 垂直方向位置,单位为vp。
width number 组件的宽度,单位为vp。
height number 组件的高度,单位为vp。

Pivot

用于设置组件的轴心坐标,轴心会作为组件的旋转/缩放中心点,影响旋转和缩放效果。

系统能力: SystemCapability.ArkUI.ArkUI.Full

名称 类型 可读 可写 说明
x number 轴心的X轴坐标。该参数为浮点数,默认值为0.5, 取值范围为[0.0, 1.0]。
y number 轴心的Y轴坐标。该参数为浮点数,默认值为0.5, 取值范围为[0.0, 1.0]。

Scale

用于设置组件的缩放比例。

系统能力: SystemCapability.ArkUI.ArkUI.Full

名称 类型 可读 可写 说明
x number X轴的缩放参数。该参数为浮点数,默认值为1.0。
y number Y轴的缩放参数。该参数为浮点数,默认值为1.0。

Translation

用于设置组件的平移量。

系统能力: SystemCapability.ArkUI.ArkUI.Full

名称 类型 可读 可写 说明
x number 水平方向的平移量,单位为vp。
y number 垂直方向的平移量,单位为vp。

Rotation

用于设置组件的旋转角度。

系统能力: SystemCapability.ArkUI.ArkUI.Full

名称 类型 可读 可写 说明
x number x 轴方向的旋转角度,单位为vp。
y number y 轴方向的旋转角度,单位为vp。
z number z 轴方向的旋转角度,单位为vp。

Offset

用于设置组件或效果的偏移。

系统能力: SystemCapability.ArkUI.ArkUI.Full

名称 类型 可读 可写 说明
x number x轴方向的偏移量,单位为vp。
y number y轴方向的偏移量,单位为vp。

Matrix4

用于设置组件的变换信息,该类型为一个 4x4 矩阵,使用一个长度为16的number[]进行表示,例如:

const transform: Matrix4 = [
  1, 0, 45, 0,
  0, 1,  0, 0,
  0, 0,  1, 0,
  0, 0,  0, 1
]

系统能力: SystemCapability.ArkUI.ArkUI.Full

DrawContext

图形绘制上下文,提供绘制所需的画布宽度和高度。

size

get size(): Size

获取画布的宽度和高度。

系统能力: SystemCapability.ArkUI.ArkUI.Full

返回值:

类型 说明
Size 画布的宽度和高度。

canvas

get canvas(): Canvas

获取用于绘制的画布。

系统能力: SystemCapability.ArkUI.ArkUI.Full

返回值:

类型 说明
Canvas 用于绘制的画布。

示例:

import { RenderNode, FrameNode, NodeController, DrawContext } from "@ohos.arkui.node";

class MyRenderNode extends RenderNode {
  flag: boolean = false;

  draw(context: DrawContext) {
    const size = context.size;
    const canvas = context.canvas;
  }
}

const renderNode = new MyRenderNode();
renderNode.frame = { x: 0, y: 0, width: 100, height: 100 };
renderNode.backgroundColor = 0xffff0000;

class MyNodeController extends NodeController {
  private rootNode: FrameNode | null = null;

  makeNode(uiContext: UIContext): FrameNode | null {
    this.rootNode = new FrameNode(uiContext);

    const rootRenderNode = this.rootNode.getRenderNode();
    if (rootRenderNode !== null) {
      rootRenderNode.appendChild(renderNode);
    }

    return this.rootNode;
  }
}

@Entry
@Component
struct Index {
  private myNodeController: MyNodeController = new MyNodeController();

  build() {
    Row() {
      NodeContainer(this.myNodeController)
    }
  }
}