如何在C#中以编程方式创建柔和的颜色?

根据所需颜色的数量等间距生成它们。 如果指定的计数为8,则看起来像这样:

List GeneratePastelColors (int count) 

在此处输入图像描述

如果使用HSV而不是RGB,您会发现在这些问题中颜色更容易使用。

“等间距颜色”几乎总是意味着“等间距色调”。 因此,对于[0,360],在色调中,通过平均划分该范围,您可以获得同样的空间。

现在你有一个色调,你只需要找到那个色调的“粉彩”版本。 对我来说,这意味着稍微去饱和颜色。 我会说80%的初学者已经饱和了。

在我的测试中,我使用100%的价值。 然后只需转换为RGB。 这是我一直在玩的东西:

    

不是C#,我知道,但只是试图钉住光线并坐下来。

否则,您可以查看样本颜色,并查看HSV / HSL值中是否存在任何相关性,并尝试从中派生算法。 如果您绘制S / H和V / H,您会看到图中的灰色大幅下降—它似乎是一个exception值。 (从左下角开始排在第三位。)忽略该值,S约为75%,值略低于90%。 使用这些值可能会给出最好的结果。

链接: http : //jsfiddle.net/ZHyAQ/

您还可以查看Rich Newman的HSLColor类。 他有一系列的博客文章, 从这一篇开始。

使用此代码,我能够在色轮周围均匀地生成一系列颜色,但如果要包含灰色阴影,则必须添加其他逻辑。

 private void button1_Click(object sender, EventArgs e) { listView1.Items.Clear(); int step = 240 / 8; for (int i = 0; i < 240; i += step) { HSLColor color = new HSLColor((double)i, 240, 160); listView1.Items.Add(i.ToString()).BackColor = color; } } 

在此处输入图像描述