Python pygame如何使屏幕变暗
在弹出一个新的界面之前,我想把当前屏幕调暗一点。我知道pygame中没有任何函数可以执行此操作,我必须处理图像以使其变暗。但只要我知道,在pygame中获取当前显示表面的唯一方法是将其作为文件保存到磁盘,这会减慢游戏的速度。用pygame还有别的方法吗?比如将图像保存到内存中的某个值,这样我就可以处理它而无需将其保存在某处 提前感谢,Python pygame如何使屏幕变暗,python,python-3.x,pygame,Python,Python 3.x,Pygame,在弹出一个新的界面之前,我想把当前屏幕调暗一点。我知道pygame中没有任何函数可以执行此操作,我必须处理图像以使其变暗。但只要我知道,在pygame中获取当前显示表面的唯一方法是将其作为文件保存到磁盘,这会减慢游戏的速度。用pygame还有别的方法吗?比如将图像保存到内存中的某个值,这样我就可以处理它而无需将其保存在某处 提前感谢, Stam您不需要将任何内容保存到文件中。 将图像读取到文件时,它是一个曲面对象。您可以将此对象blit到屏幕上。但是这些Surface对象与作为屏幕的对象(也是一
Stam您不需要将任何内容保存到文件中。 将图像读取到文件时,它是一个
曲面
对象。您可以将此对象blit到屏幕上。但是这些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)
可能我没有说清楚,我想把我的游戏已经在屏幕上显示的内容变暗…哦,我明白你的意思了,在屏幕上画另一个图像,它会把已经显示的内容变暗,只需在屏幕上画一个半透明的矩形:将填充颜色传递到第四个“alpha”分量以表示不透明度。