2017-12-15 2 views
3

Gibt es eine Möglichkeit, einen Screenshot (eine Kopie des vorherigen Frames) mit pygame aus der GUI zu machen, ihn einer Oberflächenvariablen zuzuweisen und ihn zu blitten? Ohne den Screenshot in einer Datei zu speichern, dann laden, und es schließlich Blitten,Screenshot machen, dann blit es

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() 

Die Einsparung Screenshot dann scheint wirklich unneccsary geladen ... gibt es eine Methode, dies zu umgehen und direkt blitten den Screenshot der genommen GUI?

Das heißt, etwas wie

import pygame, os 

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

Antwort

4

Sie können eine Kopie des Bildschirms jederzeit nehmen Sie wollen und es in einer Variablen speichern.

screenshot = screen.copy() 

Bildschirm ist nur ein normales Oberflächenobjekt und kann als solches behandelt werden. Das Blitzen des Screenshots erfolgt wie gewohnt

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

Vielen Dank! So einfach, ich kann nicht glauben, dass ich nicht daran gedacht habe! – ThePithon

Verwandte Themen