python - 使用 pygame 绘制图元时出现工件?

标签 python pygame

我正在编写一些涉及使用 pygame 库在曲面上绘制圆的代码。绘制圆圈的代码如下所示:

  surf = pygame.Surface((2000,2000))
  pygame.draw.circle(surf, 
                     pygame.Color("white"),
                     (1000,1000),
                     508,
                     50)

问题是生成的圆有伪影 Circle with artifacts

有没有办法在没有这些工件的情况下像这样画一个圆圈?

最佳答案

您看到的很可能是 pygame.draw.circle 实现的问题。 pygame 开发人员很可能愚蠢地认为您可以通过依次绘制多个圆来绘制粗圆,每个圆的半径增加 1。这在实践中是行不通的,你会得到像你看到的那样的波纹图案。尝试将圆线粗细增加 100 或 200,看看会发生什么。如果情况变得更糟,那就是 pygame.draw.circle 的错。

一种解决方案是提供您自己的圆形渲染例程。这当然可以完成,但为了获得最佳性能,在 pygame 的 C/C++ 扩展模块中执行此操作或使用 OpenGL(有或没有片段着色器)是有意义的。

要为每条扫描线获得完美的圆,您必须计算每条扫描线的填充区域的起点和终点。通过使用 pygame.draw.line 绘制单独的扫描线,可以在 python 中以可容忍的性能执行此操作。

关于python - 使用 pygame 绘制图元时出现工件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10148479/

相关文章:

python - 当我设置 freq ="W"时,为什么输出变成 freq ="W-Sun"?

python - matplotlib 中具有可变长度数据的箱线图

python - Pygame错误: not able to open . wav文件

python - PyGame:Char 不动

c++ - 在 swig/python 中处理 char * 返回数据的正确方法

python - 从 fasta 文件估计 Biopython 中的字母表

python - 如何为具有清晰时间戳的时间序列数据构建数据框?

python - 如何让 USB Controller /游戏 handle 与 python 一起工作

python - pygame 中的图像未显示在表面上

python - 用Python制作高分表?