1
我想在彈出新表面之前將當前屏幕變暗一點。我知道在pygame中沒有這樣做的功能,而且我將不得不處理圖像以使其變暗。但只要我知道在pygame中獲取當前顯示錶面的唯一方法就是將其作爲一個文件保存到磁盤,從而減慢遊戲速度。有沒有其他方法可以用pygame做到這一點?就像將圖像保存到內存中的值,以便我可以在不保存某處的情況下處理它。pygame-如何變暗屏幕
由於提前,
斯塔姆
我想在彈出新表面之前將當前屏幕變暗一點。我知道在pygame中沒有這樣做的功能,而且我將不得不處理圖像以使其變暗。但只要我知道在pygame中獲取當前顯示錶面的唯一方法就是將其作爲一個文件保存到磁盤,從而減慢遊戲速度。有沒有其他方法可以用pygame做到這一點?就像將圖像保存到內存中的值,以便我可以在不保存某處的情況下處理它。pygame-如何變暗屏幕
由於提前,
斯塔姆
你不需要任何東西保存到一個文件。 當您將圖像讀入文件時,它是一個Surface
對象。你他們將這個物體閃光到屏幕上。但是這些Surface
對象的方法和屬性與作爲屏幕的對象相同 - (它也是一個Surface):您可以繪製圖元,並將其他圖像傳送給它們 - 所有這些都在內存中。
所以,一旦你讀了你的圖像,只需製作一個副本,繪製一個實心透明顏色的填充矩形使其變暗,然後將其投影到屏幕上。重複該過程,增加透明度級別,如果要淡入淡出效果,請將其粘貼到屏幕上。
import pygame
screen = pygame.display.set_mode((640,480))
img = pygame.image.load("MYIMAGE.PNG")
for opacity in range(255, 0, -15):
work_img = img.copy()
pygame.draw.rect(work_img, (255,0, 0, opacity), (0,0, 640,480))
screen.blit(work_img, (0,0))
pygame.display.flip()
pygame.time.delay(100)
可能我沒有說清楚了,我想變黑就是我的比賽已經被blit屏幕... –
哦,我得到了你的觀點,在屏幕上繪製另一個圖像將變暗 –
暗什麼已經是顯示,只需在屏幕上繪製一個半透明的矩形:將填充顏色傳遞給第四個「alpha」組件以表示不透明度。 – jsbueno