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

本文关键字:颜色 任意年 | 更新日期: 2023-09-27 18:03:30

我有一个图表,我需要为每个相关年份显示不同的条形图。在运行查询之前,我不知道将返回和显示哪些年份。我需要每年的酒吧有它自己独特的颜色,是明显区别于其他年份。我还需要能够重现该方法的结果(例如,2011将始终返回一些精确的绿色阴影)。理想情况下,我会有一个简单的方法,看起来像这样:

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

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

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

我只是用一年的模数来使用一个颜色循环,无论你想使用多少种颜色:

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))