RGB-Anteile aus DWORD auslesen und als INT ausgeben

Malcolm

Level-1
Beiträge
37
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo zusammen,

habe folgendes Problem:


Gegeben habe ich ein DWORD für eine bestimmten Farbe,

z.B. dwBlue : DWORD := 16#0000DCDF;

Aus diesem würde ich gerne die RGB-Anteile auslesen und als INT ausgeben, also etwa so:

iRed = 0; // 16#00
iGreen = 220; // 16#DC
iBlue = 223; // 16#DF


Leider komme ich gerade nicht drauf, wie ich die Anteile einzeln auslesen kann und diese auch dementsprechend umrechnen kann...?


Grüße
Malcolm
 
Nur so ins Blaue geschossen.
Code:
iBlue := DWORD_TO_INT(dwRGB and 16#FF);
iGreen := DWORD_TO_INT(SHR(dwRGB,8) and 16#FF);
iRed := DOWRD_TO_INT(SHR(dwRGB,16) and 16#FF);

Blau: Bits maskieren, so das alle Bits ausser den niederwertigsten 8 wegfallen und dann das DWORD in INT wandeln.
Grün: DWORD um 8 Bits nach rechts shiften, maskieren und wandeln.
Rot: DWORD um 16 Bits nach rechts shiften, maskieren ....
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,

ich würde maskieren und dann bitshiften

DWORD AND 16#FF - Blau
SHR(DWORD,8) AND 16#FF - Grün
SHR(DWORD,16) AND 16#FF - Rot

Gruß

EDIT: OK, zu langsam
 
Zuletzt bearbeitet:
Zurück
Oben