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

Mar*_*ark 6 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());
Run Code Online (Sandbox Code Playgroud)

我想我也想改变饱和度.有这样做的标准方法吗?

Mar*_*ark 1

我基本上只是拼凑了一个随机化器,如果 RGB 值的总和太低,或者任何一项太低,它就会向 RGB 值添加组件。这是一种不严格的方法,但似乎产生了良好的结果。

double threshold = .8;

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