我正在製作Android遊戲,需要旋轉圖片。當我旋轉它顯然它的尺寸變化。例如,當它旋轉45度時(它是方形的,但我希望這可以用於任何矩形,所以它是更通用的解決方案),它的寬度和高度就成爲對角線的長度,比對角線長。在一些代數之後,你可以計算出比例因子是sqrt(2)。但我知道旋轉位圖的唯一方法是使用矩陣。例:圖像在旋轉時更改大小。我該如何阻止?
matrix.postRotate(degrees);
rotated = Bitmap.createBitmap(mBitmap, 0, 0, mBitmap.getWidth(), mBitmap.getHeight(), matrix, true);
使用該方法的位圖的大小保持恆定,從而在圖像必須收縮的含量適合經旋轉的圖像。這導致我的問題。
我現在應該工作,但運行時不能。可能是因爲它過於複雜,從來沒有少,那就是:
float totalRotated = 0;
public void rotate(float degrees){
if(mBitmap != null){
float increment = (float)((mBitmap.getWidth()/45.0)*(Math.sqrt(2)-1));
totalRotated += degrees;
totalRotated -= (float)((int)totalRotated/360)*360;
matrix.reset();
matrix.setRotate(totalRotated);
rotated = Bitmap.createBitmap(mBitmap, 0, 0, mBitmap.getWidth(), mBitmap.getHeight(), matrix, true);
rotated = Bitmap.createScaledBitmap(rotated, (int)(mBitmap.getWidth()+(((Math.abs(Math.abs(((int)totalRotated%90)-45)-45)))*increment)), (int)(mBitmap.getHeight()+(((Math.abs(Math.abs(((int)totalRotated%90)-45)-45)))*increment)), true);
}
}
使用Log.d
功能,我能夠確定的是,在最後的聲明中設定的尺寸是什麼,我希望他們都能但圖像沒有按」 t改變大小。由於這甚至不起作用,我需要更好的方法來做到這一點或解決方法。另外我的方法只適用於正方形。那麼,我該怎麼做?
編輯: 我的方法確實有效,我只是沒有打電話setBounds()
雖然這不是唯一的方法,但效率非常低。
請澄清你的問題是什麼。我不知道。 – Gabe