Ilm*_*ont 25 python scaling pygame background image
我想知道如何将pygame项目中图像的大小缩放到屏幕的分辨率.例如,设想以下场景假设当前窗口显示模式; 我假设全屏将是相同的:
我有一个1600x900背景图像,当然在1600x900窗口中本地显示
在一个1280x720窗口中,我显然可以将这个图像缩放到1280x720
然而,如果我需要添加,请说一个尺寸适合原始背景的300x300 px图像x,y 1440,860(示例尺寸)会发生什么1600x900?当然,对于1600x900我当然可以原生使用图像,但是较小/较大的窗口大小呢?
基本上,如何将图像缩放到窗口大小然后相应地定位?我想必须有一个非常简单的自动化方法,但现在我无法弄清楚,坦率地说没有时间去搜索它...
提前谢谢,Ilmiont
unu*_*tbu 56
您可以使用以下方式缩放图像pygame.transform.scale:
import pygame
picture = pygame.image.load(filename)
picture = pygame.transform.scale(picture, (1280, 720))
Run Code Online (Sandbox Code Playgroud)
然后,您可以获取picturewith 的边界矩形
rect = picture.get_rect()
Run Code Online (Sandbox Code Playgroud)
用图片移动图片
rect = rect.move((x, y))
screen.blit(picture, rect)
Run Code Online (Sandbox Code Playgroud)
在哪里screen设置类似的东西
screen = pygame.display.set_mode((1600, 900))
Run Code Online (Sandbox Code Playgroud)
要允许小部件调整为各种屏幕大小,可以使显示大小调整:
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()
Run Code Online (Sandbox Code Playgroud)
如果您将1600x900缩放到1280x720,则可以
scale_x = 1280.0/1600
scale_y = 720.0/900
Run Code Online (Sandbox Code Playgroud)
您可以使用它来查找按钮大小和按钮位置
button_width = 300 * scale_x
button_height = 300 * scale_y
button_x = 1440 * scale_x
button_y = 860 * scale_y
Run Code Online (Sandbox Code Playgroud)
如果您将1280x720扩展到1600x900,则可以
scale_x = 1600.0/1280
scale_y = 900.0/720
Run Code Online (Sandbox Code Playgroud)
和休息是一样的.
我将.0值添加到float- 否则scale_x,scale_y将舍入到integer- 在此示例中为0(零)(Python 2.x)
| 归档时间: |
|
| 查看次数: |
72390 次 |
| 最近记录: |