什么是使颜色变暗直到可读的最佳方法?我有一系列标题都有相关的颜色,但这些颜色中的一些非常轻,并且在其中绘制的任何文字都是不可读的。我一直在乱用HSB,我似乎无法得到一种算法,使颜色变暗而不会让它看起来像银色。
我基本上只是做了这个,但它似乎没有得到我称之为“好”的结果:
Color c =
FromHSB(
orig.A,
orig.GetHue(),
orig.GetSaturation(),
orig.GetBrightness() > .9 ?
orig.GetBrightness() - MyClass.Random(.5, .10)
: orig.GetBrightness());
我想我也想改变饱和度。有没有一种标准的方法呢?
答案 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);
}
}