2016-07-28 30 views
3

我使用的是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)]); 
} 
+0

使用'Color [] excludeColors',然後使用'if(!excludeColors.Contains(yourRandomColor){...})' –

+0

也許考慮創建自己的調色板enum的免費顏色,這種方式不會有隨機醜陋的衝突的顏色。 –

回答

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),而不是在這個方法來完成。