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