¿Cómo puedo obtener un color 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. ¿Hay un método incorporado en el marco para hacer esto?
#FF0000
es un código de color HTML (o hexadecimal), no un código hash. Por favor, aprende la diferencia.Respuestas:
Supongo que es un código ARGB ... ¿Te refieres a
System.Drawing.Color
oSystem.Windows.Media.Color
? Este último se usa en WPF, por ejemplo. Todavía no he visto a nadie mencionarlo, así que en caso de que lo estuvieras buscando:fuente
Color.FromArgb
embargo , probablemente sea más fácil usar el método en este caso. Si usa alfa de coma flotante, tendría que multiplicar por 255.Suponiendo que se refiere a los códigos RGB de tipo HTML (llamados códigos hexadecimales, como # FFCC66), use la clase ColorTranslator :
Sin embargo, si está utilizando un código hexadecimal ARGB, puede usar la clase ColorConverter del espacio de nombres System.Windows.Media:
fuente
Si no desea utilizar ColorTranslator, puede hacerlo fácilmente:
El código de color es solo la representación hexadecimal del valor ARGB.
EDITAR
Si necesita usar 4 valores en lugar de un solo entero, puede usar esto (combinando varios comentarios):
Nota 1 : NumberStyles está en System.Globalization.
Nota 2 : proporcione su propia comprobación de errores (el código de color debe ser un valor hexadecimal de 6 u 8 caracteres)
fuente
colorcode = colorcode.Replace("#", "")
simplemente usarint a = byte.parse(colorcode.Substring(0,2), NumberStyles.HexNumber);
y así sucesivamente para r, g, y b. No olvide reemplazar el primer parámetro de Subcadena, el índice, con 2 para r, 4 para gy 6 para b.FromArgb
toma 1 parámetroSystem.Drawing.Color
y 4 parámetros enSystem.Windows.Media.Color
También existe este pequeño método de extensión:
En uso:
fuente
Color
correctamente. Usé el código de @too y eso lo solucionó.& 0xFF
con el valor final reducido cada vez, en lugar de necesitar todos esos valores diferentes&
.Las tres variantes a continuación dan exactamente el mismo color. El último tiene el beneficio de ser destacado en el IDE de Visual Studio 2010 (tal vez sea ReSharper quien lo está haciendo) con el color adecuado.
fuente
System.Windows.Media.Color
.fuente
Necesitaba convertir un código de color HEX en un System.Drawing.Color, específicamente un tono de Alice Blue como fondo en un formulario WPF y descubrí que tardó más de lo esperado en encontrar la respuesta:
-
fuente
Puedes usar el siguiente código:
fuente
Si desea hacerlo con una aplicación de la Tienda Windows, siga las respuestas de @Hans Kesting y @Jink:
fuente
Esta publicación se ha convertido en el goto para cualquiera que intente convertir un código de color hexadecimal a un color del sistema. Por lo tanto, pensé que agregaría una solución integral que trate con valores hexadecimales de 6 dígitos (RGB) y 8 dígitos (ARGB).
De manera predeterminada, según Microsoft, al convertir de un valor RGB a ARGB
Esto significa que al agregar FF a un código de color hexadecimal de 6 dígitos (RGB) se convierte en un código de color hexadecimal ARGB de 8 dígitos. Por lo tanto, se puede crear un método simple que maneje los hexágonos ARGB y RGB y los convierta en la estructura de color adecuada.
Esto fue inspirado por la respuesta de Hans Kesting.
fuente
Puedes ver Silverlight / WPF establece elipse con color hexadecimal para usar un valor hexadecimal:
fuente
WPF:
fuente
Color [Indigo]
Utilizar
fuente
int
?Si te refieres a HashCode como en
.GetHashCode()
, me temo que no puedes volver. Las funciones de hash no son bidireccionales, solo puede avanzar, no retroceder.Siga la sugerencia de Oded si necesita obtener el color según el valor hexadecimal del color.
fuente
Usé ColorDialog en mi proyecto. ColorDialog alguna vez devuelve "Rojo", "Fhushia" y algunas veces devuelve "fff000". Resolví este problema así, tal vez ayudar a alguien.
InputColor es el valor de retorno de ColorDialog.
Gracias a todos por responder esta pregunta. Es de gran ayuda para mí.
fuente