Создание SolidColorBrush из шестнадцатеричного значения цвета

Я хочу создать SolidColorBrush из шестнадцатеричного значения, такого как #ffaacc. Как я могу это сделать?

На MSDN я получил:

<code>SolidColorBrush mySolidColorBrush = new SolidColorBrush();
mySolidColorBrush.Color = Color.FromArgb(255, 0, 0, 255);
</code>

Поэтому я написал (учитывая, что мой метод получает цвет как#ffaacc):

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

Но это дало ошибку как

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?

 Sascha08 апр. 2012 г., 13:51
возможный дубликатHow to get Color from Hex color code using .NET?
 MrFox18 дек. 2012 г., 09:54
Настолько глупо, что они не допускают формат #FFFFFF по умолчанию.

Ответы на вопрос(5)

Решение Вопроса

Попробуйте это вместо:

(SolidColorBrush)(new BrushConverter().ConvertFrom("#ffaacc"));
 11 мар. 2015 г., 17:24
ТАК нужны теги сарказма.
 10 дек. 2014 г., 20:58
Это такая сложность, которая заставляет меня не любить работать с WPF.
 07 сент. 2015 г., 11:08
Простоты в WPF не найдено, поэтому так сложно создать цвет.
 25 мар. 2014 г., 16:33
Такая простота заставляет меня любить работать с WPF.
 27 февр. 2018 г., 13:12
& quot; Простота в C # & quot; (то есть по сравнению с PHP) это шутка для меня. Вы должны написать блок, чтобы выполнить простое действие с переменной.
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;

Если вы не хотите каждый раз сталкиваться с трудностями преобразования, просто создайте метод расширения.

public static class Extensions
{
    public static SolidColorBrush ToBrush(this string HexColorString)
    {
        return (SolidColorBrush)(new BrushConverter().ConvertFrom(HexColorString));
    }    
}

Тогда используйте как это:BackColor = "#FFADD8E6".ToBrush()

Как получить цвет из шестнадцатеричного кода цвета с помощью .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));

Я использовал:

new SolidColorBrush((Color)ColorConverter.ConvertFromString("#ffaacc"));

Ваш ответ на вопрос