2013-10-31 15 views
8

Hallo, auch wenn Sie vielleicht denken, dass es eine ähnliche Frage gab, ist meine ziemlich anders als this.PyGame - Getting die Größe eines geladenen Bildes

Ich versuche, ein Bild aus einem Verzeichnis zu laden, und meine Bildschirmgröße (automatisch) auf die Größe des Bildes als "Hintergrund" geladen werden.

import pygame 
import sys 
from pygame.locals import * 

image_resources = "C:/Users/user/Desktop/Pygame App/image_resources/" 

class load: 
    def image(self, image): 
     self.image = image 
     return (image_resources + image) 
    def texture(self, texture): 
     self.texture = texture 
     return (image_resources + texture) 

bg = load().image("bg_solid_black.jpg") 

pygame.init() 

#screen = pygame.display.set_mode((width,height),0,32) 

#background = pygame.image.load(bg).convert() 

#width = background.get_width() 
#height = background.get_height() 

Das Bild, das ich mit meiner geladen „load()“ Klasse wird auf die Variable „bg“ und ich mag die Größe verwenden, was auch immer ich lade als „bg“ die Größe des Fensters zu bestimmen, . Wenn Sie versuchen,

background = pygame.image.load(bg).convert() 

width = background.get_width() 
height = background.get_height() 

Auf diesem zu bewegen:

screen = pygame.display.set_mode((width,height),0,32) 

PyGame gibt einen Fehler zurück, in dem es heißt, dass der Anzeigemodus nicht eingestellt ist. Wenn ich es wie folgt tun:

screen = pygame.display.set_mode((width,height),0,32) 

background = pygame.image.load(bg).convert() 

width = background.get_width() 
height = background.get_height() 

natürlich ist dies nicht der Fall, da Variablen „Breite“ und „Höhe“ sind nicht für die Verwendung von „pygame.display.set_mode()“ definiert.

Ich kann nicht scheinen, dies herauszufinden, ich von der Lösung durch eine OO Art und Weise, aber ich kann einfach nicht scheinen, es herauszufinden. Irgendeine Hilfe?

Thanks :)

Antwort

7

Bevor Sie die convert() Funktion auf jeder Oberfläche verwenden können, muss der Bildschirm initialisiert worden sein.

können Sie Bilder laden, bevor Sie set_mode, ihre Größe, und dann convert sie nach Sie die Anzeige initialisiert haben, etwa so:

import pygame 

pygame.init() 

image = pygame.image.load("file_to_load.jph") 
print image.get_rect().size # you can get size 

screen = pygame.display.set_mode(image.get_rect().size,0,32) 

image = image.convert() # now you can convert 
+0

Sie auf Ecke mit 'Bild hier schneiden kann. get_size() 'anstelle von' image.get_rect(). size', wobei auf das temporäre 'Rect'-Objekt verzichtet wird. – Augusta

+0

@Augusta Sie können immer noch Ihre eigene Antwort auf diese Frage schreiben :) – furas

+0

Ich könnte, aber es wäre nicht sinnvoll anders von diesem einen abgesehen vielleicht für die 'get_size()' Sache und ein wenig Prosa. Es wäre die gleiche Grundlösung. ;) – Augusta

Verwandte Themen