安卓反向裁剪

4
我需要指定一个矩形,Android画布不能在其中绘制。我知道clipRect将指定要绘制的区域,但我想知道是否可以反转此效果。换句话说,如何绘制一个对象,使其绘制到矩形的外部。图像以进行澄清:

你可以先绘制对象,然后在其上方绘制一个白色矩形。 - Marco Bonelli
我正在尝试减少过度绘制,所以这将产生完全相反的效果。 - TameHog
2个回答

12

在Android O中,Canvas提供了API clipOutPath(Path path)。如果要针对早期版本进行定位,则可以使用clipPath(Path path, Region.Op op),正如@Gabe Sechan所提到的。

实现大致如下:

@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);
}

3

我不确定这种方法是否比覆盖绘制更有效。但是,你可以将剪辑路径设置为完整视图,然后再将第二个剪辑路径设置为排除区域,并设置Region.Op DIFFERENCE。这将把剪辑矩形设置为两者之间的差异。


我会进行一些比较。 - TameHog

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接