2017-11-14 25 views
1

Ich frage mich, ob es möglich ist, zwei Bilder mit sagen wir 120 und 200 Alpha auf eine Oberfläche mit 0 Alpha zu blit.Python/Pygame - Wie blitze ich verschiedene Transparenzen auf eine unsichtbare Oberfläche

Zum Beispiel:

Hier sind alle meine Variablen

game_display = pygame.display.set_mode((1280, 720)) 
transparent_display = pygame.Surface((1280, 720), pygame.SRCALPHA) 
transparent_display.set_alpha(0) 
object1 = pygame.Surface((100, 100)) 
object1.fill((255, 0, 0)) 
object2 = pygame.Surface((150, 50)) 
object2.fill((0, 0, 255)) 

Jetzt will ich mit allen Komponenten hinzugefügt hinein (Ich möchte, dass sie alle auf einer Oberfläche mit einer einzigen Oberfläche (Bild) machen so habe ich nicht jeder Oberfläche jedes Spiel Schleifenzyklus)

transparent_display.blit(object1, (0, 0)) 
transparent_display.blit(object2, (50, 50)) 
game_display.blit(transparent_display, (0, 0) 

ich entschuldige mich zu laden, wie ich auf t nicht sehr viel Wissen er Subjekt von Alphas mit Oberflächen in Pygame. Außerdem weiß ich, um den Bildschirm und alles zu aktualisieren, das ist nicht das Problem.

(Kommentar unten, wenn etwas nicht klar genug ist und ich werde erarbeiten)

+0

Und was funktioniert nicht? –

Antwort

2

setzen Sie die Alpha-Werte der beiden Objekte und Code funktionieren sollte.

object1.set_alpha(120) 
object2.set_alpha(200) 
# Then blit them onto `transparent_display`. 

Beachten Sie, dass set_alpha nicht alpha Oberflächen mit pro-Pixel funktioniert (Bilder geladen mit .convert_alpha() oder Oberflächen, auf die Sie pygame.SRCALPHA bestanden), aber man kann immer noch transparente Oberflächen auf diese pro-Pixel-alpha Oberflächen blitten.

Verwandte Themen