每次创建相同颜色对应数组的算法?

Kyl*_*ney 3 c# algorithm colors

对于我的程序,我试图创建一个函数,它将生成一个颜色数组(每次应该是相同的,所以没有随机性),其中每种颜色与其他颜色有很大不同.

你为什么要问?好吧,因为用户可以向用户控件添加自定义项目,并且通过添加每个项目,项目应该与特定颜色相关联.

显然这会很糟糕:

Red
Dark Red
Light Red
Pink
Run Code Online (Sandbox Code Playgroud)

因为在视觉上所有这些在色彩和颜色上非常相似,并且用户将无法区分它们.理想情况下,函数会产生如下所示:

Red
Dark Green
Light Cyan
Orange
Run Code Online (Sandbox Code Playgroud)

在这种情况下,每种颜色与其他颜色大不相同,并且用户可以容易地在视觉上区分它们.

但是,我在提出一个执行此操作的算法时遇到了一些麻烦.我知道我想使用Color.FromArgb,但我不确定如何构造循环,其中每个项目与其他项目有很大不同,但每次运行该函数时都是相同的.模数运算符可能会有所帮助.我一直在使用不同的方法,但每个方法总是有一个颜色太过类似于数组中的另一种颜色.我想用循环来做这件事,但这似乎暗示了一种模式以及所有颜色之间的色调,色调或亮度的相似性.

我想我可以硬编码大量的值,但我真的不想...... = X.

好吧,如果您有任何想法,请告诉我!谢谢!!

Jef*_*ata 5

使用Rich Newman的HSLColor类,您可以使用如下代码生成色轮周围的均匀步骤.有关更多详细信息,请参阅第1部分开头的帖子.

private void button1_Click(object sender, EventArgs e)
{
    listView1.Items.Clear();

    int step = 240 / comboBox1.SelectedIndex;

    for (int i = 0; i < 240; i += step)
    {
        HSLColor color = new HSLColor((double)i, 240, 120);
        listView1.Items.Add(i.ToString()).BackColor = color;
    }               
}
Run Code Online (Sandbox Code Playgroud)

这将产生如下所示的颜色:

在此输入图像描述

在此输入图像描述