I want to create a System.Drawing.Color
from a value like #FF00FF
or FF00FF
without needing to write code for that. There is any .NET built-in parser for that?
Asked
Active
Viewed 9.8k times
88

Jon Seigel
- 12,251
- 8
- 58
- 92

Jader Dias
- 88,211
- 155
- 421
- 625
6 Answers
65
You can use the System.Drawing.ColorTranslator static method FromHtml.
use:
System.Drawing.ColorTranslator.FromHtml("#FFFFFF");

Pat
- 5,263
- 1
- 36
- 53
19
It is rather easy when you use the Convert-Class. The ToInt32
function has an overload with a second parameter which represents the base the string is in.
using System.Drawing
Color yourColor = Color.FromARGB(Convert.ToInt32("FF00FF", 16));

Bobby
- 11,419
- 5
- 44
- 69
9
Use the ColorConverter class:
var converter = System.ComponentModel.TypeDescriptor.GetConverter( typeof( Color ) );
color = converter.ConvertFromString( "#FF00FF" );
This can also convert from the standard named colors e.g. ConvertFromString( "Blue" )
See here for a discussion of the standard .NET type conversion mechanisms.

Phil Devaney
- 17,607
- 6
- 41
- 33
1
If the color you want to use is a constant, in C# use System.Drawing.Color.FromArgb (0xFF00FF)
. That is slightly faster than System.Drawing.Color.FromName
or System.Drawing.Color.FromHtml
, since the parsing from a string to integer is done at compile time rather than at runtime.

Michael Rodby
- 336
- 4
- 6