在 Android Canvas 上,如何使用非交互的 alpha 绘制重叠形状?
在 Android Canvas 上,如果我用 alpha 0xCC 和颜色 Color.RED 绘制一个圆,然后用相同的参数绘制另一个与第一个圆部分重叠的圆,我最终会得到一个维恩图。
这是我发现的一个随机示例(只需忽略其中的[文本])。我想像这个图中一样绘制重叠的圆圈,但我不希望中心变暗,但我确实希望整个事物都有 Alpha,以便下面的地图可见。
有没有办法直接执行此操作,或者我需要绘制到没有 alpha 的位图,然后为整个位图设置 alpha并将其绘制到画布上? (我还没有使用过位图,所以我不确定它们是如何使用的。)
On an android Canvas, if I draw a circle with alpha 0xCC and color Color.RED and then draw another circle which partially overlaps the first circle with the same parameters, I'll end up with a venn diagram.
Here is a random example I found (just ignore the [Text] in there). I want to draw overlapping circles like in this diagram, but I don't want the center to be darker, but I do want the whole thing to have alpha so that the map underneath is visible.
Is there a way to do this directly or do I need to draw to a bitmap without alpha and then set the alpha for the whole bitmap and draw it to a canvas? (I haven't used bitmaps yet, so I am not sure how they are used yet.)
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
最简单的方法是您建议的解决方案,即。将所有没有 alpha 的圆绘制到位图上,然后使用所需的 alpha 将该位图绘制到另一个位图上。
困难的方法是使用混合模式,特别是 PorterDuff.Mode在安卓中。可以在此处<找到示例/a>.
The easy way would be your suggested solution, ie. drawing all circles with no alpha to a bitmap, then draw that bitmap to another one using the desired alpha.
The hard way would be using blend modes, specifically PorterDuff.Mode in Android. An example can be found here.