矩阵不是仿射变换矩阵android 如何获取一个matrix矩阵的宽和高
时间: 2023-11-28 22:06:42 浏览: 141
如果矩阵不是仿射变换矩阵,可以使用其他方法来计算矩阵的宽和高。
假设矩阵是一个 2x3 的矩阵,可以通过 Matrix 的 mapPoints(float[] pts) 方法来计算矩阵变换后的四个角点的坐标,然后根据四个角点的坐标来计算矩阵的宽和高。示例代码如下:
```java
Matrix matrix = new Matrix();
matrix.setValues(new float[] {2, 0, 0, 0, 3, 0}); // 设置一个 2x3 的矩阵
float[] pts = new float[] {0, 0, 100, 0, 0, 100, 100, 100};
matrix.mapPoints(pts);
float left = pts[0];
float top = pts[1];
float right = pts[0];
float bottom = pts[1];
for (int i = 2; i < pts.length; i += 2) {
float x = pts[i];
float y = pts[i + 1];
if (x < left) left = x;
if (x > right) right = x;
if (y < top) top = y;
if (y > bottom) bottom = y;
}
float width = right - left;
float height = bottom - top;
Log.d(TAG, "矩阵的宽为:" + width);
Log.d(TAG, "矩阵的高为:" + height);
```
这里假设矩阵变换后的四个角点的坐标为 (0, 0), (100, 0), (0, 100), (100, 100)。如果矩阵变换后的四个角点的坐标不是这些值,可以根据实际情况修改。
阅读全文