在 circle 和 arc 方法的注释中提到了这个错误。draw.circle 文档的评论中有一种解决方法。这是改编自该解决方法:
def draw_outlined_circle(surf, color, origin, radius, thickness):
width = radius * 2 + thickness * 2
background = (0, 0, 0, 0)
circle = pygame.Surface((width, width)).convert_alpha()
rect = circle.get_rect()
circle.fill(background)
pygame.draw.circle(circle, color, rect.center, radius)
pygame.draw.circle(circle, background, rect.center, radius - thickness)
surf.blit(circle, (origin[0] - (rect.w / 2), origin[1] - (rect.w / 2)))
此方法使用额外的Surface
并绘制两个圆圈:一个较小的圆圈在一个较大的圆圈内,以达到相同的效果。较小圆圈的填充颜色的 alpha 为 0,因此整个圆圈的中心看起来是透明的。
编辑:从上面的评论中,我看到 pygame FAQ 中也提到了这种行为。