4

我正在尝试在 pygame 中绘制简单的半透明矩形。我试过这段代码:

import pygame, sys,pygame.mixer

pygame.init()
size = (width, height) = (400, 400)
screen = pygame.display.set_mode(size)
screen.fill((255,255,255))
pygame.draw.rect(screen, (23, 100, 255, 50), (100,100,100,100),0)

running = True
while running:
    for event in pygame.event.get():
       if event.type == pygame.QUIT:
            pygame.quit()
            running = False

但正如你所见,矩形不是半透明的。就像我插入颜色 23, 100, 255, 255) 而不是 (23, 100, 255, 50)。

4

3 回答 3

6

您还可以使用 gfxdraw,它有几个选项并接受颜色的 alpha。

您需要导入:

import pygame.gfxdraw

并用于:

pygame.gfxdraw.box(screen, pygame.Rect(0,0,200,200), (100,0,0,127))
于 2014-03-16T00:47:51.173 回答
4

pygame.draw.rect文档没有说明对 alpha 通道的支持。

您应该创建一个 RGBA 表面并用半透明颜色填充它:

rect = pygame.Surface((100,100), pygame.SRCALPHA, 32)
rect.fill((23, 100, 255, 50))
screen.blit(rect, (100,100))
于 2012-10-23T11:52:21.330 回答
0

我在这里问了一个与此类似的问题。我最终做的是set_alpha()在将其转换为 alpha 图像后使用该功能。你可能会在我的问题中找到一些有用的东西。此外,请确保您没有在半透明的矩形后面显示具有 100% 不透明度的旧版本矩形。

于 2012-10-24T12:36:07.870 回答