我想知道如何将 pygame
项目中的图像大小缩放到屏幕分辨率。例如,设想以下场景,暂时假设窗口显示模式;我假设全屏是一样的:
我有一个
1600x900
背景图片,当然它会在1600x900
窗口中原生显示在
1280x720
窗口中,我显然可以将这些图像的矩形缩放到1280x720
会发生什么,但是如果我需要添加一个
300x300 px
图像,位于x,y 1440,860
(示例尺寸),尺寸为适合原始1600x900
背景?当然对于1600x900
我当然可以原生使用图像,但是更小/更大的窗口尺寸呢?
如何将图像缩放到窗口大小,然后相应地定位它们?我想一定有一个非常简单的自动化方法,但现在我想不通。
最佳答案
您可以使用 pygame.transform.scale
缩放图像:
import pygame
picture = pygame.image.load(filename)
picture = pygame.transform.scale(picture, (1280, 720))
然后就可以用
得到picture
的边框了
rect = picture.get_rect()
并移动图片
rect = rect.move((x, y))
screen.blit(picture, rect)
screen
被设置为类似
screen = pygame.display.set_mode((1600, 900))
为了让您的小部件适应各种屏幕尺寸, 你可以 make the display resizable :
import os
import pygame
from pygame.locals import *
pygame.init()
screen = pygame.display.set_mode((500, 500), HWSURFACE | DOUBLEBUF | RESIZABLE)
pic = pygame.image.load("image.png")
screen.blit(pygame.transform.scale(pic, (500, 500)), (0, 0))
pygame.display.flip()
while True:
pygame.event.pump()
event = pygame.event.wait()
if event.type == QUIT:
pygame.display.quit()
elif event.type == VIDEORESIZE:
screen = pygame.display.set_mode(
event.dict['size'], HWSURFACE | DOUBLEBUF | RESIZABLE)
screen.blit(pygame.transform.scale(pic, event.dict['size']), (0, 0))
pygame.display.flip()
关于python - 如何在 Pygame 中将图像缩放到屏幕大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20002242/