【问题标题】:Android inverse clipAndroid逆剪辑
【发布时间】:2015-04-14 23:17:29
【问题描述】:
我需要指定一个矩形,Android 画布不能在其中绘制。我知道clipRect 会指定要绘制的区域和区域,但如果我能扭转这种效果,我会想。换句话说,我如何绘制一个对象,使其绘制到矩形的外部。图片澄清:
【问题讨论】:
标签:
java
android
android-canvas
clip
【解决方案1】:
对于 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);
}
【解决方案2】:
我不确定这是否真的会比透支更高效。但是您可以将剪辑路径设置为完整视图,然后将第二个路径设置为带有 Region.Op DIFFERENCE 设置的禁区。这会将剪切矩形设置为两者之间的差异。