RGB-Werte bei einem 24/32 bit Bitmap
-
Hallo,
Ich hab eine Frage zu den Farben in einem Bitmap.
Bei einer Bittiefe von 16 bit werden die farben richtig dargestellt.
Ich gehe dabei folgendermaßen vor://Hier lasse ich mir die Adresse des Pixels zurück geben und weise sie c zu COLORREF c = (COLORREF)*(WORD*)m_imImage.GetPixelAddress(x, y+m_kDeltaY); //und später möchte ich den wert in result schreiben COLORREF result = ((c&0x7c00) << 9 | (c&0x3e0) << 6 | (c&0x1f) << 3);um die einzelnen farbwerte auszulesen mache ich folgendes:
crColor ist dabei eine Variable vom Typ COLORREF//Die funktionen GetRValue()... funktionieren nicht int red = crColor 0x0000ff; int green = crColor >> 8 & 0x0000ff ; int blue = crColor >> 16 & 0x0000ff;Das klappt alles.
Nun zu meiner Frage wenn ich letzteres für 24 und 32 bittiefe mache, muss ich doch eigendlich nur um jeweils 8 oder 16 bit weiter shiften. Oder?
Und das erste funktioniert gar nicht für 24 und 32 bit. Dabei wird
zum Beispiel die farbe RGB(255,255,255) als Blau dargestellt (sollte doch
aber weiß sein).Kann mir vielleicht jemand sagen wie die farbwerte in einem 24/32 Bit Bitmap gespeichert sind?
Und wie ich die farben richtig auslese, bzw. richtig in eine COLORREF-Variable schreibe?Danke schonmal.