• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# drawing_matrix.h
2
3<!--Kit: ArkGraphics 2D-->
4<!--Subsystem: Graphic-->
5<!--Owner: @hangmengxin-->
6<!--Designer: @wangyanglan-->
7<!--Tester: @nobuggers-->
8<!--Adviser: @ge-yafang-->
9
10## 概述
11
12文件中定义了与矩阵相关的功能函数。
13
14<!--RP1-->
15**相关示例:** [NDKAPIDrawing (API14)](https://gitcode.com/openharmony/applications_app_samples/tree/master/code/DocsSample/Drawing/NDKAPIDrawing)<!--RP1End-->
16
17**引用文件:** <native_drawing/drawing_matrix.h>
18
19**库:** libnative_drawing.so
20
21**起始版本:** 11
22
23**相关模块:** [Drawing](capi-drawing.md)
24
25## 汇总
26
27### 枚举
28
29| 名称 | typedef关键字 | 描述 |
30| -- | -- | -- |
31| [OH_Drawing_ScaleToFit](#oh_drawing_scaletofit) | OH_Drawing_ScaleToFit | 矩阵缩放方式枚举。 |
32
33### 函数
34
35| 名称 | 描述 |
36| -- | -- |
37| [OH_Drawing_Matrix* OH_Drawing_MatrixCreate(void)](#oh_drawing_matrixcreate) | 用于创建一个矩阵对象。 |
38| [OH_Drawing_Matrix* OH_Drawing_MatrixCopy(const OH_Drawing_Matrix* matrix)](#oh_drawing_matrixcopy) | 用于创建一个矩阵对象的拷贝。 |
39| [OH_Drawing_Matrix* OH_Drawing_MatrixCreateRotation(float deg, float x, float y)](#oh_drawing_matrixcreaterotation) | 创建一个带旋转属性的矩阵对象。<br>该矩阵对象为:单位矩阵在(x, y)旋转点以度为单位进行旋转后得到的矩阵。 |
40| [OH_Drawing_Matrix* OH_Drawing_MatrixCreateScale(float sx, float sy, float px, float py)](#oh_drawing_matrixcreatescale) | 创建一个带缩放属性的矩阵对象。<br>该矩阵对象为:单位矩阵在(px, py)旋转点以sx和sy为缩放因子进行缩放后得到的矩阵。 |
41| [OH_Drawing_Matrix* OH_Drawing_MatrixCreateTranslation(float dx, float dy)](#oh_drawing_matrixcreatetranslation) | 创建一个带平移属性的矩阵对象。<br>该矩阵对象为:单位矩阵平移(dx, dy)后得到的矩阵。 |
42| [void OH_Drawing_MatrixSetMatrix(OH_Drawing_Matrix* matrix, float scaleX, float skewX, float transX,float skewY, float scaleY, float transY, float persp0, float persp1, float persp2)](#oh_drawing_matrixsetmatrix) | 用于给矩阵对象设置参数。<br>本接口会产生错误码,可以通过[OH_Drawing_ErrorCodeGet](capi-drawing-error-code-h.md#oh_drawing_errorcodeget)查看错误码的取值。<br>OH_Drawing_Matrix为NULL时返回OH_DRAWING_ERROR_INVALID_PARAMETER。 |
43| [bool OH_Drawing_MatrixSetRectToRect(OH_Drawing_Matrix* matrix, const OH_Drawing_Rect* src,const OH_Drawing_Rect* dst, OH_Drawing_ScaleToFit stf)](#oh_drawing_matrixsetrecttorect) | 将矩阵以缩放方式适配目标矩阵。<br>本接口会产生错误码,可以通过[OH_Drawing_ErrorCodeGet](capi-drawing-error-code-h.md#oh_drawing_errorcodeget)查看错误码的取值。<br>matrix、src、dst任意一个为NULL时返回OH_DRAWING_ERROR_INVALID_PARAMETER。 |
44| [void OH_Drawing_MatrixPreRotate(OH_Drawing_Matrix* matrix, float degree, float px, float py)](#oh_drawing_matrixprerotate) | 将矩阵设置为矩阵左乘围绕轴心点旋转一定角度的单位矩阵后得到的矩阵。 |
45| [void OH_Drawing_MatrixPreScale(OH_Drawing_Matrix* matrix, float sx, float sy, float px, float py)](#oh_drawing_matrixprescale) | 将矩阵设置为矩阵左乘围绕轴心点按一定缩放因子缩放后的单位矩阵后得到的矩阵。 |
46| [void OH_Drawing_MatrixPreTranslate(OH_Drawing_Matrix* matrix, float dx, float dy)](#oh_drawing_matrixpretranslate) | 将矩阵设置为矩阵左乘平移一定距离后的单位矩阵后得到的矩阵。 |
47| [void OH_Drawing_MatrixPostRotate(OH_Drawing_Matrix* matrix, float degree, float px, float py)](#oh_drawing_matrixpostrotate) | 将矩阵设置为矩阵右乘围绕轴心点旋转一定角度的单位矩阵后得到的矩阵。 |
48| [void OH_Drawing_MatrixPostScale(OH_Drawing_Matrix* matrix, float sx, float sy, float px, float py)](#oh_drawing_matrixpostscale) | 将矩阵设置为矩阵右乘围绕轴心点按一定缩放因子缩放后的单位矩阵后得到的矩阵。 |
49| [void OH_Drawing_MatrixPostTranslate(OH_Drawing_Matrix* matrix, float dx, float dy)](#oh_drawing_matrixposttranslate) | 将矩阵设置为矩阵右乘平移一定距离后的单位矩阵后得到的矩阵。 |
50| [void OH_Drawing_MatrixReset(OH_Drawing_Matrix* matrix)](#oh_drawing_matrixreset) | 重置当前矩阵为单位矩阵。 |
51| [void OH_Drawing_MatrixConcat(OH_Drawing_Matrix* total, const OH_Drawing_Matrix* a,const OH_Drawing_Matrix* b)](#oh_drawing_matrixconcat) | 将矩阵total设置为矩阵a乘以矩阵b。 |
52| [OH_Drawing_ErrorCode OH_Drawing_MatrixGetAll(OH_Drawing_Matrix* matrix, float value[9])](#oh_drawing_matrixgetall) | 获取矩阵所有元素值。 |
53| [float OH_Drawing_MatrixGetValue(OH_Drawing_Matrix* matrix, int index)](#oh_drawing_matrixgetvalue) | 获取矩阵给定索引位的值。索引范围0-8。<br>本接口会产生错误码,可以通过[OH_Drawing_ErrorCodeGet](capi-drawing-error-code-h.md#oh_drawing_errorcodeget)查看错误码的取值。<br>matrix为NULL时返回OH_DRAWING_ERROR_INVALID_PARAMETER;<br>index小于0或者大于8时返回OH_DRAWING_ERROR_PARAMETER_OUT_OF_RANGE。 |
54| [void OH_Drawing_MatrixRotate(OH_Drawing_Matrix* matrix, float degree, float px, float py)](#oh_drawing_matrixrotate) | 设置矩阵为单位矩阵,并围绕位于(px, py)的旋转轴点进行旋转。<br>本接口会产生错误码,可以通过[OH_Drawing_ErrorCodeGet](capi-drawing-error-code-h.md#oh_drawing_errorcodeget)查看错误码的取值。<br>matrix为NULL时返回OH_DRAWING_ERROR_INVALID_PARAMETER。 |
55| [void OH_Drawing_MatrixTranslate(OH_Drawing_Matrix* matrix, float dx, float dy)](#oh_drawing_matrixtranslate) | 设置矩阵为单位矩阵,并平移(dx, dy)。<br>本接口会产生错误码,可以通过[OH_Drawing_ErrorCodeGet](capi-drawing-error-code-h.md#oh_drawing_errorcodeget)查看错误码的取值。<br>matrix为NULL时返回OH_DRAWING_ERROR_INVALID_PARAMETER。 |
56| [void OH_Drawing_MatrixScale(OH_Drawing_Matrix* matrix, float sx, float sy, float px, float py)](#oh_drawing_matrixscale) | 设置矩阵为单位矩阵,并围绕位于(px, py)的旋转轴点,以sx和sy进行缩放。<br>本接口会产生错误码,可以通过[OH_Drawing_ErrorCodeGet](capi-drawing-error-code-h.md#oh_drawing_errorcodeget)查看错误码的取值。<br>matrix为NULL时返回OH_DRAWING_ERROR_INVALID_PARAMETER。 |
57| [bool OH_Drawing_MatrixInvert(OH_Drawing_Matrix* matrix, OH_Drawing_Matrix* inverse)](#oh_drawing_matrixinvert) | 将矩阵inverse设置为矩阵的倒数,并返回结果。<br>本接口会产生错误码,可以通过[OH_Drawing_ErrorCodeGet](capi-drawing-error-code-h.md#oh_drawing_errorcodeget)查看错误码的取值。<br>matrix、inverse任意一个为NULL时返回OH_DRAWING_ERROR_INVALID_PARAMETER。 |
58| [bool OH_Drawing_MatrixSetPolyToPoly(OH_Drawing_Matrix* matrix, const OH_Drawing_Point2D* src,const OH_Drawing_Point2D* dst, uint32_t count)](#oh_drawing_matrixsetpolytopoly) | 通过设置源点以及目标点,生成对应的变换矩阵。<br>源点以及目标点的个数要大于等于0,小于等于4。本接口会产生错误码,可以通过[OH_Drawing_ErrorCodeGet](capi-drawing-error-code-h.md#oh_drawing_errorcodeget)查看错误码的取值。<br>matrix为NULL时返回OH_DRAWING_ERROR_INVALID_PARAMETER;<br>count小于0或者大于4时返回OH_DRAWING_ERROR_PARAMETER_OUT_OF_RANGE。 |
59| [void OH_Drawing_MatrixMapPoints(const OH_Drawing_Matrix* matrix, const OH_Drawing_Point2D* src,OH_Drawing_Point2D* dst, int count)](#oh_drawing_matrixmappoints) | 通过矩阵变换将源点数组映射到目标点数组。<br>本接口会产生错误码,可以通过[OH_Drawing_ErrorCodeGet](capi-drawing-error-code-h.md#oh_drawing_errorcodeget)查看错误码的取值。<br>matrix、src、dst任意一个为NULL或者count小于等于0时返回OH_DRAWING_ERROR_INVALID_PARAMETER。 |
60| [bool OH_Drawing_MatrixMapRect(const OH_Drawing_Matrix* matrix, const OH_Drawing_Rect* src, OH_Drawing_Rect* dst)](#oh_drawing_matrixmaprect) | 将目标矩形设置为一个新的矩形,该矩形是能够包围源矩形的四个顶点通过矩阵变换映射后形成的新顶点的最小矩形。<br>本接口会产生错误码,可以通过[OH_Drawing_ErrorCodeGet](capi-drawing-error-code-h.md#oh_drawing_errorcodeget)查看错误码的取值。<br>matrix、src、dst任意一个为NULL时返回OH_DRAWING_ERROR_INVALID_PARAMETER。 |
61| [bool OH_Drawing_MatrixIsEqual(OH_Drawing_Matrix* matrix, OH_Drawing_Matrix* other)](#oh_drawing_matrixisequal) | 判断两个矩阵是否相等。<br>本接口会产生错误码,可以通过[OH_Drawing_ErrorCodeGet](capi-drawing-error-code-h.md#oh_drawing_errorcodeget)查看错误码的取值。<br>matrix、other任意一个为NULL时返回OH_DRAWING_ERROR_INVALID_PARAMETER。 |
62| [bool OH_Drawing_MatrixIsIdentity(OH_Drawing_Matrix* matrix)](#oh_drawing_matrixisidentity) | 判断矩阵是否是单位矩阵。  |
63| [void OH_Drawing_MatrixDestroy(OH_Drawing_Matrix* matrix)](#oh_drawing_matrixdestroy) | 用于销毁矩阵对象并回收该对象占有的内存。 |
64
65## 枚举类型说明
66
67### OH_Drawing_ScaleToFit
68
69```
70enum OH_Drawing_ScaleToFit
71```
72
73**描述**
74
75矩阵缩放方式枚举。
76
77**起始版本:** 12
78
79| 枚举项 | 描述 |
80| -- | -- |
81| SCALE_TO_FIT_FILL | 按水平轴和垂直轴缩放以填充目标矩形。 |
82| SCALE_TO_FIT_START | 缩放并对齐到左侧和顶部。 |
83| SCALE_TO_FIT_CENTER | 缩放并居中对齐。 |
84| SCALE_TO_FIT_END | 缩放并向右和向下对齐。 |
85
86
87## 函数说明
88
89### OH_Drawing_MatrixCreate()
90
91```
92OH_Drawing_Matrix* OH_Drawing_MatrixCreate(void)
93```
94
95**描述**
96
97用于创建一个矩阵对象。
98
99**系统能力:** SystemCapability.Graphic.Graphic2D.NativeDrawing
100
101**起始版本:** 11
102
103**返回:**
104
105| 类型 | 说明 |
106| -- | -- |
107| [OH_Drawing_Matrix](capi-drawing-oh-drawing-matrix.md)* | 函数会返回一个指针,指针指向创建的矩阵对象。 |
108
109### OH_Drawing_MatrixCopy()
110
111```
112OH_Drawing_Matrix* OH_Drawing_MatrixCopy(const OH_Drawing_Matrix* matrix)
113```
114
115**描述**
116
117用于创建一个矩阵对象的拷贝。
118
119**系统能力:** SystemCapability.Graphic.Graphic2D.NativeDrawing
120
121**起始版本:** 20
122
123
124**参数:**
125
126| 参数项 | 描述 |
127| -- | -- |
128| const [OH_Drawing_Matrix](capi-drawing-oh-drawing-matrix.md)* matrix | 指向用于拷贝的矩阵对象[OH_Drawing_Matrix](capi-drawing-oh-drawing-matrix.md)的指针。 |
129
130**返回:**
131
132| 类型 | 说明 |
133| -- | -- |
134| [OH_Drawing_Matrix](capi-drawing-oh-drawing-matrix.md)* | 函数会返回一个指针,指针指向创建的新矩阵对象。 |
135
136### OH_Drawing_MatrixCreateRotation()
137
138```
139OH_Drawing_Matrix* OH_Drawing_MatrixCreateRotation(float deg, float x, float y)
140```
141
142**描述**
143
144创建一个带旋转属性的矩阵对象。<br>该矩阵对象为:单位矩阵在(x, y)旋转点以度为单位进行旋转后得到的矩阵。
145
146**系统能力:** SystemCapability.Graphic.Graphic2D.NativeDrawing
147
148**起始版本:** 12
149
150
151**参数:**
152
153| 参数项 | 描述 |
154| -- | -- |
155| float deg | 旋转的角度,单位为度。正数表示按顺时针旋转,负数表示按逆时针旋转。 |
156| float x | 轴上坐标点。 |
157| float y | 轴上坐标点。 |
158
159**返回:**
160
161| 类型 | 说明 |
162| -- | -- |
163| [OH_Drawing_Matrix](capi-drawing-oh-drawing-matrix.md)* | 函数返回一个指针,指针指向创建的矩阵对象[OH_Drawing_Matrix](capi-drawing-oh-drawing-matrix.md)。 |
164
165### OH_Drawing_MatrixCreateScale()
166
167```
168OH_Drawing_Matrix* OH_Drawing_MatrixCreateScale(float sx, float sy, float px, float py)
169```
170
171**描述**
172
173创建一个带缩放属性的矩阵对象。<br>该矩阵对象为:单位矩阵在(px, py)旋转点以sx和sy为缩放因子进行缩放后得到的矩阵。
174
175**系统能力:** SystemCapability.Graphic.Graphic2D.NativeDrawing
176
177**起始版本:** 12
178
179
180**参数:**
181
182| 参数项 | 描述 |
183| -- | -- |
184| float sx | 水平缩放因子,为负数时可看作是先关于y = px作镜像翻转后再进行缩放,该参数为浮点数。 |
185| float sy | 垂直缩放因子,为负数时可看作是先关于x = py作镜像翻转后再进行缩放,该参数为浮点数。 |
186| float px | 轴上坐标点。 |
187| float py | 轴上坐标点。 |
188
189**返回:**
190
191| 类型 | 说明 |
192| -- | -- |
193| [OH_Drawing_Matrix](capi-drawing-oh-drawing-matrix.md)* | 函数返回一个指针,指针指向创建的矩阵对象[OH_Drawing_Matrix](capi-drawing-oh-drawing-matrix.md)。 |
194
195### OH_Drawing_MatrixCreateTranslation()
196
197```
198OH_Drawing_Matrix* OH_Drawing_MatrixCreateTranslation(float dx, float dy)
199```
200
201**描述**
202
203创建一个带平移属性的矩阵对象。<br>该矩阵对象为:单位矩阵平移(dx, dy)后得到的矩阵。
204
205**系统能力:** SystemCapability.Graphic.Graphic2D.NativeDrawing
206
207**起始版本:** 12
208
209
210**参数:**
211
212| 参数项 | 描述 |
213| -- | -- |
214| float dx | 水平方向平移距离,正数表示往x轴正方向平移,负数表示往x轴负方向平移,该参数为浮点数。 |
215| float dy | 垂直方向平移距离,正数表示往y轴正方向平移,负数表示往y轴负方向平移,该参数为浮点数。 |
216
217**返回:**
218
219| 类型 | 说明 |
220| -- | -- |
221| [OH_Drawing_Matrix](capi-drawing-oh-drawing-matrix.md)* | 函数返回一个指针,指针指向创建的矩阵对象[OH_Drawing_Matrix](capi-drawing-oh-drawing-matrix.md)。 |
222
223### OH_Drawing_MatrixSetMatrix()
224
225```
226void OH_Drawing_MatrixSetMatrix(OH_Drawing_Matrix* matrix, float scaleX, float skewX, float transX,float skewY, float scaleY, float transY, float persp0, float persp1, float persp2)
227```
228
229**描述**
230
231用于给矩阵对象设置参数。<br>本接口会产生错误码,可以通过[OH_Drawing_ErrorCodeGet](capi-drawing-error-code-h.md#oh_drawing_errorcodeget)查看错误码的取值。<br>OH_Drawing_Matrix为NULL时返回OH_DRAWING_ERROR_INVALID_PARAMETER。
232
233**系统能力:** SystemCapability.Graphic.Graphic2D.NativeDrawing
234
235**起始版本:** 11
236
237
238**参数:**
239
240| 参数项 | 描述 |
241| -- | -- |
242| [OH_Drawing_Matrix](capi-drawing-oh-drawing-matrix.md)* matrix | 指向矩阵对象的指针。 |
243| float scaleX | 水平缩放系数。 |
244| float skewX | 水平倾斜系数。 |
245| float transX | 水平位移系数。 |
246| float skewY | 垂直倾斜系数。 |
247| float scaleY | 垂直缩放系数。 |
248| float transY | 垂直位移系数。 |
249| float persp0 | X轴透视系数。 |
250| float persp1 | Y轴透视系数。 |
251| float persp2 | 透视缩放系数。 |
252
253### OH_Drawing_MatrixSetRectToRect()
254
255```
256bool OH_Drawing_MatrixSetRectToRect(OH_Drawing_Matrix* matrix, const OH_Drawing_Rect* src,const OH_Drawing_Rect* dst, OH_Drawing_ScaleToFit stf)
257```
258
259**描述**
260
261将矩阵以缩放方式适配目标矩阵。<br>本接口会产生错误码,可以通过[OH_Drawing_ErrorCodeGet](capi-drawing-error-code-h.md#oh_drawing_errorcodeget)查看错误码的取值。<br>matrix、src、dst任意一个为NULL时返回OH_DRAWING_ERROR_INVALID_PARAMETER。
262
263**系统能力:** SystemCapability.Graphic.Graphic2D.NativeDrawing
264
265**起始版本:** 12
266
267
268**参数:**
269
270| 参数项 | 描述 |
271| -- | -- |
272| [OH_Drawing_Matrix](capi-drawing-oh-drawing-matrix.md)* matrix | 指向矩阵对象[OH_Drawing_Matrix](capi-drawing-oh-drawing-matrix.md)的指针。 |
273| const [OH_Drawing_Rect](capi-drawing-oh-drawing-rect.md)* src | 指向映射源的[OH_Drawing_Rect](capi-drawing-oh-drawing-rect.md)对象Rect的指针。 |
274| const [OH_Drawing_Rect](capi-drawing-oh-drawing-rect.md)* dst | 指向要映射到的[OH_Drawing_Rect](capi-drawing-oh-drawing-rect.md)对象Rect的指针。 |
275| [OH_Drawing_ScaleToFit](#oh_drawing_scaletofit) stf | 缩放方式,支持方式[OH_Drawing_ScaleToFit](capi-drawing-matrix-h.md#oh_drawing_scaletofit)。 |
276
277**返回:**
278
279| 类型 | 说明 |
280| -- | -- |
281| bool | 如果设置失败,则返回false;如果设置成功,则返回true;如果矩阵为空,则返回true,并将矩阵设置为:<br> 如果源矩形src的宽高任意一个小于等于0,则返回false,并将矩阵设置为单位矩阵;<br> 如果目标矩形dst的宽高任意一个小于等于0,则返回true,并将矩阵设置为除透视缩放系数为1外其余值皆为0的矩阵; |
282
283### OH_Drawing_MatrixPreRotate()
284
285```
286void OH_Drawing_MatrixPreRotate(OH_Drawing_Matrix* matrix, float degree, float px, float py)
287```
288
289**描述**
290
291将矩阵设置为矩阵左乘围绕轴心点旋转一定角度的单位矩阵后得到的矩阵。<br>本接口会产生错误码,可以通过[OH_Drawing_ErrorCodeGet](capi-drawing-error-code-h.md#oh_drawing_errorcodeget)查看错误码的取值。<br>matrix为NULL时返回OH_DRAWING_ERROR_INVALID_PARAMETER。
292
293**系统能力:** SystemCapability.Graphic.Graphic2D.NativeDrawing
294
295**起始版本:** 12
296
297
298**参数:**
299
300| 参数项 | 描述 |
301| -- | -- |
302| [OH_Drawing_Matrix](capi-drawing-oh-drawing-matrix.md)* matrix | 指向矩阵对象[OH_Drawing_Matrix](capi-drawing-oh-drawing-matrix.md)的指针。 |
303| float degree | 旋转角度,单位为度。正数表示顺时针旋转,负数表示逆时针旋转。 |
304| float px | 旋转中心点的横坐标。 |
305| float py | 旋转中心点的纵坐标。 |
306
307### OH_Drawing_MatrixPreScale()
308
309```
310void OH_Drawing_MatrixPreScale(OH_Drawing_Matrix* matrix, float sx, float sy, float px, float py)
311```
312
313**描述**
314
315将矩阵设置为矩阵左乘围绕轴心点按一定缩放因子缩放后的单位矩阵后得到的矩阵。
316
317本接口会产生错误码,可以通过[OH_Drawing_ErrorCodeGet](capi-drawing-error-code-h.md#oh_drawing_errorcodeget)查看错误码的取值。<br>matrix为NULL时返回OH_DRAWING_ERROR_INVALID_PARAMETER。
318
319**系统能力:** SystemCapability.Graphic.Graphic2D.NativeDrawing
320
321**起始版本:** 12
322
323
324**参数:**
325
326| 参数项 | 描述 |
327| -- | -- |
328| [OH_Drawing_Matrix](capi-drawing-oh-drawing-matrix.md)* matrix | 指向矩阵对象[OH_Drawing_Matrix](capi-drawing-oh-drawing-matrix.md)的指针。 |
329| float sx | 轴方向的缩放比例因子,为负数时可看作是先关于y = px作镜像翻转后再进行缩放,该参数为浮点数。 |
330| float sy | 轴方向的缩放比例因子,为负数时可看作是先关于x = py作镜像翻转后再进行缩放,该参数为浮点数。 |
331| float px | 缩放中心点的横坐标。 |
332| float py | 缩放中心点的纵坐标。 |
333
334### OH_Drawing_MatrixPreTranslate()
335
336```
337void OH_Drawing_MatrixPreTranslate(OH_Drawing_Matrix* matrix, float dx, float dy)
338```
339
340**描述**
341
342将矩阵设置为矩阵左乘平移一定距离后的单位矩阵后得到的矩阵。<br>本接口会产生错误码,可以通过[OH_Drawing_ErrorCodeGet](capi-drawing-error-code-h.md#oh_drawing_errorcodeget)查看错误码的取值。<br>matrix为NULL时返回OH_DRAWING_ERROR_INVALID_PARAMETER。
343
344**系统能力:** SystemCapability.Graphic.Graphic2D.NativeDrawing
345
346**起始版本:** 12
347
348
349**参数:**
350
351| 参数项 | 描述 |
352| -- | -- |
353| [OH_Drawing_Matrix](capi-drawing-oh-drawing-matrix.md)* matrix | 指向矩阵对象[OH_Drawing_Matrix](capi-drawing-oh-drawing-matrix.md)的指针。 |
354| float dx | 表示在x轴方向上的平移距离,正数表示往x轴正方向平移,负数表示往x轴负方向平移,该参数为浮点数。 |
355| float dy | 表示在y轴方向上的平移距离,正数表示往y轴正方向平移,负数表示往y轴负方向平移,该参数为浮点数。 |
356
357### OH_Drawing_MatrixPostRotate()
358
359```
360void OH_Drawing_MatrixPostRotate(OH_Drawing_Matrix* matrix, float degree, float px, float py)
361```
362
363**描述**
364
365将矩阵设置为矩阵右乘围绕轴心点旋转一定角度的单位矩阵后得到的矩阵。<br>本接口会产生错误码,可以通过[OH_Drawing_ErrorCodeGet](capi-drawing-error-code-h.md#oh_drawing_errorcodeget)查看错误码的取值。<br>matrix为NULL时返回OH_DRAWING_ERROR_INVALID_PARAMETER。
366
367**系统能力:** SystemCapability.Graphic.Graphic2D.NativeDrawing
368
369**起始版本:** 12
370
371
372**参数:**
373
374| 参数项 | 描述 |
375| -- | -- |
376| [OH_Drawing_Matrix](capi-drawing-oh-drawing-matrix.md)* matrix | 指向矩阵对象[OH_Drawing_Matrix](capi-drawing-oh-drawing-matrix.md)的指针。 |
377| float degree | 旋转角度,单位为度。正数表示顺时针旋转,负数表示逆时针旋转。 |
378| float px | 旋转中心点的横坐标。 |
379| float py | 旋转中心点的纵坐标。 |
380
381### OH_Drawing_MatrixPostScale()
382
383```
384void OH_Drawing_MatrixPostScale(OH_Drawing_Matrix* matrix, float sx, float sy, float px, float py)
385```
386
387**描述**
388
389将矩阵设置为矩阵右乘围绕轴心点按一定缩放因子缩放后的单位矩阵后得到的矩阵。<br>本接口会产生错误码,可以通过[OH_Drawing_ErrorCodeGet](capi-drawing-error-code-h.md#oh_drawing_errorcodeget)查看错误码的取值。<br>matrix为NULL时返回OH_DRAWING_ERROR_INVALID_PARAMETER。
390
391**系统能力:** SystemCapability.Graphic.Graphic2D.NativeDrawing
392
393**起始版本:** 12
394
395
396**参数:**
397
398| 参数项 | 描述 |
399| -- | -- |
400| [OH_Drawing_Matrix](capi-drawing-oh-drawing-matrix.md)* matrix | 指向矩阵对象[OH_Drawing_Matrix](capi-drawing-oh-drawing-matrix.md)的指针。 |
401| float sx | 轴方向的缩放比例因子,为负数时可看作是先关于y = px作镜像翻转后再进行缩放,该参数为浮点数。 |
402| float sy | 轴方向的缩放比例因子,为负数时可看作是先关于x = py作镜像翻转后再进行缩放,该参数为浮点数。 |
403| float px | 缩放中心点的横坐标。 |
404| float py | 缩放中心点的纵坐标。 |
405
406### OH_Drawing_MatrixPostTranslate()
407
408```
409void OH_Drawing_MatrixPostTranslate(OH_Drawing_Matrix* matrix, float dx, float dy)
410```
411
412**描述**
413
414将矩阵设置为矩阵右乘平移一定距离后的单位矩阵后得到的矩阵。<br>本接口会产生错误码,可以通过[OH_Drawing_ErrorCodeGet](capi-drawing-error-code-h.md#oh_drawing_errorcodeget)查看错误码的取值。<br>matrix为NULL时返回OH_DRAWING_ERROR_INVALID_PARAMETER。
415
416**系统能力:** SystemCapability.Graphic.Graphic2D.NativeDrawing
417
418**起始版本:** 12
419
420
421**参数:**
422
423| 参数项 | 描述 |
424| -- | -- |
425| [OH_Drawing_Matrix](capi-drawing-oh-drawing-matrix.md)* matrix | 指向矩阵对象[OH_Drawing_Matrix](capi-drawing-oh-drawing-matrix.md)的指针。 |
426| float dx | 表示在x轴方向上的平移距离,正数表示往x轴正方向平移,负数表示往x轴负方向平移,该参数为浮点数。 |
427| float dy | 表示在y轴方向上的平移距离,正数表示往y轴正方向平移,负数表示往y轴负方向平移,该参数为浮点数。 |
428
429### OH_Drawing_MatrixReset()
430
431```
432void OH_Drawing_MatrixReset(OH_Drawing_Matrix* matrix)
433```
434
435**描述**
436
437重置当前矩阵为单位矩阵。<br>本接口会产生错误码,可以通过[OH_Drawing_ErrorCodeGet](capi-drawing-error-code-h.md#oh_drawing_errorcodeget)查看错误码的取值。<br>matrix为NULL时返回OH_DRAWING_ERROR_INVALID_PARAMETER。
438
439**系统能力:** SystemCapability.Graphic.Graphic2D.NativeDrawing
440
441**起始版本:** 12
442
443
444**参数:**
445
446| 参数项 | 描述 |
447| -- | -- |
448| [OH_Drawing_Matrix](capi-drawing-oh-drawing-matrix.md)* matrix | 指向矩阵对象[OH_Drawing_Matrix](capi-drawing-oh-drawing-matrix.md)的指针。 |
449
450### OH_Drawing_MatrixConcat()
451
452```
453void OH_Drawing_MatrixConcat(OH_Drawing_Matrix* total, const OH_Drawing_Matrix* a,const OH_Drawing_Matrix* b)
454```
455
456**描述**
457
458将矩阵total设置为矩阵a乘以矩阵b。<br>本接口会产生错误码,可以通过[OH_Drawing_ErrorCodeGet](capi-drawing-error-code-h.md#oh_drawing_errorcodeget)查看错误码的取值。<br>total、a、b任意一个为NULL时返回OH_DRAWING_ERROR_INVALID_PARAMETER。
459
460**系统能力:** SystemCapability.Graphic.Graphic2D.NativeDrawing
461
462**起始版本:** 12
463
464
465**参数:**
466
467| 参数项 | 描述 |
468| -- | -- |
469| [OH_Drawing_Matrix](capi-drawing-oh-drawing-matrix.md)* total | 指向最终的矩阵对象[OH_Drawing_Matrix](capi-drawing-oh-drawing-matrix.md)的指针。 |
470| const [OH_Drawing_Matrix](capi-drawing-oh-drawing-matrix.md)* a | 指向矩阵对象a[OH_Drawing_Matrix](capi-drawing-oh-drawing-matrix.md)的指针。 |
471| const [OH_Drawing_Matrix](capi-drawing-oh-drawing-matrix.md)* b | 指向矩阵对象b[OH_Drawing_Matrix](capi-drawing-oh-drawing-matrix.md)的指针。 |
472
473### OH_Drawing_MatrixGetAll()
474
475```
476OH_Drawing_ErrorCode OH_Drawing_MatrixGetAll(OH_Drawing_Matrix* matrix, float value[9])
477```
478
479**描述**
480
481获取矩阵所有元素值。
482
483**系统能力:** SystemCapability.Graphic.Graphic2D.NativeDrawing
484
485**起始版本:** 12
486
487
488**参数:**
489
490| 参数项 | 描述 |
491| -- | -- |
492| [OH_Drawing_Matrix](capi-drawing-oh-drawing-matrix.md)* matrix | 指向矩阵对象[OH_Drawing_Matrix](capi-drawing-oh-drawing-matrix.md)的指针。 |
493| value |  用于存储得到的矩阵元素值的数组。 |
494
495**返回:**
496
497| 类型 | 说明 |
498| -- | -- |
499| [OH_Drawing_ErrorCode](capi-drawing-error-code-h.md#oh_drawing_errorcode) | 返回错误码。<br> 返回OH_DRAWING_SUCCESS,表示成功获取矩阵的所有元素值。<br> 返回OH_DRAWING_ERROR_INVALID_PARAMETER,表示获取矩阵元素值失败,原因是矩阵对象或者存储矩阵元素值数组为空。 |
500
501### OH_Drawing_MatrixGetValue()
502
503```
504float OH_Drawing_MatrixGetValue(OH_Drawing_Matrix* matrix, int index)
505```
506
507**描述**
508
509获取矩阵给定索引位的值。索引范围0-8。<br>本接口会产生错误码,可以通过[OH_Drawing_ErrorCodeGet](capi-drawing-error-code-h.md#oh_drawing_errorcodeget)查看错误码的取值。<br>matrix为NULL时返回OH_DRAWING_ERROR_INVALID_PARAMETER;<br>index小于0或者大于8时返回OH_DRAWING_ERROR_PARAMETER_OUT_OF_RANGE。
510
511**系统能力:** SystemCapability.Graphic.Graphic2D.NativeDrawing
512
513**起始版本:** 12
514
515
516**参数:**
517
518| 参数项 | 描述 |
519| -- | -- |
520| [OH_Drawing_Matrix](capi-drawing-oh-drawing-matrix.md)* matrix | 指向矩阵对象[OH_Drawing_Matrix](capi-drawing-oh-drawing-matrix.md)的指针。 |
521| int index | 索引位置,范围0-8。 |
522
523**返回:**
524
525| 类型 | 说明 |
526| -- | -- |
527| float | 函数返回矩阵给定索引位对应的值。 |
528
529### OH_Drawing_MatrixRotate()
530
531```
532void OH_Drawing_MatrixRotate(OH_Drawing_Matrix* matrix, float degree, float px, float py)
533```
534
535**描述**
536
537设置矩阵为单位矩阵,并围绕位于(px, py)的旋转轴点进行旋转。<br>本接口会产生错误码,可以通过[OH_Drawing_ErrorCodeGet](capi-drawing-error-code-h.md#oh_drawing_errorcodeget)查看错误码的取值。<br>matrix为NULL时返回OH_DRAWING_ERROR_INVALID_PARAMETER。
538
539**系统能力:** SystemCapability.Graphic.Graphic2D.NativeDrawing
540
541**起始版本:** 12
542
543
544**参数:**
545
546| 参数项 | 描述 |
547| -- | -- |
548| [OH_Drawing_Matrix](capi-drawing-oh-drawing-matrix.md)* matrix | 指向矩阵对象[OH_Drawing_Matrix](capi-drawing-oh-drawing-matrix.md)的指针。 |
549| float degree | 角度,单位为度。正数表示顺时针旋转,负数表示逆时针旋转。 |
550| float px | 轴上坐标点。 |
551| float py | 轴上坐标点。 |
552
553### OH_Drawing_MatrixTranslate()
554
555```
556void OH_Drawing_MatrixTranslate(OH_Drawing_Matrix* matrix, float dx, float dy)
557```
558
559**描述**
560
561设置矩阵为单位矩阵,并平移(dx, dy)。<br>本接口会产生错误码,可以通过[OH_Drawing_ErrorCodeGet](capi-drawing-error-code-h.md#oh_drawing_errorcodeget)查看错误码的取值。<br>matrix为NULL时返回OH_DRAWING_ERROR_INVALID_PARAMETER。
562
563**系统能力:** SystemCapability.Graphic.Graphic2D.NativeDrawing
564
565**起始版本:** 12
566
567
568**参数:**
569
570| 参数项 | 描述 |
571| -- | -- |
572| [OH_Drawing_Matrix](capi-drawing-oh-drawing-matrix.md)* matrix | 指向矩阵对象[OH_Drawing_Matrix](capi-drawing-oh-drawing-matrix.md)的指针。 |
573| float dx | 水平方向平移距离,正数表示往x轴正方向平移,负数表示往x轴负方向平移,该参数为浮点数。 |
574| float dy | 垂直方向平移距离,正数表示往y轴正方向平移,负数表示往y轴负方向平移,该参数为浮点数。 |
575
576### OH_Drawing_MatrixScale()
577
578```
579void OH_Drawing_MatrixScale(OH_Drawing_Matrix* matrix, float sx, float sy, float px, float py)
580```
581
582**描述**
583
584设置矩阵为单位矩阵,并围绕位于(px, py)的旋转轴点,以sx和sy进行缩放。<br>本接口会产生错误码,可以通过[OH_Drawing_ErrorCodeGet](capi-drawing-error-code-h.md#oh_drawing_errorcodeget)查看错误码的取值。<br>matrix为NULL时返回OH_DRAWING_ERROR_INVALID_PARAMETER。
585
586**系统能力:** SystemCapability.Graphic.Graphic2D.NativeDrawing
587
588**起始版本:** 12
589
590
591**参数:**
592
593| 参数项 | 描述 |
594| -- | -- |
595| [OH_Drawing_Matrix](capi-drawing-oh-drawing-matrix.md)* matrix | 指向矩阵对象[OH_Drawing_Matrix](capi-drawing-oh-drawing-matrix.md)的指针。 |
596| float sx | 水平缩放因子,为负数时可看作是先关于y = px作镜像翻转后再进行缩放,该参数为浮点数。 |
597| float sy | 垂直缩放因子,为负数时可看作是先关于x = py作镜像翻转后再进行缩放,该参数为浮点数。 |
598| float px | 轴上坐标点。 |
599| float py | 轴上坐标点。 |
600
601### OH_Drawing_MatrixInvert()
602
603```
604bool OH_Drawing_MatrixInvert(OH_Drawing_Matrix* matrix, OH_Drawing_Matrix* inverse)
605```
606
607**描述**
608
609将矩阵inverse设置为矩阵的倒数,并返回结果。<br>本接口会产生错误码,可以通过[OH_Drawing_ErrorCodeGet](capi-drawing-error-code-h.md#oh_drawing_errorcodeget)查看错误码的取值。<br>matrix、inverse任意一个为NULL时返回OH_DRAWING_ERROR_INVALID_PARAMETER。
610
611**系统能力:** SystemCapability.Graphic.Graphic2D.NativeDrawing
612
613**起始版本:** 12
614
615
616**参数:**
617
618| 参数项 | 描述 |
619| -- | -- |
620| [OH_Drawing_Matrix](capi-drawing-oh-drawing-matrix.md)* matrix | 指向矩阵对象[OH_Drawing_Matrix](capi-drawing-oh-drawing-matrix.md)的指针。 |
621| [OH_Drawing_Matrix](capi-drawing-oh-drawing-matrix.md)* inverse | 指向逆矩阵对象[OH_Drawing_Matrix](capi-drawing-oh-drawing-matrix.md)的指针,开发者可调用[OH_Drawing_MatrixCreate](capi-drawing-matrix-h.md#oh_drawing_matrixcreate)接口创建。 |
622
623**返回:**
624
625| 类型 | 说明 |
626| -- | -- |
627| bool | 函数返回true表示矩阵可逆,inverse被填充为逆矩阵;函数返回false表示矩阵不可逆,inverse不被改变。 |
628
629### OH_Drawing_MatrixSetPolyToPoly()
630
631```
632bool OH_Drawing_MatrixSetPolyToPoly(OH_Drawing_Matrix* matrix, const OH_Drawing_Point2D* src,const OH_Drawing_Point2D* dst, uint32_t count)
633```
634
635**描述**
636
637通过设置源点以及目标点,生成对应的变换矩阵。<br>源点以及目标点的个数要大于等于0,小于等于4。本接口会产生错误码,可以通过[OH_Drawing_ErrorCodeGet](capi-drawing-error-code-h.md#oh_drawing_errorcodeget)查看错误码的取值。<br>matrix为NULL时返回OH_DRAWING_ERROR_INVALID_PARAMETER;<br>count小于0或者大于4时返回OH_DRAWING_ERROR_PARAMETER_OUT_OF_RANGE。
638
639**系统能力:** SystemCapability.Graphic.Graphic2D.NativeDrawing
640
641**起始版本:** 12
642
643
644**参数:**
645
646| 参数项 | 描述 |
647| -- | -- |
648| [OH_Drawing_Matrix](capi-drawing-oh-drawing-matrix.md)* matrix | 指向矩阵对象[OH_Drawing_Matrix](capi-drawing-oh-drawing-matrix.md)的指针。 |
649| const [OH_Drawing_Point2D](capi-drawing-oh-drawing-point2d.md)* src | 源点数组,为NULL时count应当为0。 |
650| const [OH_Drawing_Point2D](capi-drawing-oh-drawing-point2d.md)* dst | 目标点数组,个数要与源点相等,为NULL时count应当为0。 |
651| uint32_t count | 源点数组以及目标点数组的个数,为0时将矩阵对象设为单位矩阵。 |
652
653**返回:**
654
655| 类型 | 说明 |
656| -- | -- |
657| bool | 函数返回是否可以生成对应矩阵以用来完成变换。true表示矩阵生成成功,false表示无法生成对应矩阵。 |
658
659### OH_Drawing_MatrixMapPoints()
660
661```
662void OH_Drawing_MatrixMapPoints(const OH_Drawing_Matrix* matrix, const OH_Drawing_Point2D* src,OH_Drawing_Point2D* dst, int count)
663```
664
665**描述**
666
667通过矩阵变换将源点数组映射到目标点数组。<br>本接口会产生错误码,可以通过[OH_Drawing_ErrorCodeGet](capi-drawing-error-code-h.md#oh_drawing_errorcodeget)查看错误码的取值。<br>matrix、src、dst任意一个为NULL或者count小于等于0时返回OH_DRAWING_ERROR_INVALID_PARAMETER。
668
669**系统能力:** SystemCapability.Graphic.Graphic2D.NativeDrawing
670
671**起始版本:** 12
672
673
674**参数:**
675
676| 参数项 | 描述 |
677| -- | -- |
678| const [OH_Drawing_Matrix](capi-drawing-oh-drawing-matrix.md)* matrix | 指向矩阵对象[OH_Drawing_Matrix](capi-drawing-oh-drawing-matrix.md)的指针。 |
679| const [OH_Drawing_Point2D](capi-drawing-oh-drawing-point2d.md)* src | 源点数组。 |
680| [OH_Drawing_Point2D](capi-drawing-oh-drawing-point2d.md)* dst | 目标点数组,个数要与源点相等。 |
681| int count | 源点数组以及目标点数组的个数。 |
682
683### OH_Drawing_MatrixMapRect()
684
685```
686bool OH_Drawing_MatrixMapRect(const OH_Drawing_Matrix* matrix, const OH_Drawing_Rect* src, OH_Drawing_Rect* dst)
687```
688
689**描述**
690
691将目标矩形设置为一个新的矩形,该矩形是能够包围源矩形的四个顶点通过矩阵变换映射后形成的新顶点的最小矩形。<br>本接口会产生错误码,可以通过[OH_Drawing_ErrorCodeGet](capi-drawing-error-code-h.md#oh_drawing_errorcodeget)查看错误码的取值。<br>matrix、src、dst任意一个为NULL时返回OH_DRAWING_ERROR_INVALID_PARAMETER。
692
693**系统能力:** SystemCapability.Graphic.Graphic2D.NativeDrawing
694
695**起始版本:** 12
696
697
698**参数:**
699
700| 参数项 | 描述 |
701| -- | -- |
702| const [OH_Drawing_Matrix](capi-drawing-oh-drawing-matrix.md)* matrix | 指向矩阵对象[OH_Drawing_Matrix](capi-drawing-oh-drawing-matrix.md)的指针。 |
703| const [OH_Drawing_Rect](capi-drawing-oh-drawing-rect.md)* src | 源矩形。 |
704| [OH_Drawing_Rect](capi-drawing-oh-drawing-rect.md)* dst | 目标矩形。 |
705
706**返回:**
707
708| 类型 | 说明 |
709| -- | -- |
710| bool | 函数返回源矩形与映射后的目标矩形是否相等。true表示相等,false表示不相等。 |
711
712### OH_Drawing_MatrixIsEqual()
713
714```
715bool OH_Drawing_MatrixIsEqual(OH_Drawing_Matrix* matrix, OH_Drawing_Matrix* other)
716```
717
718**描述**
719
720判断两个矩阵是否相等。<br>本接口会产生错误码,可以通过[OH_Drawing_ErrorCodeGet](capi-drawing-error-code-h.md#oh_drawing_errorcodeget)查看错误码的取值。<br>matrix、other任意一个为NULL时返回OH_DRAWING_ERROR_INVALID_PARAMETER。
721
722**系统能力:** SystemCapability.Graphic.Graphic2D.NativeDrawing
723
724**起始版本:** 12
725
726
727**参数:**
728
729| 参数项 | 描述 |
730| -- | -- |
731| [OH_Drawing_Matrix](capi-drawing-oh-drawing-matrix.md)* matrix | 指向用于判断的其中一个矩阵对象[OH_Drawing_Matrix](capi-drawing-oh-drawing-matrix.md)的指针。 |
732| [OH_Drawing_Matrix](capi-drawing-oh-drawing-matrix.md)* other | 指向用于判断的另一个矩阵对象[OH_Drawing_Matrix](capi-drawing-oh-drawing-matrix.md)的指针。 |
733
734**返回:**
735
736| 类型 | 说明 |
737| -- | -- |
738| bool | 函数返回两个矩阵的比较结果,返回true表示两个矩阵相等,返回false表示两个矩阵不相等。 |
739
740### OH_Drawing_MatrixIsIdentity()
741
742```
743bool OH_Drawing_MatrixIsIdentity(OH_Drawing_Matrix* matrix)
744```
745
746**描述**
747
748判断矩阵是否是单位矩阵。<br>单位矩阵为 :  | 1 0 0 || 0 1 0 || 0 0 1 |本接口会产生错误码,可以通过[OH_Drawing_ErrorCodeGet](capi-drawing-error-code-h.md#oh_drawing_errorcodeget)查看错误码的取值。<br>matrix为NULL时返回OH_DRAWING_ERROR_INVALID_PARAMETER。
749
750**系统能力:** SystemCapability.Graphic.Graphic2D.NativeDrawing
751
752**起始版本:** 12
753
754
755**参数:**
756
757| 参数项 | 描述 |
758| -- | -- |
759| [OH_Drawing_Matrix](capi-drawing-oh-drawing-matrix.md)* matrix | 指向矩阵对象[OH_Drawing_Matrix](capi-drawing-oh-drawing-matrix.md)的指针。 |
760
761**返回:**
762
763| 类型 | 说明 |
764| -- | -- |
765| bool | 函数返回true表示矩阵是单位矩阵,函数返回false表示矩阵不是单位矩阵。 |
766
767### OH_Drawing_MatrixDestroy()
768
769```
770void OH_Drawing_MatrixDestroy(OH_Drawing_Matrix* matrix)
771```
772
773**描述**
774
775用于销毁矩阵对象并回收该对象占有的内存。
776
777**系统能力:** SystemCapability.Graphic.Graphic2D.NativeDrawing
778
779**起始版本:** 11
780
781
782**参数:**
783
784| 参数项 | 描述 |
785| -- | -- |
786| [OH_Drawing_Matrix](capi-drawing-oh-drawing-matrix.md)* matrix | 指向字体对象的指针。 |
787
788
789