2008-11-10 15 views

Antwort

19

So würden Sie tun:

string[] colors = Enum.GetNames(typeof(System.Drawing.KnownColor)); 

... ein Array aller collors zu bekommen.

Oder ... Sie könnten Reflexion verwenden, um nur die Farben zu erhalten. KnownColors enthält Elemente wie "Menü", die Farbe der Systemmenüs usw. Dies ist möglicherweise nicht das, was Sie möchten. Also, um nur die Namen der Farben in System.Drawing.Color, könnten Sie Reflexion verwenden:

Type colorType = typeof(System.Drawing.Color); 

PropertyInfo[] propInfoList = colorType.GetProperties(BindingFlags.Static | BindingFlags.DeclaredOnly | BindingFlags.Public); 

foreach (System.Reflection.PropertyInfo c in propInfoList) { 
    Console.WriteLine(c.Name); 
} 

Dies schreibt alle Farben, aber man konnte es leicht zuzuschneiden die Farbnamen zu einer Liste hinzufügen .

Schauen Sie sich dieses Code Project Projekt auf building a color chart.

1

In System.Drawing gibt es eine Enum KnownColor, es gibt die bekannten Systemfarben an.

Liste <>: Liste allColors = new Liste (Enum.GetNames (typeof (KnownColor)));

Array [] Zeichenfolge [] allColors = Enum.GetNames (typeof (KnownColor));

6

Versuchen Sie folgendes:

foreach (KnownColor knownColor in Enum.GetValues(typeof(KnownColor))) 
{ 
    Trace.WriteLine(string.Format("{0}", knownColor)); 
} 
4

Zusätzlich zu dem, was gesagt jons911, wenn Sie nur die „Namen“ Farben wollen und nicht die Systemfarben wie „ActiveBorder“, die Color Klasse hat eine IsSystemColor Eigenschaft, die Sie können Verwenden Sie, um diese herauszufiltern.

1

Here ist eine Online-Seite, die ein handliches Farbfeld jeder Farbe zusammen mit ihrem Namen zeigt.

1

Sie müssen Reflektion verwenden, um die Farben aus der System.Drawing.Color-Struktur abzurufen.

4

Die meisten Antworten hier führen zu einer Sammlung von Farbnamen (Strings) anstelle von System.Drawing.Color-Objekten. Wenn Sie eine Sammlung tatsächlicher Systemfarben benötigen, verwenden Sie Folgendes:

using System.Collections.Generic; 
using System.Drawing; 
using System.Linq; 
... 
static IEnumerable<Color> GetSystemColors() { 
    Type type = typeof(Color); 
    return type.GetProperties().Where(info => info.PropertyType == type).Select(info => (Color)info.GetValue(null, null)); 
} 
Verwandte Themen