65.9K
CodeProject is changing. Read more.
Home

Color Code to SolidColor Conversion

starIconstarIconstarIconstarIconstarIcon

5.00/5 (2 votes)

Jan 10, 2012

CPOL
viewsIcon

6867

I think there might be a couple of typos in the original code. This works, though...public SolidColorBrush GetColor(string ColorCode){ return (SolidColorBrush)XamlReader.Load( "<SolidColorBrush xmlns=\"http://schemas." + "microsoft.com/winfx/2006/xaml/presentation\"...

I think there might be a couple of typos in the original code. This works, though...
public SolidColorBrush GetColor(string ColorCode)
{
    return (SolidColorBrush)XamlReader.Load(
        "<SolidColorBrush xmlns=\"http://schemas." +
        "microsoft.com/winfx/2006/xaml/presentation\" Color=\"" + 
        ColorCode + "\" />");
}
Alternatively you could do something like this rather than use the XamlReader...
public static SolidColorBrush GetColor(string s)
{
    //this method assumes "#00000000" or "00000000" format and DOES NOT VALIDATE - add anti-splode code here!
    int hashOffset = s.Substring(0, 1) == "#" ? 1 : 0; //accounts for "#FF000000" format
    byte a = Convert.ToByte(s.Substring(0 + hashOffset, 2), 16);
    byte r = Convert.ToByte(s.Substring(2 + hashOffset, 2), 16);
    byte g = Convert.ToByte(s.Substring(4 + hashOffset, 2), 16);
    byte b = Convert.ToByte(s.Substring(6 + hashOffset, 2), 16);
    return new SolidColorBrush(Color.FromArgb(a, r, g, b));
}
Laurent Duveau has a nice implementation with an extension method here[^].
Color Code to SolidColor Conversion - CodeProject