Forum: Compiler & IDEs RGB Bestandteile berechnen


von PEte (Gast)


Lesenswert?

Hallo,
Wie kann ich aus einem RGB Wert (0 bis 16777216). Die einzelnen 
Farbanteile rausrechnen? Also 65536 ist z.B. 256, 0, 0. Wie kann ich das 
umkehren?

Danke

von Martin S. (sirnails)


Lesenswert?

R = farbwert And &HFF&
G = farbwert \ &H100& And &HFF&
B = farbwert \ &H10000 And &HFF&

von Simon B. (nomis)


Lesenswert?

PEte schrieb:
> Wie kann ich aus einem RGB Wert (0 bis 16777216). Die einzelnen
> Farbanteile rausrechnen? Also 65536 ist z.B. 256, 0, 0. Wie kann ich das
> umkehren?

Falls Du 0 bis 16777215 meinst und falls Du mit 65536 eigentlich 1, 0, 0 
meinst:

r = (x >> 16) & 0xff
g = (x >>  8) & 0xff
b = (x >>  0) & 0xff

Viele Grüße,
        Simon

von PEte (Gast)


Lesenswert?

Martin Schwaikert schrieb:
> R = farbwert And &HFF&
> G = farbwert \ &H100& And &HFF&
> B = farbwert \ &H10000 And &HFF&

In C:
1
 RedColor  = RGBColor && 255 ;
2
 GreenColor = RGBColor / 256 && 255 ;
3
 BlueColor = RGBColor / 65536 & 255 ;

So bekomme ich die abstrusesten Werte. Was habe ich falsch "übersetzt"?

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

> So bekomme ich die abstrusesten Werte. Was habe ich falsch "übersetzt"?


Sieh Dir mal den Unterschied zwischen den Operatoren & und && an.
1
 RedColor  = RGBColor & 255;
2
 GreenColor = (RGBColor / 256) & 255;
3
 BlueColor = (RGBColor / 65536) & 255;

von Matthias L. (Gast)


Lesenswert?

>r = (x >> 16) & 0xff
>g = (x >>  8) & 0xff
>b = (x >>  0) & 0xff

x sollte ein uint32_t sein. Wenn r,g,b ein uint8_t ist, kannst du dir 
das & sparen.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.