2015-04-24 3 views
1
light_green = (0,200,0,100) 
pygame.draw.rect(game_display,light_green,(50,200,60,110)) 

Я знаю, что это имеет свойство alpha в 4-й секции (100). Но он не прозрачен, если применяется поверх фона. Это просто сплошной квадратный блок. Я хочу видеть фон по площади. Любая помощь всегда ценится. Спасибо :)конвертировать базовые RGB в альфа в pygame

ответ

1

Функции модуля draw не прозрачны. См. documentation for draw

Большинство аргументов принимают аргумент цвета, который представляет собой триплет RGB. Они также могут принимать квадруплет RGBA. Значение альфа будет , записанное непосредственно в Поверхность, если оно содержит пиксельные альфы, , но функция рисования не будет рисовать прозрачно.

Обойти это можно использовать соответствующие функции из модуля pygame.gfxdraw вместо этого, они добавляют прозрачность для вашего случая функции box.

import pygame.gfxdraw 
light_green = (0,200,0,100) 
pygame.gfxdraw.box(game_display, pygame.Rect(50,200,60,110), light_green) 

Если вы хотите только нарисовать прямоугольники, вы можете как альтернативный способ непосредственно заполнить поверхность и нанести ее на экран.

light_green = (0,200,0,100) 
s = pygame.Surface((60, 110), pygame.SRCALPHA) 
s.fill(light_green) 
game_display.blit(s, (50, 200)) 
+0

:) Вы, рок, спасибо – pewpew

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