Calificación:
  • 0 voto(s) - 0 Media
  • 1
  • 2
  • 3
  • 4
  • 5
Transparencia de una imagen con PyGame
#1
Hola, estoy trabajando sobre el tema de transparencia de un sprite usando PyGame (que tiene canal alfa). 
Si uso imagen.set_alpha(nivel_transparencia) lo logro pero me aparece el cuadrado de lo sprite (que con el canal alpha no se debería ver). En internet encontré una solución que funciona. Este es el código
Código:
def img_fade(background, img, location, opacity):
   x,y = location
   temp = pygame.Surface((img.get_width(), img.get_height())).convert()
   temp.blit(background, (-x, -y))
   temp.blit(img, (0, 0))
   temp.set_alpha(opacity)        
   background.blit(temp, (x,y))

La llamo así:
img_fade(screen, imagen, (100, 50), 100)

Quisiera saber como funciona
Responder
#2
Hola Gabriel.

La imagen puede venir ya con un canal alfa o bien lo podés aplicar vía PyGame. Para lo primero, tenés que usar la función convert_alpha() en lugar de convert(), por eso la transparencia no se aplica. Por otro lado, lo que hace la función es simplemente crear una nueva superficie (temp), pintarle tanto el fondo que le pasaste como argumento (screen) como la imagen (img) y luego aplicarle transparencia según el valor de opacity.

Saludos
Responder


Salto de foro:


Usuarios navegando en este tema: 1 invitado(s)