set_alpha rotate get_rect convert python image background pygame scaling

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 de 1600x900

  • En una ventana de 1280x720 , obviamente puedo escalar las imágenes directamente a 1280x720

  • Sin embargo, ¿qué sucede si necesito agregar una imagen de 300x300 px en x,y 1440,860 (tamaños de ejemplo) que tenga el tamaño adecuado para el fondo original de 1600x900 ? Por supuesto, para el 1600x900 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)