我正在努力围绕其中心绘制旋转位图并在不调整位图大小的情况下进行旋转。我正在通过游戏线程将所有精灵绘制到屏幕上,因此我正在寻找一种包含原始位图而不是画布的解决方案。
提前致谢。
到目前为止,这是我的代码,它围绕它的中心旋转一个位图,但调整它的大小。
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
我知道这需要一些数学(三角),有人愿意挑战吗?:P