2012-10-23 117 views
3

我想在pygame中繪製簡單的半透明矩形。我試過這個代碼: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

回答

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)) 
+0

非常感謝。 – user1767774

-1

我問類似這樣here的問題。我最終做的是在將其轉換爲alpha圖像後使用set_alpha()函數。你可能會在我的問題中找到有用的東西。此外,請確保沒有顯示具有半透明背景的100%不透明度的矩形的舊版本。

5

您也可以使用gfxdraw,它有幾個選項,並接受alpha的顏色。

你需要導入:

import pygame.gfxdraw 

而且隨着使用:

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