1.輸入矩陣:
Matrix矩陣類,當現有位圖對象上進行繪製或從另一個位圖對象創建某個位圖時,可以使用該類。
Matrix矩陣類的每個數字都應用於圖像上每個點的3個座標(x,y或z)之一:
如:1 , 0 , 0,
0, 1, 0,
0, 0, 1
第一行:指定x座標:x=1x+0y+0z;
第二行:指定y座標:y=0x+1y+oz;
第三行:指定z座標:z=0x+0y+1z;
Matrix matrix=new Matrix();
matrix.setValues(new float[]{
1,0.5f,0,
0,1,0,
0,0,1
});
canvas.drawBitmap(bmp, matrix, paint);
copyPicture.setImageBitmap(alteredBitmap);
在需要增加結果位圖大小是可以設置:
alteredBitmap = Bitmap.createBitmap(bmp.getWidth()*2,
bmp.getWidth(), bmp.getConfig());
2.Matrix類的方法
(1)旋轉:
Matrix matrix=new Matrix();
//matrix.setRotate(15);/*旋轉的角度,圍繞默認點(0,0),正數順時針旋轉,負數逆時針旋轉,默認點是圖像左上角*/
matrix.setRotate(15, bmp.getWidth()/2,bmp.getHeight()/2);//中心旋轉
canvas.drawBitmap(bmp, matrix, paint);
(2)縮放:
matrix.setScale(1.5f, 1);//縮放,第一個參數x軸的縮放比例,第二個參數y軸的縮放比例。
(3)平移:
matrix.setTranslate(1.5f, -10);//平移,第一個參數x軸的移動數量,第二個參數y軸的移動數量。
(4)鏡像:
matrix.setScale(-1, 1);
matrix.postTranslate(bmp.getWidth(), 0);//向右移動
(5)翻轉:
matrix.setScale(1,-1);
matrix.postTranslate(0, bmp.getHeight());//向下移動
(6)繪製替代圖像:
以前所使用的方法的缺點是圖像會被截斷,因爲沒有計算轉換後的結果大小。解決方法:當初次創建位圖對象時,應用Matrix對象而不是繪製到一個空的位圖對象中。
通過這種方式無需再獲得Canvas和Paint對象。缺點是不能再更改位圖對象。
在Bitmap類中存在一個靜態方法createBitmap.
Bitmap.createBitmap(bmp, 0, 0, bmp.getWidth(), bmp.getHeight(), matrix, false);//參數不再說明。
示例:
Matrix matrix=new Matrix();
matrix.setRotate(15, bmp.getWidth()/2,bmp.getHeight()/2);//中心旋轉
Bitmap alteredBitmap=Bitmap.createBitmap(bmp, 0, 0, bmp.getWidth(), bmp.getHeight(), matrix, false);
copyPicture.setImageBitmap(alteredBitmap);