如何找到用矩阵旋转和缩放的位图的中心位置?

时间:2015-04-23 14:54:17

标签: android math matrix

我想计算在带有矩阵的画布上绘制的位图的中心,可以使用任意值旋转,缩放或平移。在画布上找到这个位图中心的最简单方法是什么?

2 个答案:

答案 0 :(得分:1)

您需要将矩阵应用于位图中心的坐标。

如果使用具有变换矩阵的画布,则可以通过Canvas.getMatrix()获得最终矩阵

如果使用矩阵在{:1}}绘制画布上的位图,那么您需要使用该矩阵,或将其连接到Canvas的矩阵(如果它有一个)。

然后,您最终可以使用Matrix.mapPoints将该矩阵应用于矩阵的中心。

类似的东西:

drawBitmap(bitmap, matrix, paint)

或者,如果您将转换应用于没有矩阵的位图,则可以使用具有相同值的canvas.drawBitmap(bitmap, bitmap_transform, paint); Matrix full_transform = new Matrix(canvas.getMatrix()); full_transform.postConcat(bitmap_transform); float[] center = new float[] {bitmap.getHeight()/2.0, bitmap.getWidth()/2.0}; full_transform.mapPoints(center); full_transform.postRotate等。特别是,如果您使用full_transform.postScale绘制位图,则需要执行drawBitmap(bitmap, left, top, paint)

答案 1 :(得分:0)

如果您正在寻找“最简单”的方式,那么只需坚持使用平移旋转和缩放功能就可以解决问题。这些开发的原因是开发人员不必为简单的动画做矢量微积分。此外,在您考虑原始坐标后,您需要实际计算的唯一值是它的平移值。