2012-04-08 10 views
90

Chcę utworzyć SolidColorBrush od wartości Hex takich jak #ffaacc. Jak mogę to zrobić?Tworzenie SolidColorBrush od wartości koloru hex

na MSDN, mam:

SolidColorBrush mySolidColorBrush = new SolidColorBrush(); 
mySolidColorBrush.Color = Color.FromArgb(255, 0, 0, 255); 

Więc napisałem (biorąc pod uwagę moja metoda odbiera kolor jak #ffaacc):

Color.FromRgb(
    Convert.ToInt32(color.Substring(1, 2), 16), 
    Convert.ToInt32(color.Substring(3, 2), 16), 
    Convert.ToInt32(color.Substring(5, 2), 16)); 

Ale to dało błąd jak

The best overloaded method match for 'System.Windows.Media.Color.FromRgb(byte, byte, byte)' has some invalid arguments

także 3 błędy jak: Cannot convert int to byte.

Ale potem jak przykład MSDN działa?

+1

możliwe duplikat [Jak uzyskać kolor z Hex kod koloru przy użyciu .NET?] (Http://stackoverflow.com/questions/2109756/how-to-get-color-from-hex-color-code-using-net) – Sascha

+5

tak głupi, że nie pozwalają one domyślny format #FFFFFF. – MrFox

Odpowiedz

236

Spróbuj to zamiast:

(SolidColorBrush)(new BrushConverter().ConvertFrom("#ffaacc")); 
+48

Ten rodzaj prostoty sprawia, że ​​uwielbiam pracować z WPF. –

+52

Ten rodzaj złożoności sprawia, że ​​nie lubię pracować z WPF. – lfalin

+39

SO potrzebuje sarkazmów. –

15

How to get Color from Hexadecimal color code using .NET?

To moim zdaniem jest to, czego po, mam nadzieję, że odpowiedzi na swoje pytanie.

Aby otrzymać kod do pracy użytku Convert.ToByte zamiast Convert.ToInt ...

string colour = "#ffaacc"; 

Color.FromRgb(
Convert.ToByte(colour.Substring(1,2),16), 
Convert.ToByte(colour.Substring(3,2),16), 
Convert.ToByte(colour.Substring(5,2),16)); 
9
using System.Windows.Media; 

byte R = Convert.ToByte(color.Substring(1, 2), 16); 
byte G = Convert.ToByte(color.Substring(3, 2), 16); 
byte B = Convert.ToByte(color.Substring(5, 2), 16); 
SolidColorBrush scb = new SolidColorBrush(Color.FromRgb(R, G, B)); 
//applying the brush to the background of the existing Button btn: 
btn.Background = scb; 
9

Używam:

new SolidColorBrush((Color)ColorConverter.ConvertFromString("#ffaacc")); 
Powiązane problemy