openharmony 鸿蒙 js-apis-arkui-componentUtils

2025-06-12 浏览 (1)

@ohos.arkui.componentUtils (componentUtils)

提供获取组件绘制区域坐标和大小的能力。

说明:

从API Version 10开始支持。后续版本如有新增内容,则采用上角标单独标记该内容的起始版本。

本模块功能依赖UI的执行上下文,不可在UI上下文不明确的地方使用,参见UIContext说明。

导入模块

import { componentUtils } from '@kit.ArkUI';

componentUtils.getRectangleById(deprecated)

getRectangleById(id: string): ComponentInfo

根据组件ID获取组件实例对象,通过组件实例对象将获取的坐标位置和大小同步返回给开发者。

说明:

从API version 18开始废弃,建议使用UIContext中的getComponentUtils获取ComponentUtils实例,再通过此实例调用替代方法getRectangleById

从API version 10开始,可以通过使用UIContext中的getComponentUtils方法获取当前UI上下文关联的ComponentUtils对象。该接口需要在目标组件布局、完成以后获取目标组件区域大小信息,建议在@ohos.arkui.inspector(布局回调)接收到布局完成的通知以后使用该接口。

原子化服务API: 从API version 11开始,该接口支持在原子化服务中使用。

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

参数:

参数名类型必填说明
idstring指定组件id。

返回值:

类型说明
ComponentInfo组件大小、位置、平移缩放旋转及仿射矩阵属性信息。

错误码:

以下错误码的详细介绍请参见通用错误码错误码。

错误码ID错误信息
100001UI execution context not found.

示例:

import { componentUtils } from '@kit.ArkUI';
let modePosition:componentUtils.ComponentInfo = componentUtils.getRectangleById("onClick");

ComponentInfo

原子化服务API: 从API version 11开始,该接口支持在原子化服务中使用。

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

名称类型必填说明
sizeSize组件大小。
localOffsetOffset组件相对于父组件信息。
windowOffsetOffset组件相对于窗口信息。
screenOffsetOffset组件相对于屏幕信息。
translateTranslateResult组件平移信息。
scaleScaleResult组件缩放信息。
rotateRotateResult组件旋转信息。
transformMatrix4Result仿射矩阵信息,根据入参创建的四阶矩阵对象。

Size

原子化服务API: 从API version 11开始,该接口支持在原子化服务中使用。

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

名称类型必填说明
widthnumber组件宽度。
单位: px
heightnumber组件高度。
单位: px

Offset

原子化服务API: 从API version 11开始,该接口支持在原子化服务中使用。

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

名称类型必填说明
xnumberx点坐标。
单位: px
ynumbery点坐标。
单位: px

TranslateResult

原子化服务API: 从API version 11开始,该接口支持在原子化服务中使用。

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

名称类型必填说明
xnumberx轴平移距离。
单位: px
ynumbery轴平移距离。
单位: px
znumberz轴平移距离。
单位: px

ScaleResult

原子化服务API: 从API version 11开始,该接口支持在原子化服务中使用。

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

名称类型必填说明
xnumberx轴缩放倍数。
单位: px
ynumbery轴缩放倍数。
单位: px
znumberz轴缩放倍数。
单位: px
centerXnumber变换中心点x轴坐标。
单位: px
centerYnumber变换中心点y轴坐标。
单位: px

RotateResult

原子化服务API: 从API version 11开始,该接口支持在原子化服务中使用。

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

名称类型必填说明
xnumber旋转轴向量x坐标。
单位: px
ynumber旋转轴向量y坐标。
单位: px
znumber旋转轴向量z坐标。
单位: px
anglenumber旋转角度。
单位: px
centerXnumber变换中心点x轴坐标。
单位: px
centerYnumber变换中心点y轴坐标。
单位: px

Matrix4Result

type Matrix4Result = [number,number,number,number,number,number,number,number,number,number,number,number,number,number,number,number]

原子化服务API: 从API version 11开始,该接口支持在原子化服务中使用。

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

类型说明
[number,number,number,number,
number,number,number,number,
number,number,number,number,
number,number,number,number]
取值范围为长度为16(4*4)的number数组, 详情见四阶矩阵说明。
单位: px

四阶矩阵说明:

参数名类型必填说明
m00numberx轴缩放值,单位矩阵默认为1。
m01number第2个值,xyz轴旋转会影响这个值。
m02number第3个值,xyz轴旋转会影响这个值。
m03number无实际意义。
m10number第5个值,xyz轴旋转会影响这个值。
m11numbery轴缩放值,单位矩阵默认为1。
m12number第7个值,xyz轴旋转会影响这个值。
m13number无实际意义。
m20number第9个值,xyz轴旋转会影响这个值。
m21number第10个值,xyz轴旋转会影响这个值。
m22numberz轴缩放值,单位矩阵默认为1。
m23number无实际意义。
m30numberx轴平移值,单位px,单位矩阵默认为0。
m31numbery轴平移值,单位px,单位矩阵默认为0。
m32numberz轴平移值,单位px,单位矩阵默认为0。
m33number齐次坐标下生效,产生透视投影效果。

示例:

说明:

推荐通过使用UIContext中的getComponentUtils方法获取当前UI上下文关联的ComponentUtils对象。

import { matrix4, componentUtils } from '@kit.ArkUI';

@Entry
@Component
struct Utils {
@State x: number = 120;
@State y: number = 10;
@State z: number = 100;
@State value: string = '';
private matrix1 = matrix4.identity().translate({ x: this.x, y: this.y, z: this.z });

build() {
  Column() {
    Image($r("app.media.img"))
      .transform(this.matrix1)
      .translate({ x: 20, y: 20, z: 20 })
      .scale({ x: 0.5, y: 0.5, z: 1 })
      .rotate({
        x: 1,
        y: 1,
        z: 1,
        centerX: '50%',
        centerY: '50%',
        angle: 300
      })
      .width(300)
      .height(100)
      .key("image_01")
    Button('getRectangleById')
    .onClick(() => {
      this.value = JSON.stringify(this.getUIContext().getComponentUtils().getRectangleById("image_01")) // 建议使用this.getUIContext().getComponentUtils()接口
    }).margin(10).id('onClick')
    Text(this.value)
      .margin(20)
      .width(300)
      .height(300)
      .borderWidth(2)
  }.margin({left: 50})
}
}

componentget

你可能感兴趣的鸿蒙文章

harmony 鸿蒙ArkUI(方舟UI框架)

harmony 鸿蒙ARKUI_TextPickerCascadeRangeContent

harmony 鸿蒙ARKUI_TextPickerRangeContent

harmony 鸿蒙ArkUI_AnimateCompleteCallback

harmony 鸿蒙ArkUI_AttributeItem

harmony 鸿蒙ArkUI_ColorStop

harmony 鸿蒙ArkUI_ContextCallback

harmony 鸿蒙ArkUI_EventModule

harmony 鸿蒙ArkUI_ExpectedFrameRateRange

harmony 鸿蒙ArkUI_IntOffset

  • 所属分类: 后端技术
  • 本文标签: 软件 鸿蒙
  • 版权声明: 本文链接 https://seaxiang.com/blog/8Fq6px