Seite 1 von 1

RGB Verständnis Problem

Verfasst: 24.06.2009 22:17
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.

Verfasst: 24.06.2009 22:20
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)

Verfasst: 24.06.2009 22:23
von X360 Andy
Ahhhh danke....vergessen das ganze wieder zu verhexen :D

Verfasst: 24.06.2009 22:24
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.

Verfasst: 24.06.2009 22:30
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.

Verfasst: 24.06.2009 22:58
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. :)

Verfasst: 24.06.2009 23:08
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: