2024-03-28 21:26:12 发布
网友
我想在弹出一个新的表面之前把当前屏幕调暗一点。我知道在pygame中没有函数可以做到这一点,我必须处理图像使其变暗。但只要我知道,在pygame中获得当前显示表面的唯一方法是将其作为文件保存到磁盘上,这样可以减慢游戏的速度。对pygame还有其他方法吗?比如将图像保存到内存中,这样我就可以处理它而不必保存到某个地方。在
提前谢谢你
斯塔姆
您不需要将任何内容保存到文件中。 将图像读入文件时,它是一个Surface对象。你他们把这个物体放到屏幕上。但是这些Surface对象的方法和属性与作为屏幕的对象(屏幕也是一个曲面)相同:您可以绘制基本体,并将其他图像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)
您不需要将任何内容保存到文件中。 将图像读入文件时,它是一个
Surface
对象。你他们把这个物体放到屏幕上。但是这些Surface
对象的方法和属性与作为屏幕的对象(屏幕也是一个曲面)相同:您可以绘制基本体,并将其他图像blit到它们上面-所有这些都在内存中。在所以,一旦你读了你的图像,只需复制一份,画一个实心透明颜色的填充矩形,使其变暗,然后将其快速显示在屏幕上。如果需要淡入效果,请重复增加透明度级别并将其粘贴到屏幕上的过程。在
相关问题 更多 >
编程相关推荐