Rect
объект не предназначен для хранения изображений. pygame.image.load()
возвращает Surface
с изображением. Его можно использовать напрямую или на другом Surface
.
def __init__(self):
""" Constructor function """
# Call the parent's constructor
super().__init__()
width = 40
height = 60
self.image = pygame.image.load("TheArrow.png") #use the image Surface directly
self.rect = self.image.get_rect()
#the rest as in the original code
или
def __init__(self):
""" Constructor function """
# Call the parent's constructor
super().__init__()
width = 40
height = 60
myimage = pygame.image.load("TheArrow.png")
self.image = pygame.Surface([width, height])
self.image.blit(myimage) #blit the image on an existing surface
self.rect = self.image.get_rect()
#the rest as in the original code
В первом случае размер Surface
(связанный с ним прямоугольник, который можно получить с помощью self.image.get_rect()
, совпадает с размером загруженного файла изображения.
В последнем случае вы устанавливаете размер с помощью [with, height]
. Если они не соответствуют размеру изображения, оно будет обрезано (если оно больше).
Кстати, перетаскивая Surface
на другой Surface
, вы отображаете поверхность на экране. В Pygame экран - это просто еще один Surface
, немного особенный.
Для получения дополнительной информации ознакомьтесь с вводным учебником .