我想计算在带有矩阵的画布上绘制的位图的中心,可以使用任意值旋转,缩放或平移。在画布上找到这个位图中心的最简单方法是什么?
答案 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)
如果您正在寻找“最简单”的方式,那么只需坚持使用平移旋转和缩放功能就可以解决问题。这些开发的原因是开发人员不必为简单的动画做矢量微积分。此外,在您考虑原始坐标后,您需要实际计算的唯一值是它的平移值。