2013-04-18 2 views
1

Предположим, что я знаю обратную сторону, и я хочу изменить forecolor соответственно, чтобы сделать текст отличным от фона. Например, если текущий цвет текста (forecolor) равен RED, для некоторой смены пользователя обратная цветность также становится красной или близкой к RED (что сделает текст неразборчивым), в таком случае я хочу изменить forecolor, используя некоторые цвета смешивают формулу, чтобы сделать ее отличной от задней и поддерживающей разборчивость.Какие цвета смешиваются, чтобы сделать forecolor отличным от backcolor?

Надеюсь, вы сможете помочь, спасибо.

ответ

2

На основе информации о this blog entry, я мог бы придумать следующий код # C, который возвращает Color.Black или Color.White для лучшего контраста с данным (фон) цвет:

public Color GetContrastingColor(Color backColor) 
{ 
    int r = (int)backColor.R; 
    int g = (int)backColor.G; 
    int b = (int)backColor.B; 

    int yiqSpace = ((r * 299) + (g * 587) + (b * 114))/1000; 

    if (yiqSpace > 131) 
    { 
     return Color.Black; 
    } 
    else 
    { 
     return Color.White; 
    } 
} 

Метод использует YIQ чтобы определить, считается ли цвет светлым или темным, и возвращает возвратный цвет.

+0

Черный или белый настолько уродлив для меня, я редко использую черный или белый для моих контрольных текстов. Извините –

+0

Вы можете возвращать разные цвета или думать о своем собственном методе. Я просто показываю вам способ добиться этого. –

+0

Ваш ответ просто позволяет мне узнать о YIQ, так как я понимаю, это может помочь мне выбрать только 1 из 2 предопределенных цветов, ну это стоит попробовать, спасибо. –