• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# @ohos.matrix4 (矩阵变换)
2
3本模块提供矩阵变换功能,可对图形进行平移、旋转和缩放等。
4
5> **说明:**
6>
7> 本模块首批接口从API Version 7开始支持。后续版本如有新增内容,则采用上角标单独标记该内容的起始版本。
8
9
10## 导入模块
11
12```ts
13import { matrix4 } from '@kit.ArkUI';
14```
15
16
17## matrix4.init
18
19init(options: [number,number,number,number,number,number,number,number,number,number,number,number,number,number,number,number]): Matrix4Transit
20
21Matrix的构造函数,可以通过传入的参数创建一个四阶矩阵,矩阵为列优先。
22
23**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。
24
25**系统能力:**  SystemCapability.ArkUI.ArkUI.Full
26
27**参数:**
28
29| 参数名 | 类型                                                         | 必填 | 说明                                                         |
30| ------ | ------------------------------------------------------------ | ---- | ------------------------------------------------------------ |
31| options | [number,number,number,number,<br/>number,number,number,number,<br/>number,number,number,number,<br/>number,number,number,number] | 是   | 参数为长度为16(4\*4)的number数组,&nbsp;详情见四阶矩阵说明。<br/>各number取值范围:(-∞, +∞)<br/>默认值:<br/>[1,&nbsp;0,&nbsp;0,&nbsp;0,<br/>0,&nbsp;1,&nbsp;0,&nbsp;0,<br/>0,&nbsp;0,&nbsp;1,&nbsp;0,<br/>0,&nbsp;0,&nbsp;0,&nbsp;1] |
32
33**返回值:**
34
35| 类型                              | 说明                         |
36| --------------------------------- | ---------------------------- |
37| [Matrix4Transit](#matrix4transit) | 根据入参创建的四阶矩阵对象。 |
38
39**四阶矩阵说明:**
40
41| 参数名  | 类型     | 必填   | 说明                   |
42| ---- | ------ | ---- | -------------------- |
43| m00  | number | 是    | x轴缩放值,单位矩阵默认为1。      |
44| m01  | number | 是    | 第2个值,xyz轴旋转或倾斜会影响这个值。   |
45| m02  | number | 是    | 第3个值,xyz轴旋转会影响这个值。   |
46| m03  | number | 是    | 第4个值,透视投影会影响这个值。               |
47| m10  | number | 是    | 第5个值,xyz轴旋转或倾斜会影响这个值。   |
48| m11  | number | 是    | y轴缩放值,单位矩阵默认为1。      |
49| m12  | number | 是    | 第7个值,xyz轴旋转会影响这个值。   |
50| m13  | number | 是    | 第8个值,透视投影会影响这个值。               |
51| m20  | number | 是    | 第9个值,xyz轴旋转会影响这个值。   |
52| m21  | number | 是    | 第10个值,xyz轴旋转会影响这个值。  |
53| m22  | number | 是    | z轴缩放值,单位矩阵默认为1。      |
54| m23  | number | 是    | 第12个值,透视投影会影响这个值。               |
55| m30  | number | 是    | x轴平移值,单位px,单位矩阵默认为0。 |
56| m31  | number | 是    | y轴平移值,单位px,单位矩阵默认为0。 |
57| m32  | number | 是    | z轴平移值,单位px,单位矩阵默认为0。 |
58| m33  | number | 是    | 齐次坐标下生效,产生透视投影效果。    |
59
60**示例**
61
62```ts
63import { matrix4 } from '@kit.ArkUI';
64
65// 创建一个四阶矩阵
66let matrix = matrix4.init(
67  [1.0, 0.0, 0.0, 0.0,
68    0.0, 1.0, 0.0, 0.0,
69    0.0, 0.0, 1.0, 0.0,
70    0.0, 0.0, 0.0, 1.0])
71
72@Entry
73@Component
74struct Tests {
75  build() {
76    Column() {
77      Image($r("app.media.zh"))
78        .width("40%")
79        .height(100)
80        .transform(matrix)
81    }
82  }
83}
84```
85
86
87## matrix4.identity
88
89identity(): Matrix4Transit
90
91Matrix的初始化函数,可以返回一个单位矩阵对象。
92
93**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。
94
95**系统能力:**  SystemCapability.ArkUI.ArkUI.Full
96
97**返回值:**
98
99| 类型                              | 说明           |
100| --------------------------------- | -------------- |
101| [Matrix4Transit](#matrix4transit) | 单位矩阵对象。 |
102
103**示例:**
104
105```ts
106// matrix1 和 matrix2 效果一致
107import { matrix4 } from '@kit.ArkUI';
108
109let matrix1 = matrix4.init(
110  [1.0, 0.0, 0.0, 0.0,
111    0.0, 1.0, 0.0, 0.0,
112    0.0, 0.0, 1.0, 0.0,
113    0.0, 0.0, 0.0, 1.0])
114let matrix2 = matrix4.identity()
115
116@Entry
117@Component
118struct Tests {
119  build() {
120    Column() {
121      Image($r("app.media.zh"))
122        .width("40%")
123        .height(100)
124        .transform(matrix1)
125      Image($r("app.media.zh"))
126        .width("40%")
127        .height(100)
128        .margin({ top: 150 })
129        .transform(matrix2)
130    }
131  }
132}
133```
134
135## Matrix4Transit
136
137矩阵对象。
138
139**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。
140
141**系统能力:**  SystemCapability.ArkUI.ArkUI.Full
142
143### copy
144
145copy(): Matrix4Transit
146
147Matrix的拷贝函数,可以拷贝一份当前的矩阵对象。
148
149**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。
150
151**系统能力:**  SystemCapability.ArkUI.ArkUI.Full
152
153**返回值:**
154
155| 类型                              | 说明                 |
156| --------------------------------- | -------------------- |
157| [Matrix4Transit](#matrix4transit) | 当前矩阵的拷贝对象。 |
158
159
160**示例:**
161
162```ts
163// xxx.ets
164import { matrix4 } from '@kit.ArkUI';
165
166@Entry
167@Component
168struct Test {
169  private matrix1 = matrix4.identity().scale({ x: 1.5 })
170  private matrix2 = this.matrix1.copy().translate({ x: 200 })
171  imageSize: Length = '300px'
172
173  build() {
174    Column({ space: "50px" }) {
175      Image($r("app.media.testImage"))
176        .width(this.imageSize)
177        .height(this.imageSize)
178      Image($r("app.media.testImage"))
179        .width(this.imageSize)
180        .height(this.imageSize)
181        .transform(this.matrix1)
182      Image($r("app.media.testImage"))
183        .width(this.imageSize)
184        .height(this.imageSize)
185        .transform(this.matrix2)
186    }.alignItems(HorizontalAlign.Center)
187    .height('100%').width("100%")
188    .justifyContent(FlexAlign.Center)
189  }
190}
191```
192
193![zh-cn_image_0000001219744181](figures/h-cn_image_0000001219744185.png)
194### combine
195
196combine(options: Matrix4Transit): Matrix4Transit
197
198Matrix的叠加函数,可以将两个矩阵的效果叠加起来生成一个新的矩阵对象。会改变调用该函数的原始矩阵。
199
200**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。
201
202**系统能力:**  SystemCapability.ArkUI.ArkUI.Full
203
204**参数:**
205
206| 参数名 | 类型                              | 必填 | 说明               |
207| ------ | --------------------------------- | ---- | ------------------ |
208| options | [Matrix4Transit](#matrix4transit) | 是   | 待叠加的矩阵对象。 |
209
210**返回值:**
211
212| 类型                              | 说明               |
213| --------------------------------- | ------------------ |
214| [Matrix4Transit](#matrix4transit) | 矩阵叠加后的对象。 |
215
216**示例:**
217
218```ts
219// xxx.ets
220import { matrix4 } from '@kit.ArkUI';
221
222@Entry
223@Component
224struct Test {
225  private matrix1 = matrix4.identity().translate({ x: 200 })
226  private matrix2 = matrix4.identity().scale({ x: 2 })
227
228  build() {
229    Column() {
230      // 矩阵变换前
231      Image($r("app.media.icon"))
232        .width("40%")
233        .height(100)
234        .margin({ top: 50 })
235      // 先平移x轴200px,再缩放两倍x轴,得到矩阵变换后的效果图
236      Image($r("app.media.icon"))
237        .transform(this.matrix1.copy().combine(this.matrix2))
238        .width("40%")
239        .height(100)
240        .margin({ top: 50 })
241    }
242  }
243}
244```
245
246![zh-cn_image_0000001118642902](figures/zh-cn_image_0000001118642902.png)
247
248
249### invert
250
251invert(): Matrix4Transit
252
253Matrix的逆函数,可以返回一个当前矩阵对象的逆矩阵,即效果正好相反。会改变调用该函数的原始矩阵。
254
255**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。
256
257**系统能力:**  SystemCapability.ArkUI.ArkUI.Full
258
259**返回值:**
260
261| 类型                              | 说明                   |
262| --------------------------------- | ---------------------- |
263| [Matrix4Transit](#matrix4transit) | 当前矩阵的逆矩阵对象。 |
264
265**示例:**
266
267```ts
268import { matrix4 } from '@kit.ArkUI';
269
270// matrix1(宽放大2倍) 和 matrix2(宽缩小2倍) 效果相反
271let matrix1 = matrix4.identity().scale({ x: 2 })
272let matrix2 = matrix1.copy().invert()
273
274@Entry
275@Component
276struct Tests {
277  build() {
278    Column() {
279      Image($r("app.media.zh"))
280        .width(200)
281        .height(100)
282        .transform(matrix1)
283        .margin({ top: 100 })
284      Image($r("app.media.zh"))
285        .width(200)
286        .height(100)
287        .margin({ top: 150 })
288        .transform(matrix2)
289    }
290  }
291}
292```
293
294
295### translate
296
297translate(options: TranslateOption): Matrix4Transit
298
299Matrix的平移函数,可以为当前矩阵增加x轴/y轴/z轴平移效果。会改变调用该函数的原始矩阵。
300
301**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。
302
303**系统能力:**  SystemCapability.ArkUI.ArkUI.Full
304
305**参数:**
306
307| 参数名 | 类型                                | 必填 | 说明           |
308| ------ | ----------------------------------- | ---- | -------------- |
309| options | [TranslateOption](#translateoption) | 是   | 设置平移参数。 |
310
311**返回值:**
312
313| 类型                              | 说明                         |
314| --------------------------------- | ---------------------------- |
315| [Matrix4Transit](#matrix4transit) | 平移效果后的矩阵对象。 |
316
317**示例:**
318
319```ts
320// xxx.ets
321import { matrix4 } from '@kit.ArkUI';
322
323@Entry
324@Component
325struct Test {
326  private matrix1 = matrix4.identity().translate({ x: 100, y: 200, z: 30 })
327
328  build() {
329    Column() {
330      Image($r("app.media.bg1")).transform(this.matrix1)
331        .width("40%")
332        .height(100)
333    }
334  }
335}
336```
337
338![zh-cn_image_0000001219662645](figures/zh-cn_image_0000001219662645.png)
339
340
341### scale
342
343scale(options: ScaleOption): Matrix4Transit
344
345Matrix的缩放函数,可以为当前矩阵增加x轴/y轴/z轴缩放效果。会改变调用该函数的原始矩阵。
346
347**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。
348
349**系统能力:**  SystemCapability.ArkUI.ArkUI.Full
350
351**参数:**
352
353| 参数名 | 类型                        | 必填 | 说明           |
354| ------ | --------------------------- | ---- | -------------- |
355| options | [ScaleOption](#scaleoption) | 是   | 设置缩放参数。 |
356
357**返回值:**
358
359| 类型                              | 说明                         |
360| --------------------------------- | ---------------------------- |
361| [Matrix4Transit](#matrix4transit) | 缩放效果后的矩阵对象。 |
362
363**示例:**
364
365```ts
366// xxx.ets
367import { matrix4 } from '@kit.ArkUI';
368
369@Entry
370@Component
371struct Test {
372  private matrix1 = matrix4.identity()
373    .scale({
374      x: 2,
375      y: 3,
376      z: 4,
377      centerX: 50,
378      centerY: 50
379    })
380
381  build() {
382    Column() {
383      Image($r("app.media.testImage")).transform(this.matrix1)
384        .width("300px")
385        .height("300px")
386    }.width("100%").height("100%").justifyContent(FlexAlign.Center)
387  }
388}
389```
390
391![zh-cn_image_0000001219864131](figures/zh-cn_image_0000001219864131.png)
392
393
394### skew<sup>12+</sup>
395
396skew(x: number, y: number): Matrix4Transit
397
398Matrix的倾斜函数,可以为当前矩阵增加x轴/y轴倾斜效果。会改变调用该函数的原始矩阵。
399
400**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
401
402**系统能力:**  SystemCapability.ArkUI.ArkUI.Full
403
404**参数:**
405
406| 参数名 | 类型                        | 必填 | 说明           |
407| ------ | --------------------------- | ---- | -------------- |
408| x | number | 是   | 设置x轴倾斜参数。 |
409| y | number | 是   | 设置y轴倾斜参数。 |
410
411**返回值:**
412
413| 类型                              | 说明                         |
414| --------------------------------- | ---------------------------- |
415| [Matrix4Transit](#matrix4transit) | 倾斜效果后的矩阵对象。 |
416
417**示例:**
418
419```ts
420// xxx.ets
421import { matrix4 } from '@kit.ArkUI';
422
423@Entry
424@Component
425struct Test {
426  private matrix1 = matrix4.identity().skew(2, 3)
427
428  build() {
429    Column() {
430      Image($r("app.media.bg1")).transform(this.matrix1)
431        .height(100)
432        .margin({
433          top: 300
434        })
435    }
436    .width("100%")
437    .height("100%")
438  }
439}
440```
441
442![zh-cn_image_0000001219864132](figures/zh-cn_image_0000001219864132.jpeg)
443
444
445### rotate
446
447rotate(options: RotateOption): Matrix4Transit
448
449Matrix的旋转函数,可以为当前矩阵增加x轴/y轴/z轴旋转效果。会改变调用该函数的原始矩阵。
450
451**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。
452
453**系统能力:**  SystemCapability.ArkUI.ArkUI.Full
454
455**参数:**
456
457| 参数名 | 类型                          | 必填 | 说明           |
458| ------ | ----------------------------- | ---- | -------------- |
459| options | [RotateOption](#rotateoption) | 是   | 设置旋转参数。 |
460
461**返回值:**
462
463| 类型                              | 说明                         |
464| --------------------------------- | ---------------------------- |
465| [Matrix4Transit](#matrix4transit) | 旋转效果后的矩阵对象。 |
466
467**示例:**
468
469```ts
470// xxx.ets
471import { matrix4 } from '@kit.ArkUI';
472
473@Entry
474@Component
475struct Test {
476  private matrix1 = matrix4.identity()
477    .rotate({
478      x: 1,
479      y: 1,
480      z: 2,
481      angle: 30
482    })
483
484  build() {
485    Column() {
486      Image($r("app.media.bg1")).transform(this.matrix1)
487        .width("40%")
488        .height(100)
489    }.width("100%").margin({ top: 50 })
490  }
491}
492```
493
494![zh-cn_image_0000001174422898](figures/zh-cn_image_0000001174422898.png)
495
496
497### transformPoint
498
499transformPoint(options: [number, number]): [number, number]
500
501Matrix的坐标点转换函数,可以将当前的变换效果作用到一个坐标点上。
502
503**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。
504
505**系统能力:**  SystemCapability.ArkUI.ArkUI.Full
506
507**参数:**
508
509| 参数名  | 类型             | 必填 | 说明               |
510| ------- | ---------------- | ---- | ------------------ |
511| options | [number, number] | 是   | 需要转换的坐标点。 |
512
513**返回值:**
514
515| 类型             | 说明                        |
516| ---------------- | --------------------------- |
517| [number, number] | 返回矩阵变换后的Point对象。 |
518
519**示例:**
520
521```ts
522// xxx.ets
523import { matrix4 } from '@kit.ArkUI';
524
525@Entry
526@Component
527struct Test {
528  private originPoint: number[] = [50, 50]
529  private matrix_1 = matrix4.identity().translate({ x: 150, y: -50 })
530  private transformPoint = this.matrix_1.transformPoint([this.originPoint[0], this.originPoint[1]])
531  private matrix_2 = matrix4.identity().translate({ x: this.transformPoint[0], y: this.transformPoint[1] })
532
533  build() {
534    Column() {
535      Text(`矩阵变换前的坐标:[${this.originPoint}]`)
536        .fontSize(16)
537      Image($r("app.media.image"))
538        .width('600px')
539        .height('300px')
540        .margin({ top: 50 })
541      Text(`矩阵变换后的坐标:[${this.transformPoint}]`)
542        .fontSize(16)
543        .margin({ top: 100 })
544      Image($r("app.media.image"))
545        .width('600px')
546        .height('300px')
547        .margin({ top: 50 })
548        .transform(this.matrix_2)
549    }.width("100%").padding(50)
550  }
551}
552```
553
554![zh-cn_image_0000001219864133](figures/zh-cn_image_0000001219864133.PNG)
555
556### setPolyToPoly<sup>12+</sup>
557
558setPolyToPoly(options: PolyToPolyOptions): Matrix4Transit
559
560将一个多边形的顶点坐标映射到另外一个多边形的顶点坐标。
561
562**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
563
564**系统能力:**  SystemCapability.ArkUI.ArkUI.Full
565
566**参数:**
567
568| 参数名 | 类型             | 必填 | 说明               |
569| ------ | ---------------- | ---- | ------------------ |
570| options | [PolyToPolyOptions](#polytopolyoptions12)  | 是   | 映射相关的参数。 |
571
572**返回值:**
573
574| 类型                              | 说明                 |
575| --------------------------------- | -------------------- |
576| [Matrix4Transit](#matrix4transit) | 当前矩阵变换后的对象。 |
577
578> **说明:**
579> 需要配合scale({centerX:0,centerY:0,x:1})保证变换的中心点是组件左上角。
580
581**示例:**
582
583```ts
584import { matrix4 } from '@kit.ArkUI'
585
586@Entry
587@Component
588struct Index {
589  private matrix1 = matrix4.identity().setPolyToPoly({
590    src: [{ x: 0, y: 0 }, { x: 500, y: 0 }, { x: 0, y: 500 }, { x: 500, y: 500 }],
591    dst: [{ x: 0, y: 0 }, { x: 500, y: 0 }, { x: 0, y: 500 }, { x: 750, y: 1000 }], pointCount: 4
592  })
593
594  build() {
595    Stack() {
596      Column().backgroundColor(Color.Blue)
597        .width('500px')
598        .height('500px')
599      Image($r('app.media.transition_image1'))
600        .scale({ centerX: 0, centerY: 0, x: 1 })
601        .transform(this.matrix1)
602        .width('500px')
603        .height('500px')
604    }.width("100%").height("100%").opacity(0.5)
605  }
606}
607```
608![zh-cn_image_0000001174422898](figures/setPolyTopoly.png)
609## TranslateOption
610
611**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。
612
613**系统能力:** SystemCapability.ArkUI.ArkUI.Full
614
615| 名称 | 类型   | 必填 | 说明                                                        |
616| ---- | ------ | ---- | ----------------------------------------------------------- |
617| x    | number | 否   | x轴的平移距离。<br/>单位:px<br/>默认值:0<br/>取值范围 (-∞, +∞) |
618| y    | number | 否   | y轴的平移距离。<br/>单位:px<br/>默认值:0<br/>取值范围 (-∞, +∞) |
619| z    | number | 否   | z轴的平移距离。<br/>单位:px<br/>默认值:0<br/>取值范围 (-∞, +∞) |
620
621## ScaleOption
622
623**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。
624
625**系统能力:** SystemCapability.ArkUI.ArkUI.Full
626
627| 名称    | 类型   | 必填 | 说明                                                         |
628| ------- | ------ | ---- | ------------------------------------------------------------ |
629| x       | number | 否   | x轴的缩放倍数。x>1时以x轴方向放大,0&lt;x&lt;1时以x轴方向缩小,x<0时沿x轴反向并缩放。<br/>默认值:1<br/>取值范围 (-∞, +∞) |
630| y       | number | 否   | y轴的缩放倍数。y>1时以y轴方向放大,0&lt;y&lt;1时以y轴方向缩小,y<0时沿y轴反向并缩放。<br/>默认值:1<br/>取值范围 (-∞, +∞) |
631| z       | number | 否   | z轴的缩放倍数。z>1时以z轴方向放大,0&lt;z&lt;1时以z轴方向缩小,z<0时沿z轴反向并缩放。<br/>默认值:1<br/>取值范围 (-∞, +∞) |
632| centerX | number | 否   | 变换中心点x轴坐标。<br/>单位:px<br/>默认值:组件中心点x轴坐标。<br/>取值范围 (-∞, +∞)    |
633| centerY | number | 否   | 变换中心点y轴坐标。<br/>单位:px<br/>默认值:组件中心点y轴坐标。<br/>取值范围 (-∞, +∞)    |
634
635## RotateOption
636
637**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。
638
639**系统能力:** SystemCapability.ArkUI.ArkUI.Full
640
641| 名称    | 类型   | 必填 | 说明                                                         |
642| ------- | ------ | ---- | ------------------------------------------------------------ |
643| x       | number | 否   | 旋转轴向量x坐标。<br/>默认值:0。<br/>取值范围 (-∞, +∞)      |
644| y       | number | 否   | 旋转轴向量y坐标。<br/>默认值:0。<br/>取值范围 (-∞, +∞)      |
645| z       | number | 否   | 旋转轴向量z坐标。<br/>默认值:0。<br/>取值范围 (-∞, +∞)。<br/>**说明:** 旋转向量中x、y、z至少有一个不为0才有意义。 |
646| angle   | number | 否   | 旋转角度。<br/>默认值:0                                     |
647| centerX | number | 否   | 单次矩阵变换中心点相对于组件变换中心点(锚点)的额外x轴偏移值。<br/>单位:px<br/>默认值:0<br/>**说明:** <br/>为0时表示x方向的矩阵变换中心恰好为组件x方向锚点,取值表示相对组件x方向锚点的额外偏移量。具体实现可参考[示例3(按中心点旋转)](arkui-ts/ts-universal-attributes-transformation.md#示例3按中心点旋转)。 |
648| centerY | number | 否   | 单次矩阵变换中心点相对于组件变换中心点(锚点)的额外y轴偏移值。<br/>单位:px<br/>默认值:0<br/>**说明:** <br/>为0时表示y方向的矩阵变换中心恰好为组件y方向锚点,取值表示相对组件y方向锚点的额外偏移量。具体实现可参考[示例3(按中心点旋转)](arkui-ts/ts-universal-attributes-transformation.md#示例3按中心点旋转)。 |
649
650## PolyToPolyOptions<sup>12+</sup>
651
652**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
653
654**系统能力:** SystemCapability.ArkUI.ArkUI.Full
655
656| 名称 | 类型   | 必填 | 说明                                                        |
657| ---- | ------ | ---- | ----------------------------------------------------------- |
658| src    |  Array<[Point](#point12)> | 是   | 源点坐标。 |
659| srcIndex    | number | 否   | 源点坐标起始索引。<br>默认值:0 <br/> 取值范围:[0, +∞)|
660| dst    |  Array<[Point](#point12)>  | 是   | 目标点坐标。 |
661| dstIndex    | number | 否   |  目标坐标起始索引。<br>默认值:0 <br/> 取值范围:[0, +∞) |
662| pointCount    | number | 否   | 使用到的点数量。<br>默认值: src.length/2 <br/> 取值范围:[0, +∞)|
663
664## Point<sup>12+</sup>
665
666**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
667
668**系统能力:** SystemCapability.ArkUI.ArkUI.Full
669
670| 名称 | 类型   | 必填 | 说明                                                        |
671| ---- | ------ | ---- | ----------------------------------------------------------- |
672| x    |  number | 是   | x轴坐标。<br/>取值范围:(-∞, +∞) |
673| y    | number | 是   | y轴坐标。<br/>取值范围:(-∞, +∞) |
674
675## matrix4.copy<sup>(deprecated)</sup>
676
677copy(): Matrix4Transit
678
679
680Matrix的拷贝函数,可以拷贝一份当前的矩阵对象。
681
682> **说明:**
683>
684> 从API version 10开始废弃。建议使用[Matrix4Transit.copy](#copy)替代。
685
686
687**系统能力:**  SystemCapability.ArkUI.ArkUI.Full
688
689**返回值:**
690
691| 类型                              | 说明                 |
692| --------------------------------- | -------------------- |
693| [Matrix4Transit](#matrix4transit) | 当前矩阵的拷贝对象。 |
694
695**示例:**
696
697```ts
698// xxx.ets
699import { matrix4 } from '@kit.ArkUI';
700
701@Entry
702@Component
703struct Test {
704  private matrix1 = matrix4.identity().translate({ x: 100 })
705  // 对matrix1的拷贝矩阵做scale操作,不影响到matrix1
706  private matrix2 = this.matrix1.copy().scale({ x: 2 })
707
708  build() {
709    Column() {
710      Image($r("app.media.bg1"))
711        .width("40%")
712        .height(100)
713        .transform(this.matrix1)
714      Image($r("app.media.bg2"))
715        .width("40%")
716        .height(100)
717        .margin({ top: 50 })
718        .transform(this.matrix2)
719    }
720  }
721}
722```
723
724![zh-cn_image_0000001219744181](figures/zh-cn_image_0000001219744181.png)
725
726## matrix4.invert<sup>(deprecated)</sup>
727
728invert(): Matrix4Transit
729
730Matrix的逆函数,可以返回一个当前矩阵对象的逆矩阵,即效果正好相反。
731
732> **说明:**
733>
734> 从API version 10开始废弃。建议使用[Matrix4Transit.invert](#invert)替代。
735
736**系统能力:**  SystemCapability.ArkUI.ArkUI.Full
737
738**返回值:**
739
740| 类型                              | 说明                   |
741| --------------------------------- | ---------------------- |
742| [Matrix4Transit](#matrix4transit) | 当前矩阵的逆矩阵对象。 |
743
744## matrix4.combine<sup>(deprecated)</sup>
745
746combine(options: Matrix4Transit): Matrix4Transit
747
748Matrix的叠加函数,可以将两个矩阵的效果叠加起来生成一个新的矩阵对象。
749
750> **说明:**
751>
752> 从API version 10开始废弃。建议使用[Matrix4Transit.combine](#combine)替代。
753
754**系统能力:**  SystemCapability.ArkUI.ArkUI.Full
755
756**参数:**
757
758| 参数名  | 类型                              | 必填 | 说明               |
759| ------- | --------------------------------- | ---- | ------------------ |
760| options | [Matrix4Transit](#matrix4transit) | 是   | 待叠加的矩阵对象。 |
761
762**返回值:**
763
764| 类型                              | 说明                   |
765| --------------------------------- | ---------------------- |
766| [Matrix4Transit](#matrix4transit) | 叠加后的矩阵对象。 |
767
768## matrix4.translate<sup>(deprecated)</sup>
769
770translate(options: TranslateOption): Matrix4Transit
771
772Matrix的平移函数,可以为当前矩阵增加x轴/y轴/z轴平移效果。
773
774> **说明:**
775>
776> 从API version 10开始废弃。建议使用[Matrix4Transit.translate](#translate)替代。
777
778**系统能力:**  SystemCapability.ArkUI.ArkUI.Full
779
780**参数:**
781
782| 参数名  | 类型                                | 必填 | 说明           |
783| ------- | ----------------------------------- | ---- | -------------- |
784| options | [TranslateOption](#translateoption) | 是   | 设置平移参数。 |
785
786**返回值:**
787
788| 类型                              | 说明                   |
789| --------------------------------- | ---------------------- |
790| [Matrix4Transit](#matrix4transit) | 平移后的矩阵对象。 |
791
792## matrix4.scale<sup>(deprecated)</sup>
793
794scale(options: ScaleOption): Matrix4Transit
795
796Matrix的缩放函数,可以为当前矩阵增加x轴/y轴/z轴缩放效果。
797
798> **说明:**
799>
800> 从API version 10开始废弃。建议使用[Matrix4Transit.scale](#scale)替代。
801
802**系统能力:**  SystemCapability.ArkUI.ArkUI.Full
803
804**参数:**
805
806| 参数名  | 类型                        | 必填 | 说明           |
807| ------- | --------------------------- | ---- | -------------- |
808| options | [ScaleOption](#scaleoption) | 是   | 设置缩放参数。 |
809
810**返回值:**
811
812| 类型                              | 说明                   |
813| --------------------------------- | ---------------------- |
814| [Matrix4Transit](#matrix4transit) | 缩放后的矩阵对象。 |
815
816## matrix4.rotate<sup>(deprecated)</sup>
817
818rotate(options: RotateOption): Matrix4Transit
819
820Matrix的旋转函数,可以为当前矩阵增加x轴/y轴/z轴旋转效果。
821
822> **说明:**
823>
824> 从API version 10开始废弃。建议使用[Matrix4Transit.rotate](#rotate)替代。
825
826**系统能力:**  SystemCapability.ArkUI.ArkUI.Full
827
828**参数:**
829
830| 参数名  | 类型                          | 必填 | 说明           |
831| ------- | ----------------------------- | ---- | -------------- |
832| options | [RotateOption](#rotateoption) | 是   | 设置旋转参数。 |
833
834**返回值:**
835
836| 类型                              | 说明                   |
837| --------------------------------- | ---------------------- |
838| [Matrix4Transit](#matrix4transit) | 旋转后的矩阵对象。 |
839
840## matrix4.transformPoint<sup>(deprecated)</sup>
841
842transformPoint(options: [number, number]): [number, number]
843
844Matrix的坐标点转换函数,可以将当前的变换效果作用到一个坐标点上。
845
846> **说明:**
847>
848> 从API version 10开始废弃。建议使用[Matrix4Transit.transformPoint](#transformpoint)替代。
849
850**系统能力:**  SystemCapability.ArkUI.ArkUI.Full
851
852**参数:**
853
854| 参数名  | 类型             | 必填 | 说明               |
855| ------- | ---------------- | ---- | ------------------ |
856| options | [number, number] | 是   | 需要转换的坐标点。 |
857
858**返回值:**
859
860| 类型             | 说明                        |
861| ---------------- | --------------------------- |
862| [number, number] | 返回矩阵变换后的Point对象。 |