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

Android - Canvas.clipRect() - Removing existing clip

我有一个 Canvas 对象,在某些时候我设置了一个剪辑,这样我就可以绘制到 'window/section' 而不必担心溢出到 canvas 的其他部分。

在我绘制完 'window' 后,我想删除那个剪辑区域,但我似乎做不到。

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

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

顺便说一句,注意 clipRect 的 javadoc 指定剪辑将应用于当前剪辑,因此它是一个 AND 操作,与两条路径相交

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