SDL - Teil vom Bild ausschneiden -> Transparenz weg



  • Ich hab ein Bild was per IMG_Load von SDL_image geladen wird. Wenn ich mit "SDL_SetColorKey" die entsprechende Farbe transparent mache und das auf 'screen' blitte, dann funktioniert es auch problemlos mit der Transparenz.

    Nun aber will ich nicht das gesamte Bild, sondern nur einen Ausschnitt davon. Also schnell ein SDL_Rect anlegen. Einfach nun das Surface von IMG_Load blitten geht nicht, da es vorher gedreht wird (in unterschiedliche Richtungen). Also wollte ich ein zwischen Surface anlegen, mit "SDL_CreateRGBSurface" in der neuen Größe. Darauf leg ich dann mit "SDL_BlitSurface" den entsprechenden Bereich des original Bildes.

    Wo ist nun aber die Transparenz hin? Weg.... Alle Bereiche die vorher transparent waren, sind nun einfach schwarz. Übrigen, der Colorkey ist nicht schwarz. Wie bekomme ich nun auf das neue, kleinere Surface die Transparenz wieder hin?
    Danke schonmal.



  • Naja... der Begriff SDL_CreateRGBSurface sagt eigentlich schon alles. 😉

    Das ist eine Surface OHNE einen Alphakanal.

    Solltest dir eine Surface suche, die Alpha erlaubt..



  • drakon schrieb:

    Solltest dir eine Surface suche, die Alpha erlaubt..

    Ja ok gut, aber ich hab nichts dazu gefunden. Was nimmt man da? In der SDL Doku find ich leider keine Funktion um einfach so Surfaces zu erstellen. Bis auf eben diese eine...



  • Hmm, mache nicht so viel mit der SDL (gar nichts mehr ;))

    Aber probier mal das Flag SDL_SRCALPHA anzugeben, wenn du die Surface erstellst.



  • drakon schrieb:

    Hmm, mache nicht so viel mit der SDL (gar nichts mehr ;))

    Aber probier mal das Flag SDL_SRCALPHA anzugeben, wenn du die Surface erstellst.

    Das hatte ich schon probiert, funktionierte jedoch auch nicht. ABER! Ich habs. Ja ja, die docs auch richtig lesen und verstehen hilft enorm. Jedenfalls hab ich für rmask, gmask, etc nicht die richtigen Werte genommen. Obwohl sogar ein Beispiel existiert. Siehe: http://www.libsdl.org/cgi/docwiki.cgi/SDL_5fCreateRGBSurface



  • Haha.. und da sagt man, dass lesen nicht bildet. 😃



  • Meine Vermutung ist, wenn du dein Bitmap mit dem Colorkey blittest, so werden die Regionen, wo der Color-Key gesetzt ist nicht angefasst. Sie bleiben also in dem neuen Bild, so, wie sie von anfang an waren. Also schwarz.

    Damit das funktioniert, solltest du folgendes machen: Colorkey ausschalten. Bitmap auf neues Bitmap blitten. Colorkey beim neuen und beim alten Bild wieder einschalten.


Anmelden zum Antworten