我使用画布绘制多个图像(120X120) 当我旋转60度时,图片停止居中。 旋转时,图像可以在屏幕上的任何位置,我只想保留它的中心。 怎么做?
Matrix matrix = new Matrix();
matrix.postRotate(60);
Bitmap map= Bitmap.createBitmap(resizedBitmap, 0, 0,resizedBitmap.getWidth(), resizedBitmap.getHeight(),matrix, true);
答案 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);
所以,当我的图像旋转时,它的中心将保持不变,因为高度和宽度发生了变化,我正在使用它们来计算中心。
只是想分享这些知识,因为我发现很多人在寻找解决方案的时候会问,但没有明确的好答案。 每个人都快乐编程