SDL - Transparenz bei Bildern



  • Hallo!

    Ich habe eben angefangen mit SDL, und habe mir dazu ein Wikibook über SDL zum Lernen ausgesucht.

    Ich hab das Problem, dass der rote Hintergrund eines angezeigten Bildes nicht transparent wird, trotz Kopie des Codes von der Seite.
    Hier der Code:

    #include <stdlib.h>
     #include <SDL/SDL.h>
    
     int main(int argc, char *argv[])
     {
    
         SDL_Surface *screen, *image;
         SDL_Rect dst;
         SDL_Event event;
         int done = 0;
    
         if (SDL_Init(SDL_INIT_VIDEO) == -1) {
             printf("Can't init SDL:  %s\n", SDL_GetError());
             exit(1);
         }
    
         atexit(SDL_Quit); 
         screen = SDL_SetVideoMode(640, 480, 16, SDL_HWSURFACE | SDL_DOUBLEBUF);
    
         if (screen == NULL) {
             printf("Can't set video mode: %s\n", SDL_GetError());
             exit(1);
         }
    
         SDL_FillRect(screen, NULL, SDL_MapRGB(screen->format, 0, 0, 255));
         image = SDL_LoadBMP("Rot-tux.bmp");
    
         if (image == NULL) {
             printf("Can't load image of tux: %s\n", SDL_GetError());
             exit(1);
         }
    
         dst.x = 200;
         dst.y = 200;
         dst.w = image->w;
         dst.h = image->h;
    
    /* Hier sollte eigentlich die Transparenz ausgewählt werden.
     Ich habe schon im Bild nachgeschaut, der Farbwert ist wirklich 255,0,0. */
    
         SDL_SetColorKey(image, SDL_SRCCOLORKEY, SDL_MapRGB(image->format, 255, 0, 0));
    
         SDL_BlitSurface(image, NULL, screen, &dst);
         SDL_FreeSurface(image);
         SDL_Flip(screen);
    
         while (!done) {
             while (SDL_PollEvent(&event)) {
                 switch (event.type) {
                 case SDL_QUIT:
                     done = 1;
                     break;
                 }
             }
         }
    
         return 0;
     }
    

    Ist irgendwas im Code falsch oder kanns mein Rechner nur nicht richtig darstellen?



  • Prüfe Mal, ob das rot im BMP tatsächlich (255,0,0) ist.


Anmelden zum Antworten