从数组列表中排除项目c#
问题描述:
我使用的是ASP.NET 2013,我想绘制图表并给每个点赋予不同的颜色,除了一些例如黑色,透明等。从数组列表中排除项目c#
它工作正常,但有一些颜色我想排除。
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
和Except
:
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
),而不是在这个方法来完成。
使用'Color [] excludeColors',然后使用'if(!excludeColors.Contains(yourRandomColor){...})' –
也许考虑创建自己的调色板enum的免费颜色,这种方式不会有随机丑陋的冲突的颜色。 –