当使用矩阵旋转时,我失去了图像的位置

时间:2013-05-20 21:47:34

标签: android image canvas rotation

我使用画布绘制多个图像(120X120) 当我旋转60度时,图片停止居中。 旋转时,图像可以在屏幕上的任何位置,我只想保留它的中心。 怎么做?

Matrix matrix = new Matrix();
matrix.postRotate(60);
Bitmap map= Bitmap.createBitmap(resizedBitmap, 0, 0,resizedBitmap.getWidth(), resizedBitmap.getHeight(),matrix, true);

1 个答案:

答案 0 :(得分:1)

我找到了解决问题的方法。

技巧是在绘制图像时使用图像的高度和宽度,因此当这些属性发生变化时,旋转图像的位置也会发生变化

因此,正如我们所知,要绘制位图,您将传递左上角的坐标。 但正确的做法是通过传递中心坐标减去图像的高度/宽度,当图像高度和宽度发生变化时,保持中心。

canvas.drawBitmap(map, x  - map.getWidth() / 2,y - map.getHeight() / 2, null);

其中x和y是图像中心的坐标

假设目前的情况 图像大小120X120dp 我想以400,300画出我的图像 这意味着我的图像中心将是460,360 所以,为了保持我的图像中心始终在这条线上,我应该这样做

canvas.drawBitmap(map, 460  - map.getWidth() / 2,360 - map.getHeight() / 2, null);

所以,当我的图像旋转时,它的中心将保持不变,因为高度和宽度发生了变化,我正在使用它们来计算中心。

只是想分享这些知识,因为我发现很多人在寻找解决方案的时候会问,但没有明确的好答案。 每个人都快乐编程