2012-08-28 8 views

Odpowiedz

185
string hex = "#FFFFFF"; 
Color _color = System.Drawing.ColorTranslator.FromHtml(hex); 

Uwaga: hash jest ważna!

+0

Dzięki. Działa – user1531040

+0

Hash jest naprawdę ważny, inaczej kolor nie będzie dokładny. – teapeng

+1

Co w UWP, gdzie nie ma przestrzeni nazw System.Drawing? –

4

Usuń '#' i zrobić

Color c = Color.FromArgb(int.Parse("#FFFFFF".Replace("#",""), 
         System.Globalization.NumberStyles.AllowHexSpecifier)); 
+0

Dostępne są opcje, które nie wymagają konwersji na wartość numeryczną, jest to niepotrzebny krok. OP stwierdza, że ​​jest ciągiem znaków – freefaller

+2

Pozostałe rozwiązania również konwertują ciąg znaków na wartości liczbowe, po prostu robią to wewnętrznie. Jeśli jest to kwestia optymalizacji, wymagane byłoby sprawdzenie wydajności, aby zobaczyć, jak 'Color.FromArgb()' w/'int.Parse()' porównuje do 'ColorConvertor.ConvertFromString()' i 'ColorTranslator.FromHtml()' . – jwatts1980

+0

Czy to nie będzie mieć wartość alfa 0? – Nyerguds

21

Można zrobić

var color = System.Drawing.ColorTranslator.FromHtml("#FFFFFF"); 

albo to (trzeba będzie przestrzeń nazw System.Windows.Media)

var color = (Color)ColorConverter.ConvertFromString("#FFFFFF"); 
+0

Kiedy konwertuję biały, nie dostaję dokładnie białego koloru. –

Powiązane problemy