Android游戲開發之十:Bitmap位圖的旋轉
Android為圖形的旋轉和變化提供了方便的矩陣Matrix類。Maxtrix類的setRotate方法接受圖形的變換角度和縮放,而后可以 由Bitmap類的createBitmap方法的一個重載函數接受Maxtrix對象,此createBitmap方法原型如下:
public static Bitmap createBitmap (Bitmap source, int x, int y, int width, int height, Matrix m, boolean filter)
參數的具體意義:
source:源bitmap對象
x:源坐標x位置
y:源坐標y位置
width:寬度
height:高度
m:接受的maxtrix對象,如果沒有可以設置為null
filter:該參數僅對maxtrix包含了超過一個翻轉才有效。
下面給大家一個比較經典的例子,rotate方法是靜態方法可以直接調用,參數為源Bitmap對象,參數二為旋轉的角度,從0~360,返回值為新的Bitmap對象。其中具體的寬高可以調整。
- public static Bitmap rotate(Bitmap b, int degrees) {
- if (degrees != 0 && b != null) {
- Matrix m = new Matrix();
- m.setRotate(degrees,
- (float) b.getWidth() / 2, (float) b.getHeight() / 2);
- try {
- Bitmap b2 = Bitmap.createBitmap(
- b, 0, 0, b.getWidth(), b.getHeight(), m, true);
- if (b != b2) {
- b.recycle(); //Android開發網再次提示Bitmap操作完應該顯示的釋放
- b = b2;
- }
- } catch (OutOfMemoryError ex) {
- // 建議大家如何出現了內存不足異常,***return 原始的bitmap對象。.
- }
- }
- return b;
- }
在后面的教程中我們會給出Matrix類相關的一些其他的應用實例。