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);
}
我需要指定一个矩形,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);
}