我只想用的顏色週期通過採取一年的模量,然而對於許多顏色要使用:
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))
這似乎是一個矛盾的問題:它不知道什麼年份將返回,但每年應該有它自己的可重複的顏色。如果返回的年份碰巧有相似的顏色呢? –
「相似」的顏色並不是真正的問題。鑑於只有如此多的現實年值,以及許多可以代表顏色的有效整數,我認爲有充足的空間進行可靠的變化。 – Ocelot20