¿Cómo obtengo el color de un código de color hexadecimal usando .NET?

Resuelto viky asked hace 14 años • 20 respuestas

¿ Cómo puedo obtener un color a partir de un código de color hexadecimal (por ejemplo #FFDFD991)?

Estoy leyendo un archivo y obtengo un código de color hexadecimal. Necesito crear la System.Windows.Media.Colorinstancia correspondiente para el código de color hexadecimal. ¿Existe un método incorporado en el marco para hacer esto?

viky avatar Jan 21 '10 21:01 viky
Aceptado

Supongo que es un código ARGB... ¿Te refieres a System.Drawing.Coloro System.Windows.Media.Color? Este último se utiliza, por ejemplo, en WPF. No he visto a nadie mencionarlo todavía, así que por si lo estabas buscando:

using System.Windows.Media;

Color color = (Color)ColorConverter.ConvertFromString("#FFDFD991");
Thorarin avatar Jan 21 '2010 14:01 Thorarin

Suponiendo que te refieres a los códigos RGB de tipo HTML (llamados códigos hexadecimales, como #FFCC66), usa la clase ColorTranslator :

System.Drawing.Color col = System.Drawing.ColorTranslator.FromHtml("#FFCC66");

Sin embargo, si está utilizando un código hexadecimal ARGB, puede utilizar la clase ColorConverter del espacio de nombres System.Windows.Media:

Color col = ColorConverter.ConvertFromString("#FFDFD991") as Color;
//or      = (Color) ColorConverter.ConvertFromString("#FFCC66") ;
Oded avatar Jan 21 '2010 14:01 Oded

Si no desea utilizar ColorTranslator, puede hacerlo fácilmente:

string colorcode = "#FFFFFF00";
int argb = Int32.Parse(colorcode.Replace("#", ""), NumberStyles.HexNumber);
Color clr = Color.FromArgb(argb);

El código de color es sólo la representación hexadecimal del valor ARGB.

EDITAR

Si necesita usar 4 valores en lugar de un solo número entero, puede usar esto (combinando varios comentarios):

string colorcode = "#FFFFFF00";    
colorcode = colorcode.TrimStart('#');

Color col; // from System.Drawing or System.Windows.Media
if (colorcode.Length == 6)
    col = Color.FromArgb(255, // hardcoded opaque
                int.Parse(colorcode.Substring(0,2), NumberStyles.HexNumber),
                int.Parse(colorcode.Substring(2,2), NumberStyles.HexNumber),
                int.Parse(colorcode.Substring(4,2), NumberStyles.HexNumber));
else // assuming length of 8
    col = Color.FromArgb(
                int.Parse(colorcode.Substring(0, 2), NumberStyles.HexNumber),
                int.Parse(colorcode.Substring(2, 2), NumberStyles.HexNumber),
                int.Parse(colorcode.Substring(4, 2), NumberStyles.HexNumber),
                int.Parse(colorcode.Substring(6, 2), NumberStyles.HexNumber));

Nota 1 : NumberStyles está en System.Globalization.
Nota 2 : proporcione su propia verificación de errores (el código de color debe ser un valor hexadecimal de 6 u 8 caracteres)

Hans Kesting avatar Jan 21 '2010 14:01 Hans Kesting