我正在尝试在屏幕上绘制一个精灵表动画,这在我使用此代码之前效果很好。
canvas.drawColor(Color.TRANSPARENT);
Rect src = new Rect(CurrentSprite.x * SheetSize.x, CurrentSprite.y * SheetSize.y, (CurrentSprite.x * SheetSize.x) + SheetSize.x, (CurrentSprite.y * SheetSize.y) + SheetSize.y);
Rect dst = new Rect(X, Y, X + SheetSize.x, Y + SheetSize.y);
canvas.drawBitmap(bmp, src, dst, null);
但是,我现在需要先旋转图像,然后再将其绘制在屏幕上。所以我更改了代码,所以我正在制作精灵的本地副本。我要画这个但是在这里我遇到了问题。我正在使用 Bitmap.createBitmap 方法,但该方法似乎没有任何作用,因为当我查看屏幕时,屏幕上会绘制完整的精灵表,有时我会遇到 OutOfMemoryException(可以理解,因为完整图像非常大)。
canvas.drawColor(Color.TRANSPARENT);
Matrix matrix = new Matrix();
matrix.postRotate(Degrees);
Bitmap tempAnimationBmp = Bitmap.createBitmap(bmp, CurrentSprite.x * SheetSize.x, CurrentSprite.y * SheetSize.y, (CurrentSprite.x * SheetSize.x) + SheetSize.x, (CurrentSprite.y * SheetSize.y) + SheetSize.y, matrix, true);
canvas.drawBitmap(tempAnimationBmp, X, Y, null);
tempAnimationBmp.recycle();
为什么我会得到完整的精灵表?