python - 如何在 Pygame 中将图像缩放到屏幕大小

标签 python image background pygame scaling

我想知道如何将 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/

相关文章:

php - 用 PHP 获取 img src

iphone - iPhone 应用程序可以在后台因重大位置变化而唤醒进行网络事件吗?

python opencv填充未完全闭合的轮廓

python - 使用 = 命令时,Vim 不会正确缩进 Python 代码

python - 如何在 Python 中读取图像的像素数

java - BufferedImage + jPanel 使用 Qt 在 C++ 中查看图像的等效方法

html - 我应该在什么时候使用什么图像类型? GIF、JPG 还是 PNG?

ios - UIButton 背景图像调整大小

mobile - OnApplicationFocus()和OnApplicationPause()有什么区别?

python - 如何在Python中为str子代覆盖ord行为?