3.8 Rendre une couleur transparente

Oui, j'ai quand même une pensée pour ceux qui veulent à tout prix utiliser des images en .bmp mais qui veulent faire aussi de la transparence.

La fonction est la suivante :

1
int SDL_SetColorKey(SDL_Surface *surface, Uint32 flag, Uint32 key);
  • surface est l'image que l'on veut traiter
  • flag est la couleur de transparence : SDL_SRCCOLORKEY
  • key est la couleur a remplacer par de la transparence
  • retourne 0 si tout va bien, -1 sinon

Exemple :

1
2
3
4
SDL_Surface* image = SDL_LoadBMP("image.bmp");
Uint32 color = SDL_MapRGB(image->format, 0, 0, 255);
SDL_SetColorKey(image, SDL_SRCCOLORKEY, color);
//ici l'image ne contient plus de bleu

On remplace le bleu par de la transparence. Ça marche aussi si vous voulez faire disparaître une couleur de n'importe quelle image.

Et on pense toujours a détruire l'image à la fin du programme, (je sais, je me répète).