clipRect(int left, int top, int right, int bottom)
这个方法作用就是裁切一个矩形出来,但是图形不还是在canvas上面的,所以本质上还是裁切的canvas画布,使图形只是在裁切出来的那块画布上展示,这就达到了裁切效果,同样参数就按照绘制一个矩形的参数传进去就好了,就是可以认为是矩形的左上角以及右下角的坐标
clipPath(@NonNull Path path)
这个方法比上面的方法灵活很多,因为它传入的是一个Path,所以就提供了更多裁切的可能性了,因为Path本身就可以绘制很多不同的形状
canvas.save();
//定义一个圆形区域
path.addCircle(500,500,400, Path.Direction.CCW);
//裁剪圆形区域,也就是说之后绘制的内容只有在圆形区域内的内容才会显示出来
canvas.clipPath(path);
//绘制一个图片
Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.snoopy);
canvas.drawBitmap(bitmap,100,100,paint);
canvas.restore();
//至此显示出来的是一个圆形图片