I think that the title is clear !
What I have now is :
System.Drawing.Color uiui = System.Drawing.ColorTranslator.FromHtml(myString);
var intColor =
You can use the System.Windows.Media.ColorConverter
var color = (Color)ColorConverter.ConvertFromString("#FF010203");
//OR
var color = (Color)ColorConverter.ConvertFromString("#010203");
//OR
var color = (Color)ColorConverter.ConvertFromString("Red");
//and then:
var brush = new SolidColorBrush(color);
It's pretty flexible as to what it accepts. Have a look at the examples in XAML here. You can pass any of those string formats in.
Note: These are all in System.Windows.Media
(for WPF) not to be confused with System.Drawing
(for WinForms)
This is the helper class that I've used in the past
public static Color HexStringToColor(string hexColor)
{
string hc = ExtractHexDigits(hexColor);
if (hc.Length != 6)
{
// you can choose whether to throw an exception
//throw new ArgumentException("hexColor is not exactly 6 digits.");
return Color.Empty;
}
string r = hc.Substring(0, 2);
string g = hc.Substring(2, 2);
string b = hc.Substring(4, 2);
Color color = Color.Empty;
try
{
int ri = Int32.Parse(r, NumberStyles.HexNumber);
int gi = Int32.Parse(g, NumberStyles.HexNumber);
int bi = Int32.Parse(b, NumberStyles.HexNumber);
color = Color.FromArgb(ri, gi, bi);
}
catch
{
// you can choose whether to throw an exception
//throw new ArgumentException("Conversion failed.");
return Color.Empty;
}
return color;
}
and an additional helper class
public static string ExtractHexDigits(string input)
{
// remove any characters that are not digits (like #)
var isHexDigit
= new Regex("[abcdefABCDEF\\d]+", RegexOptions.Compiled);
string newnum = "";
foreach (char c in input)
{
if (isHexDigit.IsMatch(c.ToString()))
{
newnum += c.ToString();
}
}
return newnum;
}
Just use ColorTranslator method:
ColorTranslator.FromHtml("#010203");