Canvas.clipRect(left, top, right, bottom)
方法会缩小屏幕上未来绘制操作可以写入的区域。它将裁剪边界设置为当前裁剪矩形与指定矩形的空间交集。该方法有很多变体,接受不同形式的区域并允许对裁剪矩形进行不同操作。如果您想显式设置裁剪区域,请尝试使用:
canvas.clipRect(left, top, right, bottom, Region.Op.REPLACE);
第五个参数表示替换剪辑矩形而不是与先前版本创建交集。
尝试将clipRect语句移动到drawRect语句之前。或者,尝试添加:
paint.setColor(Color.YELLOW);
drawRect(0,0,75,75);
在您现有的clipRect语句之后,添加以下代码。它应该在之前的基础上绘制一个50x50的黄色正方形。
另一个注意点:(通过长时间与明显大部分没有文档记录的View/ViewGroup/drawing代码的挣扎)我发现canvas.translate(x,y)也调整了clipRect。clipRect和绘图矩阵的交互非常令人困惑。需要指出的是:
canvas.getMatrix()
与
canvas.getClipBounds()
在对画布进行修改并绘制物体之前和之后。