什么是使颜色变暗直到可读的最佳方法?我有一系列标题都有相关的颜色,但这些颜色中的一些非常轻,并且其中绘制的任何文字都是不可读的.我一直在乱用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)
我想我也想改变饱和度.有这样做的标准方法吗?
我基本上只是拼凑了一个随机化器,如果 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)