2016-07-28 17 views
3

Ich benutze ASP.NET 2013, ich möchte das Diagramm zeichnen und verschiedene Farbe für jeden Punkt außer einigen geben, z. B. Schwarz, Transparent und so weiter.Artikel aus der Array-Liste ausschließen C#

Es funktioniert gut, aber es gibt einige Farben, die ich gerne ausschließen würde.

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

Verwenden Sie eine 'Color [] excludeColors' und verwenden Sie dann' if (! ExcludeColors.Contains (yourRandomColor) {...}) ' –

+0

Vielleicht in Betracht ziehen, Ihre eigene Palette enum von Komplementärfarben zu erstellen, die Sie nicht haben zufällige hässliche Farben. –

Antwort

4

Verwenden Sie ein Color[] excludeColors und 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; 
} 

Da Sie diese initialisieren nur einmal diese im Konstruktor getan werden sollte (oder wo Sie excludeColors ändern können) und nicht in diesem Verfahren.

Verwandte Themen