-1
該程序目前正在用爲其選擇的顏色填充圖表,一旦圖表超出給定顏色的限制,它會隨機選取一種顏色。如何隨機獲取不同於以前顏色陰影的顏色?
有沒有一種可行的方法來獲取顏色,而不會像以前那樣獲得顏色?
代碼:
public List<string> getColors(int columns)
{
List<string> colors = new List<string>();
colors.Add("\"rgba(77,77,77,0.8)\"");
colors.Add("\"rgba(241,88,84,0.8)\"");
colors.Add("\"rgba(93,165,218,0.8)\"");
colors.Add("\"rgba(96,189,104,0.8)\"");
colors.Add("\"rgba(222,207,63,0.8)\"");
colors.Add("\"rgba(178,118,178,0.8)\"");
colors.Add("\"rgba(187,253,241,0.8)\"");
colors.Add("\"rgba(178,145,47,0.8)\"");
if (columns > colors.Count)
{
Color c = GetRandomColour();
colors.Add(String.Format("\"rgba({0},{1},{2},0.8)\"",
c.R.ToString(), c.G.ToString(), c.B.ToString()));
}
return colors;
}
private static readonly Random rand = new Random();
private Color GetRandomColour()
{
return Color.FromArgb(rand.Next(256), rand.Next(256), rand.Next(256));
}
相同的陰影對你意味着什麼? (100,100,100)與(100,100,101)不同? – Enigmativity
如果您想要生成類似的顏色,我會建議使用HSV古色,因爲您可以控制特定的變量,ang通過移動(色調只是一點點)生成相似的陰影,將飽和度和黑暗度移動更多 – Ernis
填充一個具有合適顏色選擇的數組(不僅僅是您擁有的八個顏色,確保每種顏色與其他顏色都不相同),將該數組進行洗牌,然後從該數組中選擇它們。請參閱標記的重複數據以混洗數組。如果您只是嘗試直接挑選顏色並將其與您已選擇的顏色進行比較以確保沒有重複或密集陰影,則會浪費大量CPU時間選擇顏色。 –