android - 在画布上绘图时屏蔽圆形/形状
问题描述
我在 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 谢谢
提前致谢
解决方案
您可以使用该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)
推荐阅读
- laravel - 刷新 Livewire 页面
- python - 无法将字符串转换为浮点数。奥多 14
- dependencies - 角度 12 更新:模块 '"@angular/common"' 没有导出成员 'XhrFactory'
- swift - Swift HTTP 请求完成块无法正常工作
- swiftui - 如何在可扩展列表 SwiftUI 中移动元素
- mysql - 哪个是执行三重连接查询的最佳性能设置
- java - Apache Camel Spring Boot Java - 如何将动态值从休息路由传递到来自文件的路由?
- javascript - 使用功能组件中的 useState 反应无效的挂钩调用错误
- java - 在 redis sentinel 上使用 asyncRedisCommands 的 Redis 生菜设置
- c++ - 使 int 返回函数表现为左值和右值