Android 逆剪辑

Android inverse clip

我需要指定一个矩形,Android canvas 不能在其中绘制。我知道 clipRect 将指定要绘制的区域,但我想我是否可以扭转这种影响。换句话说,我如何绘制一个对象,使其绘制到矩形的外部。图片说明:

我不确定这是否真的比透支更高效。但是您可以将剪切路径设置为完整视图,然后将第二个路径设置为设置为 Region.Op DIFFERENCE 的禁区。这会将裁剪矩形设置为两者之间的差异。

同AndroidO,Canvas暴露了APIclipOutPath(Path path);对于早期版本,您可以使用 @Gabe Sechan 提到的 clipPath(Path path, Region.Op op)

实施看起来像这样:

@Override
protected void dispatchDraw(Canvas canvas) {
    if (android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
        canvas.clipOutPath(path);
    } else {
        canvas.clipPath(path, Region.Op.DIFFERENCE);
    }
    super.dispatchDraw(canvas);
}