Android Canvas:仅在透明背景上绘制圆圈

Posted

技术标签:

【中文标题】Android Canvas:仅在透明背景上绘制圆圈【英文标题】:Android Canvas: Drawing a circle only on transparent background 【发布时间】:2013-03-13 20:27:56 【问题描述】:

我在 android 中有一个画布,我在其中绘制了许多直径为 1 到 10 像素的圆圈。

我只想在透明背景上打印这个圆圈,如果要画圆圈的地方有任何其他颜色,应该取消它,我想知道那个地方已经是什么颜色。当它只是重叠一点时。

问题是,我发现的所有方法都表现不佳。

我在屏幕上画了超过 10000 个圆圈,效果很好,但它们是重叠的,我必须处理这个问题。

谁能帮帮我?? :-)

【问题讨论】:

【参考方案1】:

你的问题不是很清楚。

如果您想知道“在绘制视图背景之前”存在哪种颜色,我没有看到任何解决方案。如果有人能找到答案,我会非常感兴趣。

如果您想知道“如果您之前绘制了一个与您要绘制的当前圆重叠的圆”,那么最好的解决方案是您自己以编程方式维护您之前绘制的所有圆的列表,它们的中心位置和直径,并检查它是否会与新圆重叠。这种计算非常简单,应该足够快,即使是 1000 圈。

另请注意,有一些方法可以优化此类计算。例如,如果事情太慢,您可以考虑使用不同的距离测量而不是经典的欧几里得测量。例如,可以使用中心之间 x 和 y 的差值(使用绝对值)代替它们的差值平方和的平方根。

【讨论】:

以上是关于Android Canvas:仅在透明背景上绘制圆圈的主要内容,如果未能解决你的问题,请参考以下文章

CSS ONLY 动画绘制圆与边框半径和透明背景

Canvas入门:绘制矩形圆直线曲线等基本图形

android中,如何用canvas绘制透明?

Android面试收集录 2D绘图与动画技术

vue中canvas绘制圆,但实际效果是椭圆

Android canvas绘制的可滑动刻度尺