88

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?

Jon Seigel
  • 12,251
  • 8
  • 58
  • 92
Jader Dias
  • 88,211
  • 155
  • 421
  • 625

6 Answers6

171
ColorTranslator.FromHtml("#FF00FF");
João Angelo
  • 56,552
  • 12
  • 145
  • 147
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
-1

The FromName method worked for me

System.Drawing.Color.FromName("#FF00FF");
bicbmx
  • 817
  • 10
  • 8