2016-07-28 12 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

あなた自身のパレットの列挙型を、ランダムに醜い衝突色。 –

答えて

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を変更することができます)この方法ではなく1回だけ初期化する必要がありますので。

関連する問題