截图然后blit它

Take screenshot then blit it

有没有办法从 GUI 使用 pygame 截取屏幕截图(前一帧 blit 的副本),将其分配给表面变量并进行 blit?没有将屏幕截图保存到文件,然后加载它,最后 blitting,

import pygame, os

pygame.init()
screen = pygame.display.set_mode((800, 400))

def TakeScreenShot(screen):
    pygame.image.save(screen, 'ScreenShot.png')
    pic = pygame.image.load(os.path.join('ScreenShot.png')).convert()

    return pic

pic = TakeScreenShot(screen)
screen.blit(pic, [0,0])
pygame.display.flip()

保存截图然后加载似乎真的没必要...有没有办法绕过这个直接blit截图到GUI?

例如,

import pygame, os

pygame.init()
screen = pygame.display.set_mode((800, 400))
pic = screen.getLastFrameBlitted()
screen.blit(pic, [0,0])
pygame.display.flip()

您可以随时复制屏幕并将其保存在变量中。

screenshot = screen.copy()

screen 只是一个普通的 Surface 对象,可以这样处理。 Blits 截图像往常一样完成

screen.blit(screenshot, (0, 0))