Samstag, 6 Feb, 2010
Lektion 3
In dieser Lektion soll es darum gehen in einem Bild eine Farbe auf Transparent zu stellen. Für diese Lektion tauschen wir als erstes unser Bild aus. Warum wir eine Farbe transparent setzen wollen seht ihr hier:
Da wir aber keinen Hintergrund haben moechten und unser Bild wie folgt aussehen soll, mussen wir eine Hintergrundfarbe setzen die Transparent dargestellt wird.
Dazu bearbeiten wir unsere Bildladefunktion. In ersten Teil lassen wir so wie es ist.
SDL_Surface *lade_bild( std::string bildpfad )
{
//Nicht optimiertes Bild
SDL_Surface* normal_img = NULL;
//Optimiertes Bild
SDL_Surface* opt_img = NULL;
//Unoptimiertes Bild laden
normal_img = IMG_Load( bildpfad.c_str() );
//Optimiertes Bild erstellen
opt_img = SDL_DisplayFormat( normal_img );
//Unoptimiertes Bild freigeben
SDL_FreeSurface( normal_img );
An dieser Stelle erzeugen wir einen Farbschluessel passend zur Farbtiefe des Fensters. Dazu geben wir der SDL_MapRGB() als zweiten bis vierten Parameter einen Farbwert mit. Im ersten Argument geben wir unser Bild mit um den Farbwert und das Format fest zu legen.
//Farbschlüssel für die transparente Farbe im richigen Format erzeugen Uint32 colorkey = SDL_MapRGB( opt_img->format, 0xFF, 0, 0xFF );
Jetzt setzen wir alle Pixel in unserem Bild mit dem erzeugten Farbschlüssel auf Transparent.
//Setze die Pixel der Farbe Rot 0xFF, Grün 0, Blau 0xFF auf Transparent SDL_SetColorKey( opt_img, SDL_SRCCOLORKEY, colorkey ); return opt_img; }
Das wars schon, nun sollte der Hintergrund Transparent sein.