Chcę utworzyć SolidColorBrush z wartości szesnastkowej, takiej jak #ffaacc. W jaki sposób mogę to zrobić?
Na MSDN otrzymałem:
SolidColorBrush mySolidColorBrush = new SolidColorBrush();
mySolidColorBrush.Color = Color.FromArgb(255, 0, 0, 255);
Więc napisałem (biorąc pod uwagę, że moja metoda otrzymuje kolor jako #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 jako
The best overloaded method match for 'System.Windows.Media.Color.FromRgb(byte, byte, byte)' has some invalid arguments
Również 3 błędy, takie jak: Cannot convert int to byte.
Ale jak działa przykład MSDN?
Odpowiedzi:
Spróbuj tego zamiast tego:
źródło
Jak uzyskać kolor z szesnastkowego kodu koloru za pomocą .NET?
Myślę, że właśnie tego szukasz, mam nadzieję, że to odpowiada na twoje pytanie.
Aby kod działał, użyj Convert.ToByte zamiast Convert.ToInt ...
źródło
Używałem:
źródło
źródło
Jeśli nie chcesz za każdym razem radzić sobie z bólem konwersji, po prostu utwórz metodę rozszerzenia.
Następnie użyj w ten sposób:
BackColor = "#FFADD8E6".ToBrush()
Alternatywnie, jeśli możesz podać metodę, aby zrobić to samo.
źródło
Wersja vb.net
źródło