Vor Jahren, in meiner lange verlorenen Kopie von Charles Petzold Windows 3.0 Programmierung Buch, gab es eine magische COLORREF oder RGB-Wert dokumentiert, die Sie verwenden könnten, um zu überprüfen, ob Sie sollte Text in einer hellen Farbe oder einer dunklen Farbe zeichnen. Z.B. Wenn die Hintergrundfarbe unter diesem Wert lag, dann verwende schwarzen Text, wenn sie höher war, verwende weißen Text. Weiß jemand, was dieser magische Wert ist?Magic COLORREF/RGB-Wert zu bestimmen, wann hell/dunkel Text
Antwort
kann ich nicht über COLORREF sagen, aber ich habe gute Ergebnisse bekam die luminance als Schwelle mit:
Y= 0.3 * R + 0.59 * G + 0.11 * B
mit Farben als Dezimalwert zwischen 0,0 und 1,0 ausgedrückt.
Wenn Y> = 0,5 Ich betrachtete den Hintergrund "Licht" (und dunklen Text verwendet), wenn Y < 0,5 Ich tat das Gegenteil.
Ich erinnere mich, ich auch andere Formeln einschließlich der einfache Mittelwert verwendet:
L = (R+G+B)/3
aber ich wusste nicht, wie das Ergebnis. Es erscheint mir logisch, dass Green mehr zu Leichtigkeit beiträgt als Red und Red mehr als Blue.
Die Berechnung der Luminanz funktioniert einwandfrei. Ich werde diesen magischen COLORREF-Wert eines Tages finden ... :) – Rob
Wie definieren Sie "unten" und "oben" bei zwei RGB-Werten? Verwenden Sie nur Graustufen? – suszterpatt
Es scheint, als ob die Konvertierung in HSL eine bessere Wette ist, und dann können Sie basierend auf der L (oder möglicherweise S) Komponente überprüfen. –
Ich bin sicher, wenn Sie die RGB-Werte selbst betrachten, können Sie die Toleranz berechnen. Es klingt aber sehr interessant! – Layke