1

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

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

1 回答 1

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);

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

只是想分享这些知识,因为我发现很多人问我何时寻找解决方案,但没有明确的好答案。祝大家编程愉快

于 2013-05-22T08:41:42.263 回答