圖形變換

2024-01-22 16:13 更新

用于對組件進行旋轉、平移、縮放、矩陣變換等操作。

說明

從API Version 7開始支持。后續(xù)版本如有新增內(nèi)容,則采用上角標單獨標記該內(nèi)容的起始版本。

屬性

名稱

參數(shù)類型

描述

rotate

{

x?: number,

y?: number,

z?: number,

angle: number | string,

centerX?: number | string,

centerY?: number | string

}

可使組件在以組件左上角為坐標原點的坐標系中進行旋轉(坐標系如下圖所示)。其中,(x, y, z)指定一個矢量,作為旋轉軸。

- angle:旋轉角度。取值為正時相對于旋轉軸方向順時針轉動,取值為負時相對于旋轉軸方向逆時針轉動。取值可為string類型,如'90deg'。

- centerX和centerY用于指定旋轉的中心點。

旋轉軸和旋轉中心點都基于坐標系設定,組件發(fā)生位移時,坐標系不會隨之移動。

默認值:

{

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的值分別表示在對應軸移動的距離,值為正時表示向?qū)S的正向移動,值為負時表示向?qū)S的反向移動。移動距離支持數(shù)字和字符串(比如'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. }

以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號