Menu
CoddyTech

缩放图像

本课属于 Coddy Pygame 学习旅程的“精灵与图像”单元。第 8 课,共 39 课。

关卡首领应该看起来很大,而生命计数器需要小飞船。同一组文件可以同时满足这两种需求:缩放会生成调整大小后的副本。

boss = pygame.transform.scale_by(boss, 2)
icon = pygame.transform.scale(ship, (32, 32))

scale_by(image, 2)会将宽和高都乘以 2:64×64 的首领会变成 128×128。scale(image, (w, h))会将图像调整到恰好 w×h 像素,即使这样会拉伸图像。

与 blit 相比,缩放很慢,而且每生成一个新副本,像素都会变得更模糊或更粗糙一些。请在循环开始前从原始文件缩放一次,并在每一帧都绘制缩放后的副本。

缩放后再创建 Rect。根据 64×64 的图片创建的 Rect 会是原来的大小,而center=(320, 150)会让大首领偏离中心。

challenge icon

挑战

简单

绘制一个大 Boss 和三个小飞船图标。

  1. 在循环之前,将 Boss 缩放到 2 倍,然后根据缩放后的图像创建 boss_rect,并将其中心设为 (320, 150)。
  2. 创建 icon:将飞船缩放到 (32, 32)。
  3. 在 (10, 10)、(50, 10) 和 (90, 10) 处绘制 icon,使其左上角位于这些位置。

按“开始”:你会看到一个大 Boss 和三艘小飞船位于左上方。然后按“检查”。

亲手试试

import pygame

pygame.init()
screen = pygame.display.set_mode((640, 480))
pygame.display.set_caption("Boss Fight")
clock = pygame.time.Clock()

boss = pygame.image.load("assets/images/boss.png").convert_alpha()
boss_rect = boss.get_rect(center=(320, 150))
ship = pygame.image.load("assets/images/ship.png").convert_alpha()

running = True
while running:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            running = False

    screen.fill((20, 22, 40))
    screen.blit(boss, boss_rect)
    pygame.display.flip()
    clock.tick(60)

pygame.quit()

精灵与图像中的所有课

自己练习: Pygame 在线编辑器