2015-05-09 44 views
0

我知道,如何为pygame.Surface或pygame.image设置alpha。这将是:Python/PyGame:Set font.render()alpha

surface.set_alpha(alpha) 

,但如何做到这一点的标签,通过

创建
label = font.render("I'm a label", True, [255,255,255]) 

有谁知道这一点?

label.set_alpha(1) 

没有做任何事情。当我完成它时,它只是全部着色。

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

回答

1

当你调用font.render你得到一个surface。如果检查documentation它说:

“上一个新的表面 绘制文本渲染(文字,反锯齿,颜色,背景=无) - >表面”

的“ - >面”是指它返回表面。

所以基本上,你的标签应该像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

+0

当我写:'标记= pygame.Surface(标签)'我得到一个错误,因为pygame.Surface希望代替渲染字体作为PARAMS宽度和高度。 –

+0

我的道歉尝试这个'label = pygame.Surface((label.get_width(),label.get_height),label)' – JGerulskis

+0

同样的错误,导致最后的“标签”必须是一个整数。顺便说一句,你忘了label.get_height –