RGB wert in einen Integer umwandeln?
-
unsigned char ?
-
Original erstellt von xyz44:
Wie mache ich jetzt daraus einen INteger wert?????Das kommt auf das Farbformat an. Grundsätlich musst du dazu schiften und odern, nur bei Paletten ist's anders.
-
naja, das problem ist das der Befehl einen RGB vaklue in dieser form haben möchte
an integer in form 0x00RRGGBB
-
So vielleicht?
#define RGB(r,g,b) ((COLORREF)(((BYTE)(r)|((WORD)((BYTE)(g))<<8))|(((DWORD)(BYTE)(b))<<16))) #define GetRValue(rgb) ((BYTE)(rgb)) #define GetGValue(rgb) ((BYTE)(((WORD)(rgb)) >> 8)) #define GetBValue(rgb) ((BYTE)((rgb)>>16))
ist aus irgendeinem Header vom VC++
-
Moment, solch einen Integer bekommst du so in etwa (wenn ich jetzt keinen Denkfehler drin habe):
inline unsigned int Rgb2Int(unsigned char r, unsigned char g, unsigned char b) { return unsigned short(r) >> 8 | g | unsigned short(b) << 8; }
[ Dieser Beitrag wurde am 10.07.2003 um 18:44 Uhr von MaSTaH editiert. ]
-
na dann nimm die zweite variante. das ist genau das was du brauchst.
void CColor::GetColorBGRA(unsigned long *Color) { (*Color)=(unsigned long)Blue+((unsigned long)Green<<8)+((unsigned long)Red<<16)+((unsigned long)Alpha<<24); }
-
Benutzt keine Makros!
-
Keine Makros??? Warum, sollte doch genauso wie inline wirken oder?
-
SaM schrieb:
Keine Makros??? Warum, sollte doch genauso wie inline wirken oder?
ist das schon in der C++-FAQ? hier ein Link: http://www.gotw.ca/gotw/032.htm
-
Hi,
BRG in int? warum nicht so?
typedef unsigned char BYTE; typedef struct tag_Color { union { int icPart; // "Paket" mit Farbkode BYTE clrPart[4]; // clrPart[0] ist Rot, // clrPart[1] ist Grün, // clrPart[2] ist Blau, // clrPart[3] ist Alpha } color;
und nun hast du deine RGB Werte in einem int
MFG
Kai