Pygame中的抗锯齿形状

时间:2014-05-25 07:10:17

标签: python pygame antialiasing

我正在使用Pygame来绘制一些东西。问题是他们有很多别名边缘:

Aliased concentric circles

我想让它们更柔和,就像这样:

Smooth concentric circles


到目前为止,我的想法是以双倍大小绘制形状,然后使用

pygame.transform.smoothscale(surf, (w/2, h/2))

将它缩小到我想要的大小。

不幸的是,如果我在透明表面上绘制我的形状,那么smoothscale会将触摸透明像素的边缘变成黑色!

  • 如何在不将Alpha透明像素变为黑色或
  • 的情况下平滑图片
  • 我如何抗锯齿?

2 个答案:

答案 0 :(得分:13)

为了使用pygame绘制抗锯齿填充形状,使用模块gfxdraw并绘制一个常规填充形状和一个抗锯齿轮廓。来自http://www.pygame.org/docs/ref/gfxdraw.html

"要绘制抗锯齿和填充的形状,首先使用函数的aa *版本,然后使用填充的版本。"

请注意,您需要明确导入gfxdraw,即from pygame import gfxdraw

答案 1 :(得分:2)

这是andreasdr答案的实用解决方案。

import pygame
from pygame import gfxdraw

def draw_circle(surface, x, y, radius, color):
    gfxdraw.aacircle(surface, x, y, radius, color)
    gfxdraw.filled_circle(surface, x, y, radius, color)