C # Лучший способ затемнить цвет до его читабельности - PullRequest
6 голосов
/ 29 января 2012

Какой лучший способ затемнить цвет, пока он не станет читабельным? У меня есть серия заголовков, которые имеют связанный цвет, но некоторые из этих цветов очень светлые, и любой нарисованный в них текст не читается. Я бездельничал с HSB, и, похоже, я не могу описать алгоритм, который затемняет цвет, не делая его серебристым.

Я в основном только что это придумал, но, похоже, он не дает того, что я бы назвал "хорошими" результатами:

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

Думаю, я тоже хочу изменить насыщенность. Есть ли стандартный способ сделать это?

1 Ответ

1 голос
/ 30 января 2012

Я просто взломал рандомизатор, который добавляет компоненты к значениям RGB, если сумма значений RGB слишком мала или какой-либо один элемент слишком мал.Это не сложный способ сделать это, но, похоже, он дает хорошие результаты.

double threshold = .8;

for (int j = 0; j < 3; j++)
{
  if (color.GetBrightness() > threshold)
  {
    color[j] -= new MyRandom(0, 20/255);
  }                   
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...