Android中實現繪製圖片指定區域
阿新 • • 發佈:2019-02-10
目前,已經嘗試過的方法有兩種。
一。
//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()。因為這種方法自己沒測試過。所以 暫時忽略。