在pygame中的透明矩形

use*_*774 3 pygame python-2.7

我试图在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
Run Code Online (Sandbox Code Playgroud)

但正如您所看到的,矩形不是半透明的.这就像我插入颜色23,100,255,255)而不是(23,100,255,50).

谢谢!

pmo*_*eri 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))
Run Code Online (Sandbox Code Playgroud)


小智 5

你也可以使用gfxdraw,它有几个选项并接受alpha颜色.

你需要导入:

import pygame.gfxdraw
Run Code Online (Sandbox Code Playgroud)

并使用:

pygame.gfxdraw.box(screen, pygame.Rect(0,0,200,200), (100,0,0,127))
Run Code Online (Sandbox Code Playgroud)