从C#数组列表中排除项目

3

我正在使用ASP.NET 2013,我想绘制图表并为每个点赋予不同的颜色,但需要排除一些颜色,例如黑色、透明等。

目前情况良好,但我希望能够排除某些颜色。

var colours = typeof(System.Drawing.Color)
               .GetProperties()
               .Where(x => x.PropertyType == typeof(System.Drawing.Color))
               .Select(x => x.Name)
               .ToArray();

Random rColor = new Random();

foreach (var item in Chart2.Series[0].Points)
{
   item.Color = System.Drawing.Color.FromName(colours[rColor.Next(0, colours.Length)]); 
}

使用一个 Color[] excludeColors,然后使用 if(!excludeColors.Contains(yourRandomColor)){...} - Tim Schmelter
也许考虑创建自己的调色板枚举来表示互补颜色,这样就不会出现随机且不协调的颜色了。 - Alex K.
1个回答

4

使用Color[] excludeColorsExcept

Color[] excludeColors = { Color.Black, ... };
var allColors = var colours = typeof(System.Drawing.Color)
               .GetProperties()
               .Where(x => x.PropertyType == typeof(System.Drawing.Color))
               .Select(x => System.Drawing.Color.FromName(x.Name));
Color[] usedColors = allColors.Except(excludeColors).ToArray();

foreach (var item in Chart2.Series[0].Points)
{
   Color randomColor = usedColors[rColor.Next(usedColors.Length)];
   item.Color = randomColor; 
}

由于您只需要初始化一次,因此应在构造函数(或可以修改excludeColors的地方)中进行此操作,而不是在此方法中进行。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接