canvas 中的一些方法

在canvas中一般使用的方法为
drawXXX(): 绘制的方法
clipXXX(): 裁剪的方法

clipRect

裁剪画布,clipRect(int left, top, right, bottom);
clipRectF(float left, top, right, bottom)

当执行了该方法,如clipRect(0,0,500,500);
则后面都只能在(0,0,500,500)区域绘制

用Rect实现多区域裁剪

intersect 交集】

1
2
3
4
5
6
7
8

Rect rect = new Rect(0, 0, 500, 500);

rect.intersect(250, 250, 750, 750);

canvas.clipRect(rect);

// 取到区域(250, 250, 500, 500)

绘制多个区域相交的区域

union 合集

1
2
3
4
5
6
7
8

Rect rect = new Rect(0, 0, 500, 500);

rect.union(250, 250, 750, 750);

canvas.clipRect(rect);

// 取到的区域为(0, 0, 750, 750)

绘制多个区域之和

clipPath 取出某个区域

1
2
3
4
5
6
7
8
9
10
11
12
13

// 实例化路径
mPath = new Path();
// 移动起点至[50,50]
mPath.moveTo(50, 50);
mPath.lineTo(75, 23);
mPath.lineTo(150, 100);
mPath.lineTo(80, 110);
// 闭合路径
mPath.close();

// 按照路径进行裁剪
canvas.clipPath(mPath);

即是将path区域裁剪出来
同样后面在能在该path区域绘制图形

Region.Op

canvas.drawRect