从任意年份获得独特的颜色?

时间:2011-07-26 21:48:49

标签: c# .net colors charts color-scheme

我有一个图表,我需要在每个相关年份显示不同的栏。在运行查询之前,我不知道将返回和显示的年份。我需要每年都有它自己独特的颜色,与其他年份明显不同。我还需要能够重现该方法的结果(例如,2011年总会返回一些确切的绿色阴影)。理想情况下,我会有一个简单的方法,如下所示:

public static Color GetColorFromYear(int year)
{
    // Some magic.
}

我想有可能很简单的方法将整数转换为颜色值,但我希望有人以一种产生漂亮配色方案和可区分颜色的方式解决了这个问题。提前谢谢!

1 个答案:

答案 0 :(得分:1)

我想通过获取年份的模数来使用一个颜色循环,无论你想要使用多少颜色:

public static Color GetColorFromYear(int year)
{
    var colors = new Color[] { Color.Red, Color.Yellow, Color.Green, ... };
    return colors[year % colors.Length];
}

如果要生成彩虹色,可以使用带Color.FromArgb的循环序列生成渐变色。通过更改for循环参数以及红色,绿色和蓝色的各种组件,可以将其调整为不同级别的渐变或不同颜色方案。

var colors = new List<Color>();

// red to green
for (int i = 10; i <= 250; i += 30)
    colors.Add(Color.FromArgb(255 - i, i, 0))

// green to blue
for (int i = 10; i <= 250; i += 30)
    colors.Add(Color.FromArgb(0, 255 - i, i))

// blue to red
for (int i = 10; i <= 250; i += 30)
    colors.Add(Color.FromArgb(i, 0, 255 - i))