pygame.transform.scale什么都不做

问题描述

我有一个大图像spaceship.png(我认为它是512x512),我希望它在屏幕上显示32x32个像素。

from time import sleep
import pygame as pg

HEIGHT = 600
WIDTH = 800


def main():
    pg.init()

    screen = pg.display.set_mode((WIDTH,HEIGHT))

    player_img = pg.image.load('assets/spaceship.png')
    pg.transform.scale(player_img,(32,32))

    for i in range(1000):
        screen.fill((0,0))
        screen.blit(player_img,(i,50))
        pg.display.update()

        # Check for QUIT event
        if pg.event.peek(eventtype=pg.QUIT):
            break
        sleep(0.1)

预期结果:飞船应显示为32x32的小图像,并在屏幕上缓慢移动。

实际结果:该飞船显示为512x512的大型图片,并在屏幕上缓慢移动。

我认为pg.transform.scale(player_img,32))会将player_img的宽度和高度设置为32,但是该调用似乎没有任何作用。如何缩小图像?

解决方法

pygame.transform.scale()不能在适当位置缩放表面。返回一个新的但缩放的曲面:

pg.transform.scale(player_img,(32,32))

player_img = pg.transform.scale(player_img,32))