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

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


Translate

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):

Color.FromRgb(
  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";
    
    Color.FromRgb(
    Convert.ToByte(colour.Substring(1,2),16),
    Convert.ToByte(colour.Substring(3,2),16),
    Convert.ToByte(colour.Substring(5,2),16));
    

  • 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)