回転するビットマップを中心に描画し、ビットマップのサイズを変更せずに回転させるのに苦労しています。ゲームスレッドを介してすべてのスプライトを画面に描画しているため、キャンバスではなく元のビットマップを組み込むソリューションを探しています。
前もって感謝します。
これはこれまでの私のコードです。ビットマップを中心に回転させ、サイズを変更します。
i = i + 2;
transform.postRotate(i, Assets.scoresScreen_LevelStar.getWidth()/2, Assets.scoresScreen_LevelStar.getHeight()/2);
Bitmap resizedBitmap = Bitmap.createBitmap(Assets.scoresScreen_LevelStar, 0, 0, Assets.scoresScreen_LevelStar.getWidth(), Assets.scoresScreen_LevelStar.getHeight(), transform, true);
game.getGraphics().getCanvasGameScreen().drawBitmap(resizedBitmap, null, this.levelStar.getHolderPolygons().get(0), null);
アップデート:
これは思ったほど簡単ではないことに気づきました。私の回転コードは問題ではありません。ビットマップは回転しますが、回転角度に応じて dst rect も増減する必要があります。そうしないと、bimap が小さく表示されます。これは、固定された dst rect に描画されるためです。したがって、dst rect を返すメソッドを開発する必要があると思います。 したがって、サイズを変更せずにビットマップを回転させるために必要なメソッドは次のとおりです。
public static Bitmap rotateBitmap(Bitmap bitmap, int rotation) // I've got this method working
と
public static Rect rotateRect(Rect currentDst, int rotation) // Don't got this
これには数学 (trig) が必要になると思いますが、挑戦できる人はいますか? :P