我在尝试绘制一个围绕其中心旋转的位图,而且不改变位图的大小。我通过游戏线程将所有精灵绘制到屏幕上,所以我正在寻找一种解决方案,可以使用原始位图而不是画布。
以下是我的代码,它可以使位图围绕其中心旋转,但同时也改变了其大小。
并且
以下是我的代码,它可以使位图围绕其中心旋转,但同时也改变了其大小。
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);
更新:
我注意到这并不像听起来那么容易。我的旋转代码并不是问题所在。位图旋转了,但是目标矩形也必须根据旋转角度增加/减小,否则位图将会显得更小,因为它被绘制到一个固定的目标矩形中。
所以我想我需要开发一些方法来返回目标矩形。要旋转位图而不出现大小调整,需要以下方法:
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