Kontakt
DSVGO
Historie | |
05.05.2001 | Korrektur: Gelb ist eine additive Mischung aus Rot und Grün (Hinweis von Marco Kraft) |
12.04.2001 | Gewichtete Helligkeit |
24.01.2001 | Komplementärfarbe und Helligkeit einer Farbe bestimmen |
25.12.2000 | Erste Version: Farb-Codierung in VB/Windows; Bestimmung der Rot-, Grün- und Blau-Anteile |
VB kennt die Funktion RGB, um eine Mischfarbe (durch Angabe der Rot- Grün- und Blau-Anteile im Bereich von 0 bis 255) zu erstellen. So kann z.B. mit
Farbe = RGB(255, 255, 0)
die Farbe Gelb erzeugt werden (additive Mischung aus Rot und Grün).
Möchte man umgekehrt aus einer Mischfarbe die Grundfarben erhalten, so läßt VB einen im Stich... Es ist also mal wieder Handarbeit angesagt. Die Lösung ist aber gar nicht so schwer; Man muss nur wissen, dass Farbwerte intern als Long dargestellt werden (im Format &HBBGGRR), es genügen nämlich folgende Anweisungen:
Rot = Farbe And vbRed Grün = (Farbe And vbGreen) \ &h100 Blau = (Farbe And vbBlue) \ &h10000
Im Allgmeinen versteht man unter der Komplementärfarbe einer gegebenen Farbe c1 genau diejenige Farbe c2, so dass die Zusammenmischung von c1 und c2 gerade Weiß ergibt. Anders ausgedrückt: Helle Farbanteile werden dunkler, dunkle Farbanteile werden heller. Aufgrund der oben dargelegten Farb-Codierung kann dies durch folgende Formel berechnet werden:
KomplFarbe = Farbe Xor &HFFFFFF
Problem: Es soll eine Hintergrund-Farbe passend zu einer gegebenen Vordergrund-Farbe gesetzt werden (oder umgekehrt), so dass die Schrift gut lesbar ist. Die Komplementärfarbe ist dafür nicht unbedingt gut geeignet, da z.B. die Komplementärfarbe von Grau nämlich gerade Grau ist, d.h. der Kontrast wäre null! Besser ist da eine fixe Farbwahl in Abhängigkeit von der Helligkeit, z.B.:
'Helligkeit der Vordergrundfarbe bestimmen: Helligkeit = (Rot + Grün + Blau) \ 3 'Hintergrundfarbe anpassen: If Helligkeit > 127 Then HintergrundFarbe = vbBlack Else HintergrundFarbe = vbWhite End If
Oben wurde die Helligkeit einer Farbe als Mittelwert der drei Grundfarben bestimmt. Dies ist zwar mathematisch korrekt, aber tatsächlich sieht das menschliche Auge nicht über das ganze Licht-Spektrum gleichmäßig gut. (Zum Beispiel ist Grün viel wichtiger für die Helligkeits-Beurteilung als Blau.)
Möchte man daher diese "menschliche Unzulänglichkeit" berücksichtigen, müssen die Farbanteile entsprechend (prozentual zur typischen Wahrnehmung) gewichtet werden:
Helligkeit = 0.3 * Rot + 0.59 * Grün + 0.11 * Blau
Die drei Grundfarben sowie das Mittelwert-Grau sehen übrigens als gewichteter Helligkeitswert folgendermaßen aus: Rot Grün Blau Grau. Es sind also tatsächlich relevante Unterschiede zu erkennen.
Übrigens: Eine "RGB-Funktion" zur Erzeugung von HTML-Farbwerten stelle ich auf meinen ASP-Seiten vor.
© Jost Schwider, 25.12.2000-05.05.2001 - http://vb-tec.de/rgb.htm