C#使颜色变暗直至其可读性的最佳方法

时间:2012-01-29 05:39:28

标签: c# c#-4.0

什么是使颜色变暗直到可读的最佳方法?我有一系列标题都有相关的颜色,但这些颜色中的一些非常轻,并且在其中绘制的任何文字都是不可读的。我一直在乱用HSB,我似乎无法得到一种算法,使颜色变暗而不会让它看起来像银色。

我基本上只是做了这个,但它似乎没有得到我称之为“好”的结果:

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

我想我也想改变饱和度。有没有一种标准的方法呢?

1 个答案:

答案 0 :(得分:1)

我基本上只是将一个随机发生器组合在一起,如果RGB值的总和太低,或任何一个项目太低,它会将组件添加到RGB值。这是一种非常严谨的方式,但似乎可以产生良好的效果。

double threshold = .8;

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