2011-12-01 152 views
2

如何绕中心点旋转图像?这使其旋转,而且移动它:围绕中心旋转图像

Matrix mat = new Matrix(); 
mat.postRotate(45); 
Bitmap bMapRotate = Bitmap.createBitmap(dialBM, 0, 0, dialBM.getWidth(),dialBM.getHeight(), mat, true); 
dial.setImageBitmap(bMapRotate); 

我检查了其他的例子在这个网站,但他们要么无法正常工作或使用的画布,我不希望使用画布。

回答

8

postRotate的第二个和第三个参数是x和y轴心点。

mat.postRotate(45, dialBM.getWidth()/2, dialBM.getHeight()/2); 
+0

哦,那确实比较简单,虽然我猜它在内部确实是我的建议。 – zmbq

+1

这不起作用。我的表盘旋转,但不在其中心。 – panthro

+0

将第二个和第三个参数更改为您希望它旋转的位置。 ('postRotate(degrees,pivotX,pivotY)') – Paramount

0

可能是因为您的矩阵围绕(0,0)旋转,而不是位图中间。您应该声明两个附加矩阵 - 一个用于将位图中心移动到(0,0)(通过-getWidth()/ 2,-getHeight(2)移位),另一个用于将位图中心移回(0,0)。乘以三个矩阵,然后结果。