Wie erstelle ich eine System.Drawing.Color aus ihrer hexadezimalen RGB-Zeichenfolge?

83

Ich möchte einen System.Drawing.Coloraus einem Wert wie #FF00FFoder erstellen, FF00FFohne dafür Code schreiben zu müssen. Gibt es dafür einen in .NET integrierten Parser?

Jader Dias
quelle

Antworten:

165
ColorTranslator.FromHtml("#FF00FF");
João Angelo
quelle
61

Sie können die statische System.Drawing.ColorTranslator-Methode FromHtml verwenden.

verwenden:

System.Drawing.ColorTranslator.FromHtml("#FFFFFF");
Klopfen
quelle
18

Es ist ziemlich einfach, wenn Sie die Konvertierungsklasse verwenden . Die ToInt32Funktion hat eine Überladung mit einem zweiten Parameter, der die Basis darstellt, in der sich die Zeichenfolge befindet.

using System.Drawing

Color yourColor = Color.FromARGB(Convert.ToInt32("FF00FF", 16));
Bobby
quelle
9

Verwenden Sie die ColorConverter- Klasse:

var converter = System.ComponentModel.TypeDescriptor.GetConverter( typeof( Color ) );
color = converter.ConvertFromString( "#FF00FF" );

Dies kann auch aus den benannten Standardfarben konvertiert werden, z. B. ConvertFromString ("Blau")

Sehen Sie hier für eine Diskussion über die Standard - .NET - Typ - Umwandlungsmechanismen.

Phil Devaney
quelle
1

Wenn die Farbe, die Sie verwenden möchten, eine Konstante ist, verwenden Sie in C # System.Drawing.Color.FromArgb (0xFF00FF). Dies ist etwas schneller als System.Drawing.Color.FromNameoder System.Drawing.Color.FromHtml, da das Parsen von einer Zeichenfolge in eine Ganzzahl eher zur Kompilierungszeit als zur Laufzeit erfolgt.

Michael Rodby
quelle
0

Die FromName-Methode hat bei mir funktioniert

System.Drawing.Color.FromName("#FF00FF");
bicbmx
quelle