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

本文关键字:最佳 方法 颜色 | 更新日期: 2023-09-27 18:21:39

使颜色变暗直到可读的最佳方法是什么?我有一系列的标题都有相关的颜色,但其中一些颜色很浅,其中绘制的任何文本都无法阅读。我一直在摆弄HSB,我似乎无法找到一种使颜色变暗而不使其看起来像银色的算法。

我基本上只是在做这个,但它似乎没有得到我所说的"好"结果:

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

我想我也想改变饱和度。有标准的方法吗?

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

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

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