W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
本模塊提供矩陣變換功能,可對圖形進(jìn)行平移、旋轉(zhuǎn)和縮放等。
本模塊首批接口從API Version 7開始支持。后續(xù)版本如有新增內(nèi)容,則采用上角標(biāo)單獨(dú)標(biāo)記該內(nèi)容的起始版本。
init(options: [number,number,number,number,number,number,number,number,number,number,number,number,number,number,number,number]): Matrix4Transit
Matrix的構(gòu)造函數(shù),可以通過傳入的參數(shù)創(chuàng)建一個(gè)四階矩陣,矩陣為列優(yōu)先。
系統(tǒng)能力: SystemCapability.ArkUI.ArkUI.Full
參數(shù):
參數(shù)名 | 類型 | 必填 | 說明 |
---|---|---|---|
option | [number,number,number,number, number,number,number,number, number,number,number,number, number,number,number,number] | 是 | 參數(shù)為長度為16(4*4)的number數(shù)組, 詳情見四階矩陣說明。 默認(rèn)值: [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1] |
返回值:
類型 | 說明 |
---|---|
根據(jù)入?yún)?chuàng)建的四階矩陣對象。 |
四階矩陣說明:
參數(shù)名 | 類型 | 必填 | 說明 |
---|---|---|---|
m00 | number | 是 | x軸縮放值,單位矩陣默認(rèn)為1。 |
m01 | number | 是 | 第2個(gè)值,xyz軸旋轉(zhuǎn)會(huì)影響這個(gè)值。 |
m02 | number | 是 | 第3個(gè)值,xyz軸旋轉(zhuǎn)會(huì)影響這個(gè)值。 |
m03 | number | 是 | 無實(shí)際意義。 |
m10 | number | 是 | 第5個(gè)值,xyz軸旋轉(zhuǎn)會(huì)影響這個(gè)值。 |
m11 | number | 是 | y軸縮放值,單位矩陣默認(rèn)為1。 |
m12 | number | 是 | 第7個(gè)值,xyz軸旋轉(zhuǎn)會(huì)影響這個(gè)值。 |
m13 | number | 是 | 無實(shí)際意義。 |
m20 | number | 是 | 第9個(gè)值,xyz軸旋轉(zhuǎn)會(huì)影響這個(gè)值。 |
m21 | number | 是 | 第10個(gè)值,xyz軸旋轉(zhuǎn)會(huì)影響這個(gè)值。 |
m22 | number | 是 | z軸縮放值,單位矩陣默認(rèn)為1。 |
m23 | number | 是 | 無實(shí)際意義。 |
m30 | number | 是 | x軸平移值,單位px,單位矩陣默認(rèn)為0。 |
m31 | number | 是 | y軸平移值,單位px,單位矩陣默認(rèn)為0。 |
m32 | number | 是 | z軸平移值,單位px,單位矩陣默認(rèn)為0。 |
m33 | number | 是 | 齊次坐標(biāo)下生效,產(chǎn)生透視投影效果。 |
示例
- import matrix4 from '@ohos.matrix4'
- // 創(chuàng)建一個(gè)四階矩陣
- let matrix = matrix4.init([1.0, 0.0, 0.0, 0.0,
- 0.0, 1.0, 0.0, 0.0,
- 0.0, 0.0, 1.0, 0.0,
- 0.0, 0.0, 0.0, 1.0])
- @Entry
- @Component
- struct Tests {
- build() {
- Column() {
- Image($r("app.media.zh"))
- .width("40%")
- .height(100)
- .transform(matrix)
- }
- }
- }
identity(): Matrix4Transit
Matrix的初始化函數(shù),可以返回一個(gè)單位矩陣對象。
系統(tǒng)能力: SystemCapability.ArkUI.ArkUI.Full
返回值:
類型 | 說明 |
---|---|
單位矩陣對象。 |
示例:
- // matrix1 和 matrix2 效果一致
- import matrix4 from '@ohos.matrix4'
- let matrix1 = matrix4.init([1.0, 0.0, 0.0, 0.0,
- 0.0, 1.0, 0.0, 0.0,
- 0.0, 0.0, 1.0, 0.0,
- 0.0, 0.0, 0.0, 1.0])
- let matrix2 = matrix4.identity()
- @Entry
- @Component
- struct Tests {
- build() {
- Column() {
- Image($r("app.media.zh"))
- .width("40%")
- .height(100)
- .transform(matrix1)
- Image($r("app.media.zh"))
- .width("40%")
- .height(100)
- .margin({ top: 150 })
- .transform(matrix2)
- }
- }
- }
copy(): Matrix4Transit
Matrix的拷貝函數(shù),可以拷貝一份當(dāng)前的矩陣對象。
系統(tǒng)能力: SystemCapability.ArkUI.ArkUI.Full
返回值:
類型 | 說明 |
---|---|
當(dāng)前矩陣的拷貝對象。 |
示例:
- // xxx.ets
- import matrix4 from '@ohos.matrix4'
- @Entry
- @Component
- struct Test {
- private matrix1 = matrix4.identity().translate({ x: 100 })
- // 對matrix1的拷貝矩陣做scale操作,不影響到matrix1
- private matrix2 = this.matrix1.copy().scale({ x: 2 })
- build() {
- Column() {
- Image($r("app.media.bg1"))
- .width("40%")
- .height(100)
- .transform(this.matrix1)
- Image($r("app.media.bg2"))
- .width("40%")
- .height(100)
- .margin({ top: 50 })
- .transform(this.matrix2)
- }
- }
- }
invert(): Matrix4Transit
Matrix的逆函數(shù),可以返回一個(gè)當(dāng)前矩陣對象的逆矩陣,即效果正好相反。
系統(tǒng)能力: SystemCapability.ArkUI.ArkUI.Full
返回值:
類型 | 說明 |
---|---|
當(dāng)前矩陣的逆矩陣對象。 |
combine(options: Matrix4Transit): Matrix4Transit
Matrix的疊加函數(shù),可以將兩個(gè)矩陣的效果疊加起來生成一個(gè)新的矩陣對象。
系統(tǒng)能力: SystemCapability.ArkUI.ArkUI.Full
參數(shù):
參數(shù)名 | 類型 | 必填 | 說明 |
---|---|---|---|
option | 是 | 待疊加的矩陣對象。 |
返回值:
類型 | 說明 |
---|---|
疊加后的矩陣對象。 |
translate(options: TranslateOption): Matrix4Transit
Matrix的平移函數(shù),可以為當(dāng)前矩陣增加x軸/y軸/z軸平移效果。
系統(tǒng)能力: SystemCapability.ArkUI.ArkUI.Full
參數(shù):
參數(shù)名 | 類型 | 必填 | 說明 |
---|---|---|---|
option | 是 | 設(shè)置平移參數(shù)。 |
返回值:
類型 | 說明 |
---|---|
平移后的矩陣對象。 |
scale(options: ScaleOption): Matrix4Transit
Matrix的縮放函數(shù),可以為當(dāng)前矩陣增加x軸/y軸/z軸縮放效果。
系統(tǒng)能力: SystemCapability.ArkUI.ArkUI.Full
參數(shù):
參數(shù)名 | 類型 | 必填 | 說明 |
---|---|---|---|
option | 是 | 設(shè)置縮放參數(shù)。 |
返回值:
類型 | 說明 |
---|---|
縮放后的矩陣對象。 |
rotate(options: RotateOption): Matrix4Transit
Matrix的旋轉(zhuǎn)函數(shù),可以為當(dāng)前矩陣增加x軸/y軸/z軸旋轉(zhuǎn)效果。
系統(tǒng)能力: SystemCapability.ArkUI.ArkUI.Full
參數(shù):
參數(shù)名 | 類型 | 必填 | 說明 |
---|---|---|---|
option | 是 | 設(shè)置旋轉(zhuǎn)參數(shù)。 |
返回值:
類型 | 說明 |
---|---|
旋轉(zhuǎn)后的矩陣對象。 |
transformPoint(options: [number, number]): [number, number]
Matrix的坐標(biāo)點(diǎn)轉(zhuǎn)換函數(shù),可以將當(dāng)前的變換效果作用到一個(gè)坐標(biāo)點(diǎn)上。
系統(tǒng)能力: SystemCapability.ArkUI.ArkUI.Full
參數(shù):
參數(shù)名 | 類型 | 必填 | 說明 |
---|---|---|---|
option | [number, number] | 是 | 需要轉(zhuǎn)換的坐標(biāo)點(diǎn)。 |
返回值:
類型 | 說明 |
---|---|
[number, number] | 返回矩陣變換后的Point對象。 |
combine(options: Matrix4Transit): Matrix4Transit
Matrix的疊加函數(shù),可以將兩個(gè)矩陣的效果疊加起來生成一個(gè)新的矩陣對象。會(huì)改變調(diào)用該函數(shù)的原始矩陣。
系統(tǒng)能力: SystemCapability.ArkUI.ArkUI.Full
參數(shù):
參數(shù)名 | 類型 | 必填 | 說明 |
---|---|---|---|
option | 是 | 待疊加的矩陣對象。 |
返回值:
類型 | 說明 |
---|---|
矩陣疊加后的對象。 |
示例:
- // xxx.ets
- import matrix4 from '@ohos.matrix4'
- @Entry
- @Component
- struct Test {
- private matrix1 = matrix4.identity().translate({ x: 200 })
- private matrix2 = matrix4.identity().scale({ x: 2 })
- build() {
- Column() {
- // 矩陣變換前
- Image($r("app.media.icon"))
- .width("40%")
- .height(100)
- .margin({ top: 50 })
- // 先平移x軸200px,再縮放兩倍x軸,得到矩陣變換后的效果圖
- Image($r("app.media.icon"))
- .transform(this.matrix1.copy().combine(this.matrix2))
- .width("40%")
- .height(100)
- .margin({ top: 50 })
- }
- }
- }
invert(): Matrix4Transit
Matrix的逆函數(shù),可以返回一個(gè)當(dāng)前矩陣對象的逆矩陣,即效果正好相反。會(huì)改變調(diào)用該函數(shù)的原始矩陣。
系統(tǒng)能力: SystemCapability.ArkUI.ArkUI.Full
返回值:
類型 | 說明 |
---|---|
當(dāng)前矩陣的逆矩陣對象。 |
示例:
- import matrix4 from '@ohos.matrix4'
- // matrix1(寬放大2倍) 和 matrix2(寬縮小2倍) 效果相反
- let matrix1 = matrix4.identity().scale({ x: 2 })
- let matrix2 = matrix1.copy().invert()
- @Entry
- @Component
- struct Tests {
- build() {
- Column() {
- Image($r("app.media.zh"))
- .width(200)
- .height(100)
- .transform(matrix1)
- .margin({ top: 100 })
- Image($r("app.media.zh"))
- .width(200)
- .height(100)
- .margin({ top: 150 })
- .transform(matrix2)
- }
- }
- }
translate(options: TranslateOption): Matrix4Transit
Matrix的平移函數(shù),可以為當(dāng)前矩陣增加x軸/y軸/z軸平移效果。會(huì)改變調(diào)用該函數(shù)的原始矩陣。
系統(tǒng)能力: SystemCapability.ArkUI.ArkUI.Full
參數(shù):
參數(shù)名 | 類型 | 必填 | 說明 |
---|---|---|---|
option | 是 | 設(shè)置平移參數(shù)。 |
返回值:
類型 | 說明 |
---|---|
平移效果后的矩陣對象。 |
示例:
- // xxx.ets
- import matrix4 from '@ohos.matrix4'
- @Entry
- @Component
- struct Test {
- private matrix1 = matrix4.identity().translate({ x: 100, y: 200, z: 30 })
- build() {
- Column() {
- Image($r("app.media.bg1")).transform(this.matrix1)
- .width("40%")
- .height(100)
- }
- }
- }
scale(options: ScaleOption): Matrix4Transit
Matrix的縮放函數(shù),可以為當(dāng)前矩陣增加x軸/y軸/z軸縮放效果。會(huì)改變調(diào)用該函數(shù)的原始矩陣。
系統(tǒng)能力: SystemCapability.ArkUI.ArkUI.Full
參數(shù):
參數(shù)名 | 類型 | 必填 | 說明 |
---|---|---|---|
option | 是 | 設(shè)置縮放參數(shù)。 |
返回值:
類型 | 說明 |
---|---|
縮放效果后的矩陣對象。 |
示例:
- // xxx.ets
- import matrix4 from '@ohos.matrix4'
- @Entry
- @Component
- struct Test {
- private matrix1 = matrix4.identity().scale({ x:2, y:3, z:4, centerX:50, centerY:50 })
- build() {
- Column() {
- Image($r("app.media.bg1")).transform(this.matrix1)
- .width("40%")
- .height(100)
- }
- }
- }
rotate(options: RotateOption): Matrix4Transit
Matrix的旋轉(zhuǎn)函數(shù),可以為當(dāng)前矩陣增加x軸/y軸/z軸旋轉(zhuǎn)效果。會(huì)改變調(diào)用該函數(shù)的原始矩陣。
系統(tǒng)能力: SystemCapability.ArkUI.ArkUI.Full
參數(shù):
參數(shù)名 | 類型 | 必填 | 說明 |
---|---|---|---|
option | 是 | 設(shè)置旋轉(zhuǎn)參數(shù)。 |
返回值:
類型 | 說明 |
---|---|
旋轉(zhuǎn)效果后的矩陣對象。 |
示例:
- // xxx.ets
- import matrix4 from '@ohos.matrix4'
- @Entry
- @Component
- struct Test {
- private matrix1 = matrix4.identity().rotate({ x: 1, y: 1, z: 2, angle: 30 })
- build() {
- Column() {
- Image($r("app.media.bg1")).transform(this.matrix1)
- .width("40%")
- .height(100)
- }.width("100%").margin({ top: 50 })
- }
- }
transformPoint(options: [number, number]): [number, number]
Matrix的坐標(biāo)點(diǎn)轉(zhuǎn)換函數(shù),可以將當(dāng)前的變換效果作用到一個(gè)坐標(biāo)點(diǎn)上。
系統(tǒng)能力: SystemCapability.ArkUI.ArkUI.Full
參數(shù):
參數(shù)名 | 類型 | 必填 | 說明 |
---|---|---|---|
option | [number, number] | 是 | 需要轉(zhuǎn)換的坐標(biāo)點(diǎn)。 |
返回值:
類型 | 說明 |
---|---|
[number, number] | 返回矩陣變換后的Point對象。 |
示例:
- // xxx.ets
- import matrix4 from '@ohos.matrix4'
- @Entry
- @Component
- struct Test {
- private originPoint: number[] = [50, 50]
- private matrix_1 = matrix4.identity().translate({ x: 150, y: -50 })
- private transformPoint = this.matrix_1.transformPoint([this.originPoint[0], this.originPoint[1]])
- private matrix_2 = matrix4.identity().translate({ x: this.transformPoint[0], y: this.transformPoint[1] })
- build() {
- Column() {
- Text(`矩陣變換前的坐標(biāo):[${this.originPoint}]`)
- .fontSize(16)
- Image($r("app.media.image"))
- .width('600px')
- .height('300px')
- .margin({ top: 50 })
- Text(`矩陣變換后的坐標(biāo):[${this.transformPoint}]`)
- .fontSize(16)
- .margin({ top: 100 })
- Image($r("app.media.image"))
- .width('600px')
- .height('300px')
- .margin({ top: 50 })
- .transform(this.matrix_2)
- }.width("100%").padding(50)
- }
- }
系統(tǒng)能力: SystemCapability.ArkUI.ArkUI.Full
名稱 | 類型 | 必填 | 說明 |
---|---|---|---|
x | number | 否 | x軸的平移距離,單位px。 默認(rèn)值:0 取值范圍 (-∞, +∞) |
y | number | 否 | y軸的平移距離,單位px。 默認(rèn)值:0 取值范圍 (-∞, +∞) |
z | number | 否 | z軸的平移距離,單位px。 默認(rèn)值:0 取值范圍 (-∞, +∞) |
系統(tǒng)能力: SystemCapability.ArkUI.ArkUI.Full
名稱 | 類型 | 必填 | 說明 |
---|---|---|---|
x | number | 否 | x軸的縮放倍數(shù)。x>1時(shí)以x軸方向放大,0<x<1時(shí)以x軸方向縮小,x<0時(shí)沿x軸反向并縮放。 默認(rèn)值:1 取值范圍 (-∞, +∞) |
y | number | 否 | y軸的縮放倍數(shù)。y>1時(shí)以y軸方向放大,0<y<1時(shí)以y軸方向縮小,y<0時(shí)沿y軸反向并縮放。 默認(rèn)值:1 取值范圍 (-∞, +∞) |
z | number | 否 | z軸的縮放倍數(shù)。z>1時(shí)以z軸方向放大,0<z<1時(shí)以z軸方向縮小,z<0時(shí)沿z軸反向并縮放。 默認(rèn)值:1 取值范圍 (-∞, +∞) |
centerX | number | 否 | 變換中心點(diǎn)x軸坐標(biāo)。 默認(rèn)值:0。 取值范圍 (-∞, +∞) |
centerY | number | 否 | 變換中心點(diǎn)y軸坐標(biāo)。 默認(rèn)值:0。 取值范圍 (-∞, +∞) |
系統(tǒng)能力: SystemCapability.ArkUI.ArkUI.Full
名稱 | 類型 | 必填 | 說明 |
---|---|---|---|
x | number | 否 | 旋轉(zhuǎn)軸向量x坐標(biāo)。 默認(rèn)值:0。 取值范圍 (-∞, +∞) |
y | number | 否 | 旋轉(zhuǎn)軸向量y坐標(biāo)。 默認(rèn)值:0。 取值范圍 (-∞, +∞) |
z | number | 否 | 旋轉(zhuǎn)軸向量z坐標(biāo)。 默認(rèn)值:0。 取值范圍 (-∞, +∞)。 說明: 旋轉(zhuǎn)向量中x、y、z至少有一個(gè)不為0才有意義。 |
angle | number | 否 | 旋轉(zhuǎn)角度。 默認(rèn)值:0 |
centerX | number | 否 | 變換中心點(diǎn)x軸坐標(biāo)。 默認(rèn)值:0 |
centerY | number | 否 | 變換中心點(diǎn)y軸坐標(biāo)。 默認(rèn)值:0 |
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: