Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

Lord-archimedes

Treue Seele

  • »Lord-archimedes« ist der Autor dieses Themas

Beiträge: 234

Wohnort: Hannover

  • Private Nachricht senden

1

11.08.2009, 20:47

[SDL] Colorkey

Guten Abend,

Wenn ich mit der SDL colorkey funktion versuche einen "violetten" Teil meines Bildes durchsichtig zu machen dann schlägt das meist fehl...

Bei jpgs passiert so gut wie gar nichts, bei BMPs wird es größtensteils durchsichtig, nur direkt am Objekt nicht, da es beim komprimieren vermutlich zu Farbveränderungen gekommen sein muss, bei PNGs wo es eigentlich keine gibt (was man ja sehen kann)
kommt volgendes bei heraus:
Guckst du hier!
Ich kann mir das nicht erklären
Danke für Hilfe im voraus

drakon

Supermoderator

Beiträge: 6 513

Wohnort: Schweiz

Beruf: Entrepreneur

  • Private Nachricht senden

2

11.08.2009, 21:39

Jpgs sind koprimiert und daher sind die Farbdaten kaum noch in den Originalen vorhanden. Das eigenet sich somit nicht wirklich.
BMP's sollten allerdings exakt passen, da da die Farbdaten nicht verändert werden. Das kommt dann wahrscheinlich von deinem Programm, mit dem du die Bilder bearbeitest her.

Lord-archimedes

Treue Seele

  • »Lord-archimedes« ist der Autor dieses Themas

Beiträge: 234

Wohnort: Hannover

  • Private Nachricht senden

3

11.08.2009, 21:47

Das Programm war MS Paint :D

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

4

11.08.2009, 23:21

Speicherst du die Bitmaps vielleicht in einem komischen Format (256 Farben oder 16bit)?

Lord-archimedes

Treue Seele

  • »Lord-archimedes« ist der Autor dieses Themas

Beiträge: 234

Wohnort: Hannover

  • Private Nachricht senden

5

12.08.2009, 13:11

hm nein eigentlich nicht - ich kann nochmal nachgucken

6

15.03.2012, 13:04

Das Thema ist zwar schon etwas älter, aber ich habe ein ähnliches Problem mit PNGs.
Im Spiel aus Kapitel 12 (C++ für Spieleprogrammierer) möchte ich statt BMPs PNGs laden. Das includen der SDL_image.h, das laden und ausgeben der Bilder klappt soweit alles, aber das violett (255, 0, 255) wird einfach nicht durchsichtig angezeigt, die Funktion

(SDL_SetColorKey (m_pImage, SDL_SRCCOLORKEY, SDL_MapRGB (m_pImage->format, R, G, B) ) liefert allerdings nie -1 zurück, funktioniert also scheinbar.

Ist es bei PNGs genauso wie bei JPGs, dass durchsichtige Bereiche nicht erstellt werden können?

Beiträge: 1 223

Wohnort: Deutschland Bayern

Beruf: Schüler

  • Private Nachricht senden

7

15.03.2012, 14:37

Zitat

Ist es bei PNGs genauso wie bei JPGs, dass durchsichtige Bereiche nicht erstellt werden können?

Nein. Sollte problemlos gehen.

Bei Pngs würde es sich aber anbieten, die Transparenz direkt in einem Alphakannal zu hinterlegen.

Zitat

Speicherst du die Bitmaps vielleicht in einem komischen Format (256 Farben oder 16bit)?

Selbst 4 Bit Bilder wie sie von Paint unterstützt werden, können das 255_0_255 Lila speichern.
Also sollte das kein Problem sein.

8

15.03.2012, 17:48

Bei Pngs würde es sich aber anbieten, die Transparenz direkt in einem Alphakannal zu hinterlegen.


Selbst 4 Bit Bilder wie sie von Paint unterstützt werden, können das 255_0_255 Lila speichern.
Also sollte das kein Problem sein.
Hmm, also bei mir war es ganz einfach: BMP mit lila Hintergrund wurde dann durchsichtig, das selbe als PNG abgespeichert (habe bei Paint.NET immer 32bit gewählt, weil das Fenster auch 32bit ist) war dann mit lila Viereck.


Aber das mit dem Alphakanal hat mich auf die Idee gebracht, den Hintergrund einfach durchsichtig zu machen (oder ist das schon ein Kanal? :))
Und das klappt genauso gut, jetzt auch mit PNGs.
Also danke :D

Werbeanzeige