¿Cómo obtengo el color de un código de color hexadecimal usando .NET?
¿ 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.Color
instancia correspondiente para el código de color hexadecimal. ¿Existe un método incorporado en el marco para hacer esto?
Supongo que es un código ARGB... ¿Te refieres a System.Drawing.Color
o 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");
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") ;
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)