2012-03-02 15 views
0

なぜビットマップが途中で回転しないのですか?ローテーションが途中でない

私がsinで点を回転させると、それは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)); 

緑と赤のポイントは赤矩形で正しいですが、グリーン車のRECTは間違っていると途中ではありません。
誤った回転のビットマップを表示してください!

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

回転ビットマップは、イメージをクリップしないようにオリジナルよりも大きくなっています。結果を描画して、中心の座標が一致するようにすることができます。

関連する問題