Ответ 1
Попробуйте это вместо:
(SolidColorBrush)(new BrushConverter().ConvertFrom("#ffaacc"));
Я хочу создать SolidColorBrush из значения Hex, например #ffaacc. Как я могу это сделать?
В MSDN я получил:
SolidColorBrush mySolidColorBrush = new SolidColorBrush();
mySolidColorBrush.Color = Color.FromArgb(255, 0, 0, 255);
Итак, я написал (учитывая, что мой метод получает цвет как #ffaacc
):
Color.FromRgb(
Convert.ToInt32(color.Substring(1, 2), 16),
Convert.ToInt32(color.Substring(3, 2), 16),
Convert.ToInt32(color.Substring(5, 2), 16));
Но это дало ошибку как
The best overloaded method match for 'System.Windows.Media.Color.FromRgb(byte, byte, byte)' has some invalid arguments
Также 3 ошибки: Cannot convert int to byte.
Но как работает MSDN?
Попробуйте это вместо:
(SolidColorBrush)(new BrushConverter().ConvertFrom("#ffaacc"));
Как получить цвет из шестнадцатеричного цветового кода с помощью .NET?
Я думаю, это то, что вам нужно, надеюсь, что он ответит на ваш вопрос.
Чтобы заставить ваш код работать, используйте Convert.ToByte вместо 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));
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;
Я использовал:
new SolidColorBrush((Color)ColorConverter.ConvertFromString("#ffaacc"));