Android - Canvas.clipRect() - 删除现有剪辑

时间:2015-03-17 13:48:30

标签: android android-canvas android-custom-view

我有一个Canvas对象,在某些时候我设置了一个剪辑,这样我就可以画出那个'窗口/部分'不用担心溢出到画布的其他部分。

在我完成了进入“窗口”的过程后。我想删除那个我似乎无法做的剪辑区域。

没有删除剪辑功能,当我尝试在整个画布上应用新剪辑时,未应用该剪辑 - 应用新剪辑后立即调用canvas.getClipBounds()返回Rect上一个剪辑。

2 个答案:

答案 0 :(得分:21)

在设置剪辑rect然后canvas.save()之前使用canvas.restore()以丢弃裁剪矩形。

答案 1 :(得分:1)

你必须使用'clipRect(Rect rect,Region.Op op)'和op Union,所以它会添加。在指定添加操作之前,它会裁剪得越来越多。这是一种布尔交叉。用所有表面设置联合。此外,您可以在裁剪,裁剪,绘制和恢复之前使canvas.save()再次具有完整的剪辑边界。

BTW,请注意clipRect的javadoc指定剪辑将应用于当前剪辑,因此它是AND操作,与两个路径相交