gpt4 book ai didi

android - 为什么 Paint.ANTI_ALIAS_FLAG 在 Canvas 上的同一个地方绘图时似乎不起作用?

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:25:01 24 4
gpt4 key购买 nike

尝试使用 android Canvas 在同一位置多次绘制时,抗锯齿出现问题。

首先,我正在初始化 paint = new Paint(Paint.ANTI_ALIAS_FLAG),然后将 stroke cap 设置为 Paint.Cap.ROUND

然后,如果我调用 canvas.drawPoint(x, y, paint) 一次会导致以下结果:

enter image description here

多次调用 canvas.drawPoint(x, y, paint) 时(本例中为 100 次)导致:

enter image description here

我用最少的代码创建了一个示例,以便在 GitHub 上运行它:android-canvas-antialias

我注意到如果我以一定的距离绘制点,抗锯齿似乎会按预期工作(第一张图片)。但是用很小的偏移绘制它会导致同样的抗锯齿问题(第二张图片)。

在同一位置绘制点时,是否需要进行任何设置才能使其正常工作?或者我可能根本没有在同一个地方绘图(或者偏移量很小)?

编辑:真正的问题是因为我正在尝试绘制宽度可变的线段。请参阅 git 存储库中的 MainActivity.drawSegment

最佳答案

我认为这不是问题,我的意思是,它本身就是一个错误。我想即使可以轻松解决。

圆圈边缘的像素是用一些 alpha 绘制的,例如一个具有 25% alpha 的红色像素,如果您用更多 3 个具有相同 alpha 的像素覆盖它,您将得到一个 100% 的红色像素。

解决方法是管理所有创建的形状并检查它们中的一些是否具有相同的大小和位置(也可能是颜色),然后只绘制其中一个。

下面的链接解释了抗锯齿的工作原理,可能会有所帮助。

http://web.cs.wpi.edu/~matt/courses/cs563/talks/antialiasing/methods.html

关于android - 为什么 Paint.ANTI_ALIAS_FLAG 在 Canvas 上的同一个地方绘图时似乎不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31943730/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com