【发布时间】:2015-04-24 05:00:17
【问题描述】:
light_green = (0,200,0,100)
pygame.draw.rect(game_display,light_green,(50,200,60,110))
我知道这在第 4 节 (100) 中具有 alpha 属性。但是当应用在背景上时它是不透明的。它只是一个实心方块。我希望能够通过广场看到背景。任何帮助总是很感激。谢谢:)
【问题讨论】:
light_green = (0,200,0,100)
pygame.draw.rect(game_display,light_green,(50,200,60,110))
我知道这在第 4 节 (100) 中具有 alpha 属性。但是当应用在背景上时它是不透明的。它只是一个实心方块。我希望能够通过广场看到背景。任何帮助总是很感激。谢谢:)
【问题讨论】:
绘图模块的函数不绘制透明。见documentation for draw
大多数参数都接受一个颜色参数,它是一个 RGB 三元组。 这些也可以接受 RGBA 四联体。阿尔法值将是 如果它包含像素 alpha,则直接写入 Surface,但是 draw 函数不会透明地绘制。
一种解决方法是改用 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)
如果您只想绘制矩形,您可以作为替代方式直接填充 Surface 并将其 blit 到屏幕上。
light_green = (0,200,0,100)
s = pygame.Surface((60, 110), pygame.SRCALPHA)
s.fill(light_green)
game_display.blit(s, (50, 200))
【讨论】: