我知道,如何为pygame.Surface或pygame.image设置alpha。那将是:
surface.set_alpha(alpha)
但是如何为
创建的标签做到这一点label = font.render("I'm a label", True, [255,255,255])
有谁知道这个?
label.set_alpha(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()