2012-03-02 35 views
0

爲什麼doees位圖不在中間旋轉?旋轉不在中間

當我用sin旋轉點時,cos就是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

回答

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

旋轉後的位圖被製作得比原始圖片大,不會剪裁圖片。您可以嘗試繪製結果,以便中心的座標匹配。