图形变换

2024-01-22 16:13 更新

用于对组件进行旋转、平移、缩放、矩阵变换等操作。

说明

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

属性

名称

参数类型

描述

rotate

{

x?: number,

y?: number,

z?: number,

angle: number | string,

centerX?: number | string,

centerY?: number | string

}

可使组件在以组件左上角为坐标原点的坐标系中进行旋转(坐标系如下图所示)。其中,(x, y, z)指定一个矢量,作为旋转轴。

- angle:旋转角度。取值为正时相对于旋转轴方向顺时针转动,取值为负时相对于旋转轴方向逆时针转动。取值可为string类型,如'90deg'。

- centerX和centerY用于指定旋转的中心点。

旋转轴和旋转中心点都基于坐标系设定,组件发生位移时,坐标系不会随之移动。

默认值:

{

x: 0,

y: 0,

z: 0,

centerX: '50%',

centerY: '50%'

}

从API version 9开始,该接口支持在ArkTS卡片中使用。

translate

{

x?: number | string,

y?: number | string,

z? : number | string

}

可使组件在以组件左上角为坐标原点的坐标系中进行移动(坐标系如下图所示)。其中,x,y,z的值分别表示在对应轴移动的距离,值为正时表示向对应轴的正向移动,值为负时表示向对应轴的反向移动。移动距离支持数字和字符串(比如'10px',‘10%’)两种类型。

默认值:

{

x: 0,

y: 0,

z: 0

}

从API version 9开始,该接口支持在ArkTS卡片中使用。

scale

{

x?: number,

y?: number,

z?: number,

centerX?: number | string,

centerY?: number | string

}

可以分别设置X轴、Y轴、Z轴的缩放比例,默认值为1,同时可以通过centerX和centerY设置缩放的中心点。

默认值:

{

x: 1,

y: 1,

z: 1,

centerX:'50%',

centerY:'50%'

}

从API version 9开始,该接口支持在ArkTS卡片中使用。

transform

Matrix4Transit

设置当前组件的变换矩阵。

示例

  1. // xxx.ets
  2. import matrix4 from '@ohos.matrix4'
  3. @Entry
  4. @Component
  5. struct TransformExample {
  6. build() {
  7. Column() {
  8. Text('rotate').width('90%').fontColor(0xCCCCCC).padding(15).fontSize(14)
  9. Row()
  10. .rotate({
  11. x: 0,
  12. y: 0,
  13. z: 1,
  14. centerX: '50%',
  15. centerY: '50%',
  16. angle: 300
  17. }) // 组件以矢量(0,0,1)为旋转轴,绕中心点顺时针旋转300度
  18. .width(100).height(100).backgroundColor(0xAFEEEE)
  19. Text('translate').width('90%').fontColor(0xCCCCCC).padding(10).fontSize(14)
  20. Row()
  21. .translate({ x: 100, y: 10 }) // x轴方向平移100,y轴方向平移10
  22. .width(100).height(100).backgroundColor(0xAFEEEE).margin({ bottom: 10 })
  23. Text('scale').width('90%').fontColor(0xCCCCCC).padding(15).fontSize(14)
  24. Row()
  25. .scale({ x: 2, y: 0.5 }) // 高度缩小一倍,宽度放大一倍,z轴在2D下无效果
  26. .width(100).height(100).backgroundColor(0xAFEEEE)
  27. Text('Matrix4').width('90%').fontColor(0xCCCCCC).padding(15).fontSize(14)
  28. Row()
  29. .width(100).height(100).backgroundColor(0xAFEEEE)
  30. .transform(matrix4.identity().translate({ x: 50, y: 50 }).scale({ x: 1.5, y: 1 }).rotate({
  31. x: 0,
  32. y: 0,
  33. z: 1,
  34. angle: 60
  35. }))
  36. }.width('100%').margin({ top: 5 })
  37. }
  38. }

以上内容是否对您有帮助:
在线笔记
App下载
App下载

扫描二维码

下载编程狮App

公众号
微信公众号

编程狮公众号