目前,已经尝试过的方法有两种。
一。
//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()。因为这种方法自己没测试过。所以 暂时忽略。