该程序目前正在填写为其选择颜色的图表,一旦图表超出给定的颜色限制,它就会随机选择一种颜色。
是否有一种可行的获取颜色的方式,而不与之前的颜色相同?
代码:
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));
}
答案 0 :(得分:0)
你可以实现类似的东西
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)
{
while (true)
{
Color c = GetRandomColour();
string cs = String.Format("\"rgba({0},{1},{2},0.8)\"", c.R.ToString(), c.G.ToString(), c.B.ToString());
if (!colors.Contains(cs))
{
colors.Add(cs);
break;
}
}
}
return colors;
}
答案 1 :(得分:0)
您可以在List方法之外初始化颜色列表
List<string>colors = null
public List<string> getColors(int columns)
{
colors = new List<string>();
然后你可以通过一个while循环来改变你的随机颜色函数以符合你的目的,看看随机颜色是否已经在给定的列表中。
private Color GetRandomColour()
{
Color coltemp = Color.FromArgb(rand.Next(256), rand.Next(256), rand.Next(256));
while (colors.Contains(coltemp)
{
coltemp = Color.FromArgb(rand.Next(256), rand.Next(256), rand.Next(256));
}
return coltemp;
}