如何在pygame中使一个圆半透明?

时间:2019-05-31 01:49:06

标签: python pygame

我想制作一个局部透明的圆圈作为效果指示器的区域,但在pygame中还没有找到实现此目的的任何方法。

我尝试传递一个rgba 4元组作为参数(如this post的建议),但它根本没有改变透明度。最重要的是,根据this other post,该方法根本不起作用,因为draw不接受alpha值。那是矛盾的信息。

pygame.draw.circle(screen, (255, 0, 0, 100), (x, y), r)

我还尝试过创建一个新曲面,在该曲面上绘制圆,然后将新曲面拖到我的游戏屏幕上(由this post建议)。它按要求提供了一个半透明的圆,但是由于pygame中的曲面是矩形,因此它还为我提供了一个围绕该圆的灰色矩形,这是我不想要的。

s = pygame.Surface((1000, 1000))
s.set_alpha(100)
pygame.draw.circle(s, (255, 0, 0), (x, y), r)
screen.blit(s, (0, 0))

是否可以在不向屏幕上添加任何其他可见效果的情况下使该圆半透明?

1 个答案:

答案 0 :(得分:2)

这是您链接到标题为How to draw a semi-transparent circle in Pygame?的最后一个问题的答案的可运行版本。据我所知,它似乎可以满足您的要求。

import pygame

width, height = 640, 480

pygame.init()
clock = pygame.time.Clock()
screen = pygame.display.set_mode((width,height))
surface = pygame.display.set_mode((width,height), pygame.SRCALPHA)

while True:
    msElapsed = clock.tick(100)
    screen.fill((255,255,255))
    pygame.draw.circle(surface,(30,224,33,100),(250,100),10)
    screen.blit(surface, (0,0))
    pygame.display.update()

    for event in pygame.event.get():
        if event.type==pygame.QUIT:
            exit()
相关问题