我正在使用Pygame来绘制一些东西。问题是他们有很多别名边缘:
我想让它们更柔和,就像这样:
到目前为止,我的想法是以双倍大小绘制形状,然后使用
pygame.transform.smoothscale(surf, (w/2, h/2))
将它缩小到我想要的大小。
不幸的是,如果我在透明表面上绘制我的形状,那么smoothscale会将触摸透明像素的边缘变成黑色!
答案 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)