Rotar imágenes en Pygame

Maxim Maeder 15 febrero 2024
  1. Rotar imágenes en Pygame
  2. Girar imagen centrada en Pygame
Rotar imágenes en Pygame

Este tutorial te enseña cómo rotar imágenes en Pygame.

Rotar imágenes en Pygame

Rotar imágenes y superficies en Pygame es fácil usando el método transform.rotate. Al igual que el método de escala, esto devolverá una nueva superficie.

Primero tenemos que proporcionar la superficie, que será rotada y luego la rotación en grados.

# Before the main loop
image = pygame.image.load("image.png")
image = pygame.transform.rotate(image, 45)

# in the main loop
screen.blit(image, (30, 30))

Si gira una superficie en el ciclo principal, es mejor no sobrescribir la superficie anterior, sino crear una nueva, como en el código a continuación.

rotation += 1
shown_image = pygame.transform.rotate(image, rotation)

screen.blit(shown_image, (30, 30))

Girar imagen centrada en Pygame

Notarás que la rotación está alrededor de la esquina superior izquierda, pero lo más probable es que quieras que gire alrededor de su centro. El siguiente código hace precisamente eso.

rotated_image = pygame.transform.rotate(image, 45)
new_rect = rotated_image.get_rect(center=image.get_rect(center=(300, 300)).center)

screen.blit(rotated_image, new_rect)

Código completo:

# Imports
import sys
import pygame

# Configuration
pygame.init()
fps = 60
fpsClock = pygame.time.Clock()
width, height = 640, 480
screen = pygame.display.set_mode((width, height))

image = pygame.image.load("image.png")
rotation = 0

# Game loop.
while True:
    screen.fill((20, 20, 20))
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            pygame.quit()
            sys.exit()

    rotated_image = pygame.transform.rotate(image, 90)

    new_rect = rotated_image.get_rect(center=image.get_rect(center=(300, 300)).center)

    screen.blit(rotated_image, new_rect)
    pygame.display.flip()
    fpsClock.tick(fps)

Producción:

rotar imagenes en pygame

Maxim Maeder avatar Maxim Maeder avatar

Hi, my name is Maxim Maeder, I am a young programming enthusiast looking to have fun coding and teaching you some things about programming.

GitHub

Artículo relacionado - Pygame Image