[英]How to move and rotate a bitmap in a canvas using a matrix in android/java?
[英]Code to rotate a bitmap using Matrix causing force close
我正在做一個簡單的游戲,球在斜坡上滾動,必須通過跳躍來避開障礙物。 當我嘗試使用Matrix
旋轉球形物體時,問題就來了。 我正在使用以下代碼:-
private void rotateMe() {
if(jump==0){
Matrix mtx=new Matrix();
mtx.postRotate(deg);
Bitmap rotatedBMP=Bitmap.createBitmap(bm, 0, 0, bm.getWidth(), bm.getHeight(), mtx, false);
deg=deg+1; //deg=0 in beginning
bm=rotatedBMP;
}
}
此方法寫在ball類中,該類由另一個方法move()內部調用。 bm的位圖沒有按我的意願旋轉。 它只是從屏幕上掉出來,似乎位圖的大小已增加。 我必須在幾秒鍾后強行關閉它。
我見過其他旋轉位圖問題,但它們對我也不起作用。 提前致謝。
您一直在旋轉具有相同值( 10
)的Matrix
。 這就是為什么球不旋轉的原因。 而是執行以下操作: mtx.postRotate(deg);
另外,一個一般性的評論:我猜您正在繪制生成的旋轉球bm
? 如果您要在其他線程上繪制球,那么您應該首先查看的是確保您的線程對bm
具有獨占訪問權,以便在bm=rotatedBMP;
新值影響球時不會渲染球。 bm=rotatedBMP;
無論如何我自己找到了答案。 我現在使用的代碼如下(對於那些有相同問題的人)
Matrix mtx=new Matrix();
mtx.postRotate(deg,25,25);
mtx.postTranslate(x, y);
c.drawBitmap(bm, mtx, paint);
deg=deg-10;
代碼現在運行良好。 不管怎么說,多謝拉。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.