Wie kann ich eine Farbe aus einem hexadezimalen Farbcode erhalten (z. B. #FFDFD991
)?
Ich lese eine Datei und erhalte einen hexadezimalen Farbcode. Ich muss die entsprechende System.Windows.Media.Color
Instanz für den hexadezimalen Farbcode erstellen. Gibt es eine eingebaute Methode im Framework, um dies zu tun?
#FF0000
ist ein HTML-Farbcode (oder hexadezimaler Farbcode), kein Hashcode. Bitte lernen Sie den Unterschied.Antworten:
Ich gehe davon aus, dass dies ein ARGB-Code ist ... Beziehen Sie sich auf
System.Drawing.Color
oderSystem.Windows.Media.Color
? Letzteres wird beispielsweise in WPF verwendet. Ich habe noch niemanden gesehen, der es erwähnt hat, also nur für den Fall, dass Sie danach suchen:quelle
Color.FromArgb
In diesem Fall ist es wahrscheinlich einfacher, die Methode zu verwenden . Wenn Sie Gleitkomma-Alpha verwenden, müssen Sie mit 255 multiplizieren.Angenommen, Sie meinen die RGB-Codes vom HTML-Typ (Hex-Codes genannt, wie z. B. # FFCC66), verwenden Sie die ColorTranslator- Klasse:
Wenn Sie jedoch einen ARGB-Hex-Code verwenden, können Sie die ColorConverter- Klasse aus dem System.Windows.Media-Namespace verwenden:
quelle
Wenn Sie den ColorTranslator nicht verwenden möchten, können Sie dies ganz einfach tun:
Der Farbcode ist nur die hexadezimale Darstellung des ARGB-Werts.
BEARBEITEN
Wenn Sie 4 Werte anstelle einer einzelnen Ganzzahl verwenden müssen, können Sie dies verwenden (mehrere Kommentare kombinieren):
Hinweis 1 : NumberStyles befindet sich in System.Globalization.
Hinweis 2 : Bitte geben Sie Ihre eigene Fehlerprüfung an (der Farbcode sollte ein Hexadezimalwert von 6 oder 8 Zeichen sein).
quelle
colorcode = colorcode.Replace("#", "")
einfachem Gebrauchint a = byte.parse(colorcode.Substring(0,2), NumberStyles.HexNumber);
und so weiter für r, g und b. Vergessen Sie nicht, den ersten Parameter von Teilstring - den Index - durch 2 für r, 4 für g und 6 für b zu ersetzen.FromArgb
nimmt 1 Parameter inSystem.Drawing.Color
und 4 Parameter inSystem.Windows.Media.Color
Es gibt auch diese nette kleine Erweiterungsmethode:
In Benutzung:
quelle
Color
richtig konvertiert . Ich habe den Code von @too verwendet und das hat ihn behoben.& 0xFF
jedes Mal den endgültigen heruntergeschalteten Wert verwenden, anstatt all diese unterschiedlichen Werte zu benötigen&
.Die drei folgenden Varianten ergeben genau die gleiche Farbe. Der letzte hat den Vorteil, dass er in der Visual Studio 2010-IDE (möglicherweise ist es ReSharper, der dies tut) mit der richtigen Farbe hervorgehoben wird.
quelle
System.Windows.Media.Color
.quelle
Ich musste einen HEX-Farbcode in einen System.Drawing.Color konvertieren, insbesondere einen Farbton von Alice Blue als Hintergrund in einem WPF-Formular, und stellte fest, dass es länger dauerte als erwartet, um die Antwort zu finden:
- -
quelle
Sie können den folgenden Code verwenden:
quelle
Wenn Sie dies mit einer Windows Store-App tun möchten, folgen Sie den Antworten von @Hans Kesting und @Jink:
quelle
Dieser Beitrag ist zu einem Muss für alle geworden, die versuchen, von einem Hex-Farbcode in eine Systemfarbe zu konvertieren. Daher dachte ich, ich würde eine umfassende Lösung hinzufügen, die sowohl 6-stellige (RGB) als auch 8-stellige (ARGB) Hex-Werte behandelt.
Laut Microsoft beim Konvertieren von einem RGB- in einen ARGB-Wert standardmäßig
Dies bedeutet, dass durch Hinzufügen von FF zu einem 6-stelligen (RGB) Hex-Farbcode ein 8-stelliger ARGB-Hex-Farbcode wird. Daher kann eine einfache Methode erstellt werden, die sowohl ARGB- als auch RGB-Hex-Zeichen verarbeitet und in die entsprechende Farbstruktur konvertiert.
Dies wurde von Hans Kestings Antwort inspiriert.
quelle
Sie können sehen, dass Silverlight / WPF Ellipsen mit hexadezimaler Farbe für die Verwendung eines Hex-Werts festlegt :
quelle
WPF:
quelle
Color [Indigo]
Verwenden
quelle
int
?Wenn Sie HashCode wie in meinen, können Sie leider
.GetHashCode()
nicht zurück. Hash-Funktionen sind nicht bidirektional, Sie können nur vorwärts und nicht rückwärts gehen.Befolgen Sie den Vorschlag von Oded, wenn Sie die Farbe basierend auf dem hexadezimalen Wert der Farbe erhalten möchten.
quelle
Ich habe ColorDialog in meinem Projekt verwendet. ColorDialog gibt manchmal "Red", "Fhushia" und manchmal "fff000" zurück. Ich habe dieses Problem so gelöst, vielleicht jemandem helfen.
InputColor ist der Rückgabewert von ColorDialog.
Vielen Dank an alle für die Beantwortung dieser Frage. Es ist eine große Hilfe für mich.
quelle