1. 程式人生 > >Android中實現繪製圖片指定區域

Android中實現繪製圖片指定區域

目前,已經嘗試過的方法有兩種。

一。

			//getImage()是自己將decodeResource包裝了一下。
			//返回值為Bitmap
			Bitmap bitmap = getImage(R.drawable.explosion2);
			//createBitmap(Bitmap source, int x, int y, int width, int height)
			//source:就不用說了,需要畫上去的bitmap
			//x:這裡指的是 畫上去的x軸位置
			//y:這裡指的是畫上去的y軸位置
			//width:要擷取的圖片區域的寬度
			//height:要擷取的圖片區域的高度
			Bitmap tmp = Bitmap.createBitmap(bitmap, 0, 0, 45, 45);
			canvas.drawBitmap(tmp, x, y, paint);

個人認為,這種方法的好處就是,使用簡單、方便。缺點就是,比較耗資源。createBitmap方法每次都會建立一個新的bitmap,那麼,這種方法必然不會是最佳的方法。

二。

			Bitmap bitmap = getImage(R.drawable.explosion2);
			/**
			 * 這個矩形,是指圖片中需要擷取的部分
			 * @param left:表示從左邊的x個畫素開始
			 * @param top:從頂點向下的x個畫素開始
			 * @param right:矩形區域的右邊框
			 * @param bottom:矩形區域的底邊框
			 * */
			Rect src = new Rect(0,0,45,45);
			/**
			 * 這個區域指的是,將src的矩形,畫在當前指定的矩形框中。
			 * 如果src和des矩形大小不一致,則會將src中的內容進行相應的放大,縮小。
			 * 引數同src矩形
			 * */
			Rect des = new Rect((int)x,(int)y,(int)x+45,(int)y+45);
			canvas.drawBitmap(bitmap, src, des, paint);

像上面說的,該方法不只是進行圖片擷取,也可以進行放大,縮小。

另:在網上還看到一種方法,canvas.clipRect()。因為這種方法自己沒測試過。所以 暫時忽略。