2012-01-29 5 views
6

Qual è il modo migliore per scurire un colore finché non è leggibile? Ho una serie di titoli che hanno un colore associato, ma alcuni di questi colori sono molto leggeri e qualsiasi testo disegnato in essi è illeggibile. Ho lavorato con HSB e non riesco a trovare un algoritmo che scurisca il colore senza sembrare un po 'argentato.C# Il modo migliore per scurire un colore fino alla sua leggibilità

Sono fondamentalmente solo stato doign questo, ma non sembra per ottenere quello che chiamerei risultati "buoni":

Color c = 
    FromHSB(
    orig.A, 
    orig.GetHue(), 
    orig.GetSaturation(), 
    orig.GetBrightness() > .9 ? 
     orig.GetBrightness() - MyClass.Random(.5, .10) 
     : orig.GetBrightness()); 

Io credo di voler modificare la saturazione di troppo. C'è un modo standard per farlo?

+0

Si potrebbe desiderare di provare anche http://ux.stackexchange.com/ – Ani

+3

Considerando che l'effetto si sta dopo dipende dalla vostra personale opinione e la percezione del colore, non si potrebbe trovare una risposta qui. Che ne dici di usare un'applicazione di pittura per regolare l'HSL di un colore chiaro e vedere cosa pensi sia bello. – ColinE

risposta

1

Fondamentalmente ho appena combinato un randomizzatore che aggiunge componenti ai valori RGB se la somma dei valori RGB è troppo bassa, o qualsiasi elemento è troppo basso. È un modo non rigoroso per farlo, ma sembra produrre buoni risultati.

double threshold = .8; 

for (int j = 0; j < 3; j++) 
{ 
    if (color.GetBrightness() > threshold) 
    { 
    color[j] -= new MyRandom(0, 20/255); 
    }     
} 
+1

Non è 20/255 uguale a zero? –

+0

Sì, ma il suo ombreggiato codice pseudo ... – Mark

Problemi correlati