3 回答

TA貢獻1854條經(jīng)驗 獲得超8個贊
希望以下代碼序列對您有所幫助:
Bitmap targetBitmap = Bitmap.createBitmap(targetWidth, targetHeight, config);
Canvas canvas = new Canvas(targetBitmap);
Matrix matrix = new Matrix();
matrix.setRotate(mRotation,source.getWidth()/2,source.getHeight()/2);
canvas.drawBitmap(source, matrix, new Paint());
如果從以下方法檢查以下方法 ~frameworks\base\graphics\java\android\graphics\Bitmap.java
public static Bitmap createBitmap(Bitmap source, int x, int y, int width, int height,
Matrix m, boolean filter)
這將解釋旋轉(zhuǎn)和平移的作用。

TA貢獻1876條經(jīng)驗 獲得超7個贊
優(yōu)化代碼。
public static Bitmap RotateBitmap(Bitmap source, float angle)
{
Matrix matrix = new Matrix();
matrix.postRotate(angle);
return Bitmap.createBitmap(source, 0, 0, source.getWidth(), source.getHeight(), matrix, true);
}
要從資源獲取位圖:
Bitmap source = BitmapFactory.decodeResource(this.getResources(), R.drawable.your_img);

TA貢獻1853條經(jīng)驗 獲得超6個贊
現(xiàn)在我們要完成游戲的設(shè)計,我回到了這個問題,我只是想發(fā)布對我有用的東西。
這是旋轉(zhuǎn)矩陣的方法:
this.matrix.reset();
this.matrix.setTranslate(this.floatXpos, this.floatYpos);
this.matrix.postRotate((float)this.direction, this.getCenterX(), this.getCenterY());
(this.getCenterX()基本上是位圖X位置+位圖寬度/ 2)
以及繪制位圖的方法(通過RenderManager類調(diào)用):
canvas.drawBitmap(this.bitmap, this.matrix, null);
因此直截了當(dāng)是棘手的,但我感到有點奇怪,我無法讓它setRotate緊隨其后postTranslate。也許有人知道為什么這行不通?現(xiàn)在所有的位圖都可以正確旋轉(zhuǎn),但是在位圖質(zhì)量上并沒有降低一些:/
無論如何,謝謝您的幫助!
- 3 回答
- 0 關(guān)注
- 881 瀏覽
添加回答
舉報