在Pygame中抗锯齿形状
我正在使用Pygame来画一些东西。问题是它们的边缘看起来很锯齿状:
我想让它们看起来更柔和,像这样:
到目前为止,我的想法是先把形状画得大一倍,然后用
pygame.transform.smoothscale(surf, (w/2, h/2))
把它缩小到我想要的大小。
不幸的是,如果我在一个透明的表面上画我的形状,使用smoothscale会把接触透明像素的边缘变成黑色!
- 我该如何平滑缩放一张图片,而不把透明像素变成黑色,或者
- 还有什么其他方法可以让边缘变得平滑?
2 个回答
12
这是一个针对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)
27
为了在pygame中绘制抗锯齿的填充形状,你可以使用一个叫做 gfxdraw
的模块,先画一个抗锯齿的轮廓,然后再画一个普通的填充形状。
来自 https://www.pygame.org/docs/ref/gfxdraw.html 的说明:
要绘制一个抗锯齿的填充形状,首先使用带有 aa* 的函数版本,然后再使用填充版本。
注意,你需要明确导入 gfxdraw
,也就是说要写 from pygame import gfxdraw
。