旋转不在中间

时间:2012-03-02 12:54:57

标签: android image-rotation

为什么位图不能在中间旋转?

当我用罪点旋转点时,因为它是o.k.和使用AffineTransform的Swing中的旋转有效但不能用矩阵旋转。

我使用此代码:

matrix.reset();    
  matrix.setRotate(35.0f,middleofx,middleofy);    
  Bitmap t=Bitmap.createBitmap(BI_auto);    
  Bitmap rotatedBitmap = Bitmap.createBitmap(t, 0, 0,
  BI_car.getWidth(), BI_car.getHeight(), matrix, true);`

点的旋转起作用:

 sx = ((carx) + 45 - worldx);   
 sy = ((cary) + 45 - worldy);    
 float rad = (float) (grad / 180.0 * Math.PI);   
 float ex2 = (float) (sx + length* Math.sin(angle - rad));   
 float ey2 = (float) (sy + length* Math.cos(angle - rad));

红色矩形中的绿色和红色点是正确的,但是绿色的车辆矩形是错误的而不是在中间 显示错误旋转的位图!

car rotation

2 个答案:

答案 0 :(得分:0)

我不确定java语法,但你应该像下面这样做。

matrix.translate(-middleofx,-middleofy); // these might be positive.
matrix.setRotate(35.0f);
Bitmap t=Bitmap.createBitmap(BI_auto);
Bitmap rotatedBitmap = Bitmap.createBitmap(t, 0, 0, BI_car.getWidth(), BI_car.getHeight(), matrix, true);
matrix.translate(0,0);

答案 1 :(得分:0)

旋转的位图比原始位图大,不会剪切图像。您可以尝试绘制结果,以便中心的坐标匹配。