该方法用于裁剪画布,也就是设置画布的显示区域
调用clipRect()方法后,只会显示被裁剪的区域,之外的区域将不会显示
该方法最后有一个参数Region.Op,表示与之前区域的区域间运算种类,如果没有这个参数,则默认为Region.Op.INTERSECT
这几个参数的意义为:
- DIFFERENCE是第一次不同于第二次的部分显示出来
- REPLACE是显示第二次的
- REVERSE_DIFFERENCE 是第二次不同于第一次的部分显示
- INTERSECT交集显示
- UNION全部显示
- XOR补集 就是全集的减去交集生育部分显示
下面看一个例子
paint.setAntiAlias(true); //设置画笔为无锯齿
paint.setColor(Color.BLACK); //设置画笔颜色
paint.setTextSize((float) 30.0); //设置字体大小
canvas.clipRect(100, 100, 350, 600, Region.Op.INTERSECT);//设置显示范围
canvas.drawColor(Color.RED);
canvas.drawCircle(100,100,100,paint);
效果如下:
解释一下
首先调用canvas的clipRect方法,剪切了一块矩形区域,也就是这一块矩形区域作为显示区域,然后我们调用canvas的drawColor方法,为画布设置成红色,现在画布也就是这一块矩形区域,我们从效果图中可以看出,最后drawCircle画了一个实心黑色的圆,我们看到只显示了在红色矩形的部分圆,黑色的扇形,很容易看出,其他部分不显示。
这就是clipxx的作用,设置画布的显示区域,注意,clipxx方法只对设置以后的drawxx起作用,已经画出来的图形,是不会有作用的。