2016-08-13 10 views
1

Ich möchte den aktuellen Bildschirm ein wenig vor dem Auftauchen einer neuen Oberfläche verdunkeln. Ich weiß, dass es in Pygame keine Funktion dafür gibt und dass ich das Bild verarbeiten muss, um es zu verdunkeln. Aber solange ich weiß, ist die einzige Möglichkeit, die aktuelle Oberfläche in pygame anzuzeigen, die Speicherung auf der Festplatte als eine Datei, die das Spiel verlangsamt. Gibt es eine andere Möglichkeit, dies mit Pygame zu tun? So speichern Sie das Bild auf einen Wert im Speicher, damit ich es verarbeiten kann, ohne es irgendwo zu speichern.pygame-How to Bildschirm verdunkeln

Vielen Dank im Voraus,

Stam

Antwort

2

Sie müssen nicht alles in einer Datei zu speichern. Wenn Sie ein Bild in eine Datei lesen, handelt es sich um ein Objekt Surface. Sie blit dieses Objekt auf den Bildschirm. Aber diese Surface Objekte haben die gleichen Methoden und Eigenschaften als das Objekt, das als Bildschirm funktioniert - (das ist auch eine Oberfläche): Sie können Primitive zeichnen und andere Bilder zu ihnen blittieren - alles im Speicher.

Also, sobald Sie Ihr Bild lesen, machen Sie einfach eine Kopie davon, zeichnen Sie ein gefülltes Rechteck mit einer festen transparenten Farbe darauf, um es zu verdunkeln, und dann blit es auf den Bildschirm. Wiederholen Sie den Vorgang, erhöhen Sie die Transparenzstufe und fügen Sie sie erneut auf dem Bildschirm ein, wenn Sie einen Einblendeffekt wünschen.

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) 
+0

wahrscheinlich didnt ich mich klar, ich will mein Spiel verdunkeln, was bereits auf dem Bildschirm Blitted hat ... –

+0

Oh ich Ihren Punkt bekam, ein anderes Bild auf dem Bildschirm zeichnen, die es –

+0

Um dunkel dunkler werden, was bereits angezeigt wird, zeichnen Sie einfach ein transluzentes Rechteck auf dem Bildschirm: übergeben Sie der Füllfarbe eine vierte "Alpha" -Komponente, um die Deckkraft darzustellen. – jsbueno

Verwandte Themen