Pygame 透明度问题

Pygame transparency issue

我有一个相当混乱的问题。我目前有一个倒计时,理想情况下我希望倒计时中的文字有点透明(比如 50% 左右)

    pygame.init()
    surface = pygame.display.set_mode((0,0))
    fontObj = pygame.font.Font('freesansbold.ttf', 600)
    textSurfaceObj = fontObj.render("3", True, (255, 255, 255))
    textRectObj = textSurfaceObj.get_rect()
    textRectObj.center = (surface.get_width() / 2, surface.get_height() / 2)
    pygame.mouse.set_visible(False)

while True:
    surface.fill(255, 255, 255)
    pygame.display.update()

    time = str(datetime.datetime.now())
    filename = 'photos/' + time.replace(' ', '_') + '.jpg'
    for i in xrange(3, 0, -1):
            surface.fill(WHITE)
            textSurfaceObj = fontObj.render(str(i), True, (255, 0, 0)
            surface.blit(textSurfaceObj, textRectObj)
            pygame.display.update()
            pygame.time.wait(1000)
            pygame.display.update()
            pygame.time.wait(100);
            surface.fill(WHITE)
            pygame.display.update()

我试过输入 surface.set_alpha(50) 但这似乎没有任何作用。非常欢迎任何建议!

在 pygame 中,如果您希望抗锯齿文本使用颜色键(允许呈现透明文本),则必须为抗锯齿文本设置背景颜色。要获得您想要的结果,您只需将背景颜色与表面颜色相匹配,在本例中为白色。下面的代码(在 for i in ... 之后开始)对我有用:

surface.fill(WHITE)
textSurfaceObj = fontObj.render(str(i), True, (255, 0, 0),WHITE)
textSurfaceObj.set_alpha(50)
surface.blit(textSurfaceObj,(0,0))
pygame.display.update()
pygame.time.wait(500)

编辑:我对这里发生的事情进行了一些挖掘,this mailing list post 详细说明了导致此问题的任何感兴趣的人的后端属性。