2015-07-08 4 views
1

У меня есть довольно запутанная проблема. Я в настоящее время обратного отсчета, и я бы в идеале иметь текст с обратным отсчетом быть несколько прозрачной (скажем, 50% или около того)Проблема прозрачности Pygame

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) но не кажется, что сделать что-нибудь. Любые предложения приветствуются!

+0

Вы пытались сделать textSurfaceObj.set_alpha (50)? – csunday95

+0

Благодарим вас за быстрый ответ! У меня нет, но после попытки он ничего не дал. –

+0

попробуйте добавить .convert() в конец визуализации шрифта, то есть: 'textSurfaceObj = fontObj.render (str (i), True, (255, 0, 0) .convert()' и все еще устанавливая альфа для этой поверхности – csunday95

ответ

0

В pygame вы должны установить цвет фона для сглаженного текста, если вы хотите, чтобы он использовал цветную клавишу (позволяющую визуализировать прозрачный текст). Чтобы получить результат, который вам нужен, вам просто нужно сопоставить цвет фона с цветом поверхности, в данном случае белый. Ниже код (начиная сразу после того, для г в ...) работал для меня:

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) 

Edit: я сделал немного покопаться, как к тому, что здесь происходит, и this mailing list post детали свойства бэкэнда, которые вызывают это для любой заинтересованный.

+0

Вы абсолютно прав, это исправлено для меня! Спасибо. –

Смежные вопросы