pygame-如何使屏幕变暗

时间:2016-08-13 09:09:38

标签: python python-3.x pygame

我想在弹出新曲面之前稍微改变当前屏幕的颜色。我知道pygame中没有这样做的功能,我必须处理图像才能使它变暗。但只要我知道在pygame中获取当前显示表面的唯一方法是将其作为文件保存到磁盘,从而减慢游戏速度。用pygame还有其他办法吗?就像将图像保存到内存中的值一样,这样我就可以处理它而不将其保存在某个地方。

提前致谢,

斯塔姆

1 个答案:

答案 0 :(得分:2)

您不需要将任何内容保存到文件中。 当您将图像读取到文件时,它是Surface对象。他们将这个对象blit到屏幕上。但是这些Surface对象具有与作为屏幕的对象相同的方法和属性 - (也是一个Surface):您可以绘制基元,并将其他图像blit到它们 - 全部都在内存中。

因此,一旦您阅读了图像,只需复制它,在其上绘制一个带有实心透明色的填充矩形,使其变暗,然后将其blit到屏幕上。如果您想要淡入效果,请重复此过程以提高透明度级别并再次将其粘贴在屏幕上。

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)