2012-01-29 21 views
6

¿Cuál es la mejor manera de oscurecer un color hasta que sea legible? Tengo una serie de títulos que tienen un color asociado, pero algunos de estos colores son muy claros y cualquier texto dibujado en ellos es ilegible. He estado jugando con HSB y parece que no puedo bajar un algoritmo que oscurece el color sin que se vea plateado.C# La mejor manera de oscurecer un color hasta que sea legible

que he estado, básicamente, sólo doign esto, pero no parece para conseguir lo que yo llamaría "buenos" resultados:

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

Creo que quiero para alterar la saturación también. ¿Hay una forma estándar de hacer esto?

+0

Es posible que desee probar también http://ux.stackexchange.com/ – Ani

+3

Teniendo en cuenta que el efecto deseado depende de su propia opinión personal y la percepción del color, usted no puede encontrar una respuesta aquí. ¿Qué tal si usas una aplicación de pintura para ajustar el HSL de un color claro y ver qué crees que se ve bien? – ColinE

Respuesta

1

Básicamente, he pirateado un aleatorizador que agrega componentes a los valores RGB si la suma de los valores RGB es demasiado baja, o cualquier elemento es demasiado bajo. Es una forma no rigurosa de hacerlo, pero parece producir buenos resultados.

double threshold = .8; 

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

¿No es 20/255 igual a cero? –

+0

Sí, pero su sombreado pseudo código ... – Mark

Cuestiones relacionadas