首页 > 解决方案 > 在画布上绘图时屏蔽圆形/形状

问题描述

我在 onDraw(canvas) 函数中,因此可以访问画布

我可以在画布上绘制颜色,但我试图掩盖(删除/剪切)圆圈(或任何形状),以便圆圈可以通过画布看到下面的图层:

 val pt     = Paint(Paint.ANTI_ALIAS_FLAG)
 pt.color   = Color.WHITE
 pt.style   = Paint.Style.FILL
 pt.setXfermode(PorterDuffXfermode(PorterDuff.Mode.DST))
 canvas.drawCircle(30,30,10,pt)

我已经使用了所有可用的 Mode.XXXX 并尝试了白色、黑色和透明

有任何想法吗 ?(添加)需要支持 API 19 谢谢

提前致谢

标签: androidcanvaskotlinandroid-canvas

解决方案


您可以使用该Canvas#clipOutPath(Path)方法。

像这样:

canvas.clipOutPath(Path().also {
  it.addCircle(30, 30, 20, Path.Direction.CW)
})

对于低于 26 的 API 级别,请使用:

canvas.clipPath(Path().also {
  it.addCircle(30, 30, 20, Path.Direction.CW)
}, Region.Op.DIFFERENCE)

推荐阅读