2010-02-16 7 views
5

Anni fa, nella mia copia perduta del libro di programmazione di Windows 3.0 di Charles Petzold, c'era un valore COLORREF o RGB magico che è possibile utilizzare per verificare se si dovrebbe disegnare il testo in un colore chiaro o un colore scuro. Per esempio. se il colore di sfondo era inferiore a questo valore, quindi utilizzare il testo nero, se era più alto, utilizzare il testo bianco. Qualcuno sa/ricorda qual è questo valore magico?Valore COLORREF/RGB magico per determinare quando utilizzare testo chiaro/scuro

+0

Come si definisce "sotto" e "sopra" su due valori RGB? Utilizzi solo la scala di grigi? – suszterpatt

+0

Sembra che la conversione in HSL sia una scommessa migliore, e quindi puoi controllare in base al componente L (o forse S). –

+0

Sono sicuro che se si osservano i valori RGB stessi, sarà possibile calibrare la tolleranza. Sembra molto interessante però! – Layke

risposta

7

non posso raccontare COLORREF ma ho buoni risultati utilizzando il luminance come soglia:

 Y= 0.3 * R + 0.59 * G + 0.11 * B 

con i colori espressa in valore decimale compreso tra 0.0 e 1.0.

Se Y> = 0,5 ho considerato lo sfondo "chiaro" (e utilizzato il testo scuro), se Y < 0,5 ho fatto il contrario.

Mi ricordo che ho usato anche altre formule, tra cui la semplice media:

 L = (R+G+B)/3 

ma non mi piace il risultato. Mi sembra logico che Green contribuisca alla leggerezza più del Rosso e del Rosso più del Blu.

+0

Il calcolo della luminanza funziona perfettamente. Troverò quel valore magico di COLORREF un giorno però ... :) – Rob

Problemi correlati