如何使屏幕变暗

2024-03-28 21:26:12 发布

您现在位置:Python中文网/ 问答频道 /正文

我想在弹出一个新的表面之前把当前屏幕调暗一点。我知道在pygame中没有函数可以做到这一点,我必须处理图像使其变暗。但只要我知道,在pygame中获得当前显示表面的唯一方法是将其作为文件保存到磁盘上,这样可以减慢游戏的速度。对pygame还有其他方法吗?比如将图像保存到内存中,这样我就可以处理它而不必保存到某个地方。在

提前谢谢你

斯塔姆


Tags: 文件方法函数内存图像游戏屏幕地方
1条回答
网友
1楼 · 发布于 2024-03-28 21:26:12

您不需要将任何内容保存到文件中。 将图像读入文件时,它是一个Surface对象。你他们把这个物体放到屏幕上。但是这些Surface对象的方法和属性与作为屏幕的对象(屏幕也是一个曲面)相同:您可以绘制基本体,并将其他图像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)

相关问题 更多 >