Jak stworzyć System.Drawing.Color z jego szesnastkowego ciągu RGB?

84

Chcę utworzyć System.Drawing.Colorz wartości takiej jak #FF00FFlub FF00FFbez konieczności pisania kodu. Czy jest do tego wbudowany parser .NET?

Jader Dias
źródło

Odpowiedzi:

166
ColorTranslator.FromHtml("#FF00FF");
João Angelo
źródło
62

Możesz użyć metody statycznej System.Drawing.ColorTranslator FromHtml.

posługiwać się:

System.Drawing.ColorTranslator.FromHtml("#FFFFFF");
Poklepać
źródło
18

Jest to raczej łatwe, gdy używasz Convert-Class . ToInt32Funkcja ma przeciążenia drugiego parametru, który stanowi podstawę łańcuch jest przypisany.

using System.Drawing

Color yourColor = Color.FromARGB(Convert.ToInt32("FF00FF", 16));
Konstabl
źródło
9

Użyj klasy ColorConverter :

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

Może to również konwertować ze standardowych nazwanych kolorów, np. ConvertFromString („Blue”)

Zobacz tutaj omówienie standardowych mechanizmów konwersji typu .NET.

Phil Devaney
źródło
1

Jeśli kolor, którego chcesz użyć, jest stałą, w C # użyj System.Drawing.Color.FromArgb (0xFF00FF). Jest to nieco szybsze niż System.Drawing.Color.FromNamelub System.Drawing.Color.FromHtml, ponieważ przetwarzanie z ciągu znaków na liczbę całkowitą odbywa się w czasie kompilacji, a nie w czasie wykonywania.

Michael Rodby
źródło
0

Metoda FromName zadziałała dla mnie

System.Drawing.Color.FromName("#FF00FF");
bicbmx
źródło