我使用this excellent SO post来弄清楚如何获得不同的阴影和所选颜色的色调,但现在我希望改进算法。中间范围内的颜色(RGB的加起来大约为400到500)产生了类似于下面第2行和第4行所示的出色结果。但是在该范围之外的颜色会产生更像您在第1行和第3行中看到的颜色,浅颜色不会淡出很多。我想我需要调整我的乘数来纠正这个问题,但是我的数学技能并不合格。使用RGB值改进颜色阴影和色调算法
private void getShadesAndTints(Color c)
{
int i; Double m;
int r; int g; int b;
for (i = 1; i < 21; i++)
{
m = i * 0.1;
r = (int)(c.R * m); if (r > 255) r = 255;
g = (int)(c.G * m); if (g > 255) g = 255;
b = (int)(c.B * m); if (b > 255) b = 255;
colorList.Add(Color.FromArgb(r, g, b));
}
}
如果你想尝试一下自己,完整的代码,请访问:http://pastebin.com/QgCseY4k