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