¿Cómo puedo dibujar imágenes y sprites en Pygame?

Resuelto jtl999 asked hace 12 años • 4 respuestas

¿Cómo puedo dibujar imágenes usando Pygame? Sé cómo cargarlos.

He hecho una ventana en blanco.

Cuando uso screen.blit(blank, (10,10)), no dibuja la imagen y deja la pantalla en blanco.

jtl999 avatar Jan 16 '12 03:01 jtl999
Aceptado

Este es un diseño típico:

myimage = pygame.image.load("myimage.bmp")
imagerect = myimage.get_rect()

while 1:
    your_code_here

    screen.fill(black)
    screen.blit(myimage, imagerect)
    pygame.display.flip()
joaquin avatar Jan 15 '2012 20:01 joaquin

Las imágenes están representadas por objetos "pygame.Surface" . Se puede crear una superficiepygame.image.load a partir de una imagen con :

my_image_surface = pygame.load.image('my_image.jpg')

Sin embargo, la documentación de Pygame señala que:

La superficie devuelta contendrá el mismo formato de color, clave de color y transparencia alfa que el archivo de donde procede. A menudo querrás llamar convert()sin argumentos para crear una copia que se dibujará más rápidamente en la pantalla.
Para transparencia alfa, como en imágenes .png, use el convert_alpha()método después de cargar para que la imagen tenga transparencia por píxel.

Utilice el método de conversión adecuado para obtener el mejor rendimiento:

image_surface = pygame.load.image('my_image.jpg').convert()
alpha_image_surface = pygame.load.image('my_icon.png').convert_alpha()

Una Superficie se puede dibujar o fusionar con otra Superficie usando el blitmétodo. El primer argumento para blit es la superficie que se debe dibujar. El segundo argumento es una tupla ( x , y ) que representa la esquina superior izquierda o un rectángulo. En un rectángulo, sólo se tiene en cuenta la esquina superior izquierda del rectángulo. Cabe mencionar que la ventana que se muestra respectivamente también está representada por una Superficie . Por lo tanto, dibujar una Superficie en la ventana es lo mismo que dibujar una Superficie sobre una Superficie :

window_surface.blit(image_surface, (x, y))
window_surface.blit(image_surface,
    image_surface.get_rect(center = window_surface.get_rect().center))

Ejemplo mínimo:

import pygame

pygame.init()
window = pygame.display.set_mode((300, 300))
clock = pygame.time.Clock()

pygameSurface = pygame.image.load('apple.png').convert_alpha()

run = True
while run:
    clock.tick(60)
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            run = False

    window.fill((127, 127, 127))
    window.blit(pygameSurface, pygameSurface.get_rect(center = window.get_rect().center))
    pygame.display.flip()

pygame.quit()
exit()

pygame.image.loades bale para cargar la mayoría de las imágenes. Según la documentación, se admiten los siguientes formatos: JPG, PNG, GIF (no animado), BMP, PCX, TGA (sin comprimir), TIF, LBM (y PBM), PBM (y PGM, PPM), XPM.

Si desea utilizar imágenes en Pygame que están cargadas con otras bibliotecas, consulte:

  • PIL y pygame.imagen
  • ¿Cómo convierto una imagen OpenCV (cv2) (BGR y BGRA) en un objeto pygame.Surface?

Para obtener información sobre cómo cargar archivos de gráficos vectoriales escalables (SVG), consulte:

  • Representación SVG en una aplicación Pygame

La carga de archivos GIF animados se presenta en:

  • ¿Cómo puedo cargar un GIF animado y obtener todos los fotogramas individuales en Pygame?
  • ¿Cómo hago un sprite como imagen GIF en Pygame?

O vea cómo cargar marcos NumPy :

  • Animaciones de Pygame y NumPy
Rabbid76 avatar Nov 01 '2020 09:11 Rabbid76