python - rotate - screen get_rect()
Cómo escalar imágenes a tamaño de pantalla en Pygame (2)
Puedes escalar la imagen con pygame.transform.scale
:
import pygame
picture = pygame.image.load(filename)
picture = pygame.transform.scale(picture, (1280, 720))
A continuación, puede obtener el rectángulo delimitador de la picture
con
rect = picture.get_rect()
y mover la imagen con
rect = rect.move((x, y))
screen.blit(picture, rect)
donde la screen
se puso con algo como
screen = pygame.display.set_mode((1600, 900))
Para permitir que sus widgets se ajusten a varios tamaños de pantalla, puede hacer que la pantalla se pueda cambiar de tamaño :
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()
Me preguntaba cómo podría escalar el tamaño de las imágenes en proyectos de pygame
a la resolución de la pantalla. Por ejemplo, imagine el siguiente escenario asumiendo el modo de visualización de ventana por el momento; Supongo que la pantalla completa será la misma:
Tengo una imagen de fondo de
1600x900
que, por supuesto, se muestra de forma nativa en una ventana de1600x900
En una ventana de
1280x720
, obviamente puedo escalar las imágenes directamente a1280x720
Sin embargo, ¿qué sucede si necesito agregar una imagen de
300x300 px
enx,y 1440,860
(tamaños de ejemplo) que tenga el tamaño adecuado para el fondo original de1600x900
? Por supuesto, para el1600x900
puedo usar la imagen de forma nativa, pero ¿qué pasa con los tamaños de ventana más pequeños / más grandes?
Básicamente, ¿cómo puedo escalar las imágenes al tamaño de la ventana y luego ubicarlas en consecuencia? Supongo que debe haber un método automatizado REALMENTE fácil, pero en este momento no puedo entenderlo y francamente no tengo tiempo para buscarlo ...
Gracias de antemano, Ilmiont
Si escala 1600x900 a 1280x720 tiene
scale_x = 1280.0/1600
scale_y = 720.0/900
De lo que puede usarlo para encontrar el tamaño del botón y la posición del botón
button_width = 300 * scale_x
button_height = 300 * scale_y
button_x = 1440 * scale_x
button_y = 860 * scale_y
Si escala 1280x720 a 1600x900 tiene
scale_x = 1600.0/1280
scale_y = 900.0/720
Y el descanso es lo mismo.
Agrego .0
al valor para hacer float
; de lo scale_x
, scale_x
, scale_y
se redondearán a integer
, en este ejemplo a 0
(cero) (Python 2.x)