Wiele lat temu, w mojej utraconej kopii książki programowej systemu Windows 3.0 autorstwa Charlesa Petzolda, została udokumentowana magiczna wartość COLORREF lub RGB, której można użyć do sprawdzenia, czy powinien narysować tekst w jasnym kolorze lub ciemnym kolorze. Na przykład. jeśli kolor tła był poniżej tej wartości, użyj czarnego tekstu, jeśli był wyższy, użyj białego tekstu. Czy ktokolwiek wie/pamięta, jaka jest ta magiczna wartość?Wartość Magic COLORREF/RGB określająca, kiedy należy używać jasnego/ciemnego tekstu
5
A
Odpowiedz
7
nie mogę powiedzieć o COLORREF ale mam dobre wyniki przy użyciu luminance jako progu:
Y= 0.3 * R + 0.59 * G + 0.11 * B
z kolorami wyrażony jako wartość dziesiętną między 0,0 a 1,0.
Jeśli Y> = 0,5, uznałem tło "światło" (i użyłem ciemnego tekstu), jeśli Y < 0,5 zrobiłem coś przeciwnego.
Pamiętam kiedyś również inne wzory w tym prostym myśli:
L = (R+G+B)/3
ale nie podoba mi się efekt. Wydaje mi się logiczne, że zielony przyczynia się do lekkości bardziej niż czerwony i czerwony niż niebieski.
+0
Obliczanie luminancji działa idealnie. Znajdę magiczną wartość COLORREF pewnego dnia chociaż ... :) – Rob
Jak zdefiniować "poniżej" i "powyżej" dla dwóch wartości RGB? Czy używasz tylko skali szarości? – suszterpatt
Wygląda na to, że konwersja do HSL może być lepszym rozwiązaniem, a następnie możesz sprawdzić na podstawie komponentu L (lub prawdopodobnie S). –
Jestem pewien, że jeśli spojrzysz na same wartości RGB, będziesz w stanie wyliczyć tolerancję. Brzmi to jednak bardzo interesująco! – Layke