2010-02-16 12 views
5

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

+0

Jak zdefiniować "poniżej" i "powyżej" dla dwóch wartości RGB? Czy używasz tylko skali szarości? – suszterpatt

+0

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). –

+0

Jestem pewien, że jeśli spojrzysz na same wartości RGB, będziesz w stanie wyliczyć tolerancję. Brzmi to jednak bardzo interesująco! – Layke

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