Работа с изображениями
Загрузка
Для того чтобы использовать картинки в вашей программе вам надо сделать следующее:
- Загрузить/найти нужный файл в формате png
- Положить его в ту же папку где находится файл с кодом вашей программы (
.py
) - В программе написать следующую строчку
image = pygame.image.load('file.png').convert_alpha()
image
будет переменной с нашим изображением.
Как и любую переменную, картинку нужно загружать перед игровым циклом (while running:
). Если вы используете несколько картинок, даже для одного предмета (например разные направления) загружайте их все один раз в начале программы и используйте в зависимости от ситуации.
Вывод на экран
screen.blit(image, (x, y))
Изображение нарисуется левым верхним углом в точке (x, y)
.
Изменение размера
Часто оказывается что картинка которую мы загрузили имеет большое разрешение, а значит и размер на экране. Вместо того чтобы исправлять это вручную в графическом редакторе используйте
new_image = pygame.transform.scale(image, (width, height))
new_image
будет вашей картинкой измененной до размеров width
и height
.
Поворот
new_image = pygame.transform.rotate(image, angle)
повернет изображение image
на angle
градусов.
Внимание
Нельзя поворачивать уже повернутую картинку. Это связанно с тем что повернутое изображение занимает больший прямоуглоьник чем старое, а значит его поворот будет искажаться. Нельзя вместо
image = pygame.transform.rotate(image, 5)
написать
image = pygame.transform.rotate(image, 1)
image = pygame.transform.rotate(image, 1)
image = pygame.transform.rotate(image, 1)
image = pygame.transform.rotate(image, 1)
image = pygame.transform.rotate(image, 1)
Аналогично, если вы хотите чтобы картинка поворачивалась на 1 градус каждый кадр, нельзя писать
while running:
...
image = pygame.transform.rotate(image, 1)
Вместо этого нужно исходную картинку всегда хранить без изменений, а повернутую получать каждый кадр заново.
angle = 0
while running:
...
angle = angle + 1
rotated_image = pygame.transform.rotate(image, angle)