pygame中的透明矩形

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)。


1
你能发一个完整的例子吗?上面的对我没有任何绘制。 - hexist
3个回答

6

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

您需要导入:

import pygame.gfxdraw

并使用以下方式:

pygame.gfxdraw.box(screen, pygame.Rect(0,0,200,200), (100,0,0,127))

5

pygame.draw.rect 的文档中未说明支持 Alpha 通道。

您应该创建一个 RGBA 表面并将其填充为半透明颜色:

rect = pygame.Surface((100,100), pygame.SRCALPHA, 32)
rect.fill((23, 100, 255, 50))
screen.blit(rect, (100,100))

0

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接