Python / PyGame:设置font.render()alpha

时间:2015-05-09 19:23:42

标签: python pygame label alpha blit

我知道,如何为pygame.Surface或pygame.image设置alpha。那将是:

surface.set_alpha(alpha)

但是如何为

创建的标签做到这一点
label = font.render("I'm a label", True, [255,255,255])

有谁知道这个?

label.set_alpha(1)

对此没有任何作用。当我穿上它时,它只是完全着色。

如果您不知道,我的意思是 - 随意问:)

1 个答案:

答案 0 :(得分:1)

当您调用font.render时,您将获得surface。如果您查看documentation,则说明:

"在新Surface上绘制文字 渲染(文本,抗锯齿,颜色,背景=无) - >表面"

" - >表面"意味着它返回一个表面。

所以基本上,你的标签应该像pygame中的任何图像一样工作。您可以尝试这样做以确保pygame将标签视为表面:label = pygame.Surface((label.get_width(), label.get_height()), label)

此外,您可能遇到锁定表面的问题。解锁它只需要pygame.Surface.unlock()pygame.Surface.lock()来锁定

更新: 我不知道你错过了一些细节有什么不对,因为它应该有效。

import pygame
pygame.init()
s = pygame.display.set_mode((500, 500))
font = pygame.font.SysFont("comicsansms", 20)
label = font.render("hello", 0, (255,255,255))
label.set_alpha(100)
while True:
    s.fill((0,0,0))
    s.blit(label, (0,0))
    pygame.display.update()

enter image description here