我想根据彩虹的颜色(红色,黄色,绿色,蓝色...)对颜色进行枚举。

我基本上可以看到两种方法:

  • 创建一个包含一些重要引用颜色的查找表,并在这些颜色之间进行插值。我一点都不喜欢这个主意。
  • 应用或多或少的一些数学运算。可能更少,但我不太清楚它是如何工作的。有任何想法吗?

  • (哦,虽然我进行了一些SO研究,但没有发现很好的结果。如果这个问题已经发布,请直接指向该位置,然后将其删除。)

    编辑:我更希望使它独立于所使用的技术来显示渐变。例如,像GetRainbowColor(float f)之类的东西,f在0(红色)到1(紫罗兰色)之间变化,效果很好。

    最佳答案

    这比您想象的要容易。

    首先,您需要将hsv或hsl转换为rgb的功能。 Here is C# code to do that conversion

    然后,您只需迭代色调h的所有可能值,同时保持saturation和发光度l不变。

    如果您希望彩虹的100种颜色均匀分布:

    for(double i = 0; i < 1; i+=0.01)
    {
        ColorRGB c = HSL2RGB(i, 0.5, 0.5);
        //do something with the color
    }
    

    通过将所有这些颜色添加到GetRainbowColor中并返回适当的索引颜色,您还可以通过这种方式轻松创建所需的函数List<ColorRGB>

    关于c# - 如何在C#中获得彩虹色渐变?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2288498/

    10-10 11:49