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?

Antworten:



61

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

verwenden:

System.Drawing.ColorTranslator.FromHtml("#FFFFFF");

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));

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.


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.


0

Die FromName-Methode hat bei mir funktioniert

System.Drawing.Color.FromName("#FF00FF");
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.