wpf - Vytváření SolidColorBrush z hodnoty hex barvy

original title: "wpf - Creating SolidColorBrush from hex color value"


I want to create SolidColorBrush from Hex value such as #ffaacc. How can I do this?

On MSDN, I got :

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

So I wrote (considering my method receives color as #ffaacc):

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

But this gave error as

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

Also 3 errors as: Cannot convert int to byte.

But then how MSDN example works?

Chci vytvořit SolidColorBrush z hexadecimální hodnoty, jako je #ffaacc. Jak to mohu udělat? Na MSDN jsem dostal: SolidColorBrush mySolidColorBrush = new SolidColorBrush (); mySolidColorBrush.Color = Color.Fr ...

Toto je shrnutí po překladu. Pokud potřebujete zobrazit celý překlad, klikněte na ikonu „přeložit“

Všechny odpovědi
  • Translate

    Try this instead:

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

  • Translate

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

    This I think is what you are after, hope it answers your question.

    To get your code to work use Convert.ToByte instead of Convert.ToInt...

    string colour = "#ffaacc";

  • Translate

    I've been using:

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

  • Translate
    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;

  • Translate

    If you don't want to deal with the pain of the conversion every time simply create an extension method.

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

    Then use like this: BackColor = "#FFADD8E6".ToBrush()

  • Translate

    vb.net version

    Me.Background = CType(New BrushConverter().ConvertFrom("#ffaacc"), SolidColorBrush)