Android反向剪辑

时间:2015-04-14 23:17:30

标签: java android android-canvas clip

我需要指定一个矩形,其中Android画布无法在其中绘制。我知道clipRect将指定和绘制区域,但我是否可以扭转此效果。换句话说,我如何绘制一个对象,使其绘制到矩形的外部。图片澄清:

Clipping example

2 个答案:

答案 0 :(得分:4)

在Android O上,Canvas公开了API clipOutPath(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);
}

答案 1 :(得分:2)

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