¿Cómo puedo dibujar imágenes y sprites en Pygame?
¿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.
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()
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 elconvert_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 blit
mé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.load
es 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