RGB Verständnis Problem

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
X360 Andy
Beiträge: 1206
Registriert: 11.05.2008 00:22
Wohnort: Bodensee
Kontaktdaten:

RGB Verständnis Problem

Beitrag von X360 Andy »

Ich habe gerade ein Verständnis Problem und zwar

Code: Alles auswählen

Farbe = $FFFFFFF

Red = Red(Farbe)
Green = Green(Farbe)
Blue = Blue(Farbe)
RGB = RGB(Red, Green, Blue)
Debug RGB
Eigentlich müsste doch RGB das gleiche wie Farbe ausgeben oder täusche ich mich da jetzt ?

Mir ist auch klar das die Var keine Zeichen beinhalten kann aber am Anfang gehts ja irgendwie auch....

ich brauche den Code da ich gerade einen Color Mixer bastele der 3 Trackbars hat die von 0 - 255 laufen wo der HEXCODE bei jeder änderung aktullisiert werden soll.
- chris -
Beiträge: 195
Registriert: 24.08.2005 19:52
Wohnort: Stadtallendorf

Beitrag von - chris - »

genauso ist es auch:

Code: Alles auswählen

Farbe = $FFFFFF

Red = Red(Farbe)
Green = Green(Farbe)
Blue = Blue(Farbe)
RGB = RGB(Red, Green, Blue)

Debug Hex(RGB)
PB v5.72 x86/x64
Windows 10 Pro 64bit
Benutzeravatar
X360 Andy
Beiträge: 1206
Registriert: 11.05.2008 00:22
Wohnort: Bodensee
Kontaktdaten:

Beitrag von X360 Andy »

Ahhhh danke....vergessen das ganze wieder zu verhexen :D
Benutzeravatar
AND51
Beiträge: 5220
Registriert: 01.10.2005 13:15

Beitrag von AND51 »

> Eigentlich müsste doch RGB das gleiche wie Farbe ausgeben oder täusche ich mich da jetzt ?
Du täuschst dich.

Der maximale RGB Farbwert liegt bei $FFFFFF (6 mal F) oder in Dezimal: 16.777.215.
Dein Farbwert hat aber 8 F's, geht deutlich über 16,8 Mio. hinaus.
PB 4.30

Code: Alles auswählen

Macro Happy
 ;-)
EndMacro

Happy End
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

und nochwas:

1) du kannst den hexstring auch wieder in eine zahl wandeln, wenn du das dollarzeichen davor setzt.

beachte den vergleich der urspünglichen Farbe und der rückgewandelten color im code unten.
außerdem sollte man führende Nullen ergänzen beim erzeugen von HexStrings.

2) ROT ist der niederwertige Kanal, also bei einer 24bit Hex-Zahl steht das ROT rechts, aber als Web-Code wird es links hingeschrieben.

beachte die Ausgaben der drei Kanäle im code unten.

Code: Alles auswählen

Farbe = $CC9933

Red = Red(Farbe)
Green = Green(Farbe)
Blue = Blue(Farbe)
RGB = RGB(Red, Green, Blue)

farb$ = RSet(Hex(RGB), 6, "0" )

Debug farb$

color = Val( "$"+farb$ )

Debug color
Debug Farbe

Debug "-----------------"

Debug "Red = " + Hex(Red)
Debug "Grn = " + Hex(Green)
Debug "Blu = " + Hex(Blue)

@AND

gut beobachtet hab ich nicht gesehen... aber es sind sieben Fs.
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Benutzeravatar
AND51
Beiträge: 5220
Registriert: 01.10.2005 13:15

Beitrag von AND51 »

Kaeru Gaman hat geschrieben:@AND

gut beobachtet hab ich nicht gesehen... aber es sind sieben Fs.
Danke. Äh, ja stimmt. Da habe ich mich wohl verzählt.


@ X360 Andy:
RGB bietet 16,8 Mio. Farben, das sind anders ausgedrückt 2^24 Farben. Daher der Name "24-Bit Farbtiefe". Diese lassen sich mit 6 F's in hexadezimaler Form darstellen.
Dein siebtes F (vielleicht sollten es ja eigentlich doch 8 F's werden) würde aber zu 2^32 Farbkombinationen führen ("32-Bit Farbtiefe"). Die beiden zusätzlichen F's bilden einen neuen Kanal neben Rot, Grün und Blau, nämlich den Transparenz-Kanal. Hier bestimmt man, ob die Farbe undurchsichtig (0) bis transparent (255) sein soll.

Intern mischt die Grafikkarte aus der Farbe und Transparenz dieses Pixels mit der Farbe des Pixels dahinter einen neuen Farbton.
Faktisch bleiben es also 2^24 Farbtöne, bloß kann man mit dem 4. Kanal noch zusätzlich Vorder- und Hintergrundfarben vermischen. Deswegen haben 'moderne' RGBA-Werte (A für Alpha) immer 32-Bit. Da diese 32-Bit Farbtiefe aber faktisch immer nur 24 Bit Farben ergeben, sieht man keinen Unterschied, wenn man in der Systemsteuerung die Anzeige zwischen 24 und 32 Bit Farbtiefe wechselt. 32 Bits sind jedoch schneller, weil ein Long (Standard-Datentyp für Zahlen auf 32-Bit-Systemen) genau 32 Bits groß ist.

Das nur als Zusatzinformationen, falls du nicht weißt, wo du deine zusätzlichen F's einordnen sollst. :)
PB 4.30

Code: Alles auswählen

Macro Happy
 ;-)
EndMacro

Happy End
Benutzeravatar
X360 Andy
Beiträge: 1206
Registriert: 11.05.2008 00:22
Wohnort: Bodensee
Kontaktdaten:

Beitrag von X360 Andy »

Vielen dank für die wunderebare Erklärung wusste nicht wie du das im ersten Post richtig gemeint hast.

Nun hab ichs verstanden (auch den Post von KG) :allright: :allright: :allright:
Antworten