2016-08-17 4 views
0

Ich habe versucht, ein Bild zu vergrößern, indem ich die Maus über das Bild bewegte und es auf die ursprüngliche Größe brachte, wenn ich mich von ihm entfernte. Zum Beispiel:Pygame hat ein Bild zurückgesetzt, nachdem es skaliert wurde

if ImageRect.collidepoint(mouseX,mouseY): 
    Image = pygame.transform.scale(Image, (100,100)) 
else: 
    Image = pygame.transform.scale(Image, (64,64)) #actual size of Image 

aber nach der Maus 10 mal darüber bewegt, wird das Bild seltsam bekommen. Wie kann ich das beheben?

This is how it looks

Antwort

0

Einige der Transformationen destruktiv betrachtet. Das bedeutet, dass sie alle Zeit verlieren sie Pixeldaten verlieren. Gängige Beispiele für diese sind Größe ändern und drehen. Aus diesem Grund ist es besser, die ursprüngliche Oberfläche neu zu transformieren, als ein Bild mehrfach zu transformieren. (Angenommen, Sie animieren eine springende Feder, die sich ausdehnt und zusammenzieht. Wenn Sie die Größe inkrementell auf die vorherigen Bilder anwendeten, würden Sie Details verlieren. Stattdessen immer mit dem Originalbild beginnen und auf die gewünschte Größe skalieren .)

von pygame.transform documentation

das Originalbild direkt Genommen

Arbeit um

Sie nicht jedes Mal ändern. Stattdessen wird jedes Mal, wenn sie kollidieren, ein neues Bild über dem alten Bild angezeigt (da es sich um ein größeres Bild handelt, wird das alte Bild nicht angezeigt). Alternativ können Sie einfach das alte Bild ausblenden.

Beispiel:

if ImageRect.collidepoint(mouseX,mouseY): 
    Image2 = pygame.transform.scale(Image, (100,100)) 
Verwandte Themen