Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/314.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python pygame如何使屏幕变暗_Python_Python 3.x_Pygame - Fatal编程技术网

Python pygame如何使屏幕变暗

Python pygame如何使屏幕变暗,python,python-3.x,pygame,Python,Python 3.x,Pygame,在弹出一个新的界面之前,我想把当前屏幕调暗一点。我知道pygame中没有任何函数可以执行此操作,我必须处理图像以使其变暗。但只要我知道,在pygame中获取当前显示表面的唯一方法是将其作为文件保存到磁盘,这会减慢游戏的速度。用pygame还有别的方法吗?比如将图像保存到内存中的某个值,这样我就可以处理它而无需将其保存在某处 提前感谢, Stam您不需要将任何内容保存到文件中。 将图像读取到文件时,它是一个曲面对象。您可以将此对象blit到屏幕上。但是这些Surface对象与作为屏幕的对象(也是一

在弹出一个新的界面之前,我想把当前屏幕调暗一点。我知道pygame中没有任何函数可以执行此操作,我必须处理图像以使其变暗。但只要我知道,在pygame中获取当前显示表面的唯一方法是将其作为文件保存到磁盘,这会减慢游戏的速度。用pygame还有别的方法吗?比如将图像保存到内存中的某个值,这样我就可以处理它而无需将其保存在某处

提前感谢,


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”分量以表示不透明度。