Tienes que utilizar la funci?n
SDL_SetColorKey() para definir el color transparente de la superficie
En este caso, la imagen tiene de fondo el color (0,64,0), as? que para hacer que ese color sea transparente:
SDL_SetColorKey(imagen,SDL_SRCCOLORKEY,SDL_MapRGB(imagen->format,0,64,0));Algunas sugerencias sobre el programa:
-Utiliza "SDL.h" en lugar de <SDL/SDL.h> e int main(int argc, char **argv) en lugar de int main() para que el c?digo sea m?s portable
-Comprueba siempre que la imagen se ha cargado correctamente, porque si no es as? el programa te dar? una violaci?n de segmento cuando intentes hacer cualquier cosa con la superficie
-Has utilizado la funci?n SDL_FillRect para rellenar de negro la superficie en la que est? el monigote. Una vez que hayas definido el color transparente de la superficie esta funci?n no es necesaria
-No hace falta que definas la estructura "Origen". Como en este caso queremos pegar la figura del monigote completa basta con poner NULL en el segundo par?metro de la funci?n SDL_BlitSurface
-La imagen del monigote tiene unas lineas blancas arriba y abajo que naturalmente luego aparecen en el programa. Adjunto una versi?n recortada sin esas l?neas
#include <stdio.h>
#include <stdlib.h>
#include "SDL.h"
int main(int argc, char **argv)
{
SDL_Surface *pantalla, *imagen;
SDL_Rect Destino;
SDL_Init(SDL_INIT_VIDEO);
atexit(SDL_Quit);
pantalla = SDL_SetVideoMode(640, 480, 16, SDL_HWSURFACE);
/*Cargamos la imagen del monigote y comprobamos que se ha asignado
correctamente a la superficie*/
imagen = SDL_LoadBMP("caminando_1.bmp");
if(imagen==NULL)
{
printf("Error cargando imagen\n");
return(1);
}
/*Ponemos el color verde de fondo como color transparente*/
SDL_SetColorKey(imagen,SDL_SRCCOLORKEY,SDL_MapRGB(imagen->format,0,64,0));
Destino.x=245; Destino.y=170; // M?s o menos centrado
SDL_BlitSurface(imagen,NULL,pantalla,&Destino);
SDL_UpdateRect(pantalla, 0, 0, 0, 0);
SDL_Delay(5000);
SDL_FreeSurface(imagen);
return 0;
}Saludos