¿Cómo crear un System.Drawing.Color a partir de su cadena RGB hexadecimal?

84

Quiero crear un System.Drawing.Colorvalor a partir de un valor similar #FF00FFo FF00FFsin necesidad de escribir código para eso. ¿Hay algún analizador .NET incorporado para eso?

Jader Dias
fuente

Respuestas:

166
ColorTranslator.FromHtml("#FF00FF");
João Angelo
fuente
62

Puede utilizar el método estático System.Drawing.ColorTranslator FromHtml.

utilizar:

System.Drawing.ColorTranslator.FromHtml("#FFFFFF");
Palmadita
fuente
18

Es bastante fácil cuando usa Convert-Class . La ToInt32función tiene una sobrecarga con un segundo parámetro que representa la base en la que se encuentra la cadena.

using System.Drawing

Color yourColor = Color.FromARGB(Convert.ToInt32("FF00FF", 16));
Poli
fuente
9

Utilice la clase ColorConverter :

var converter = System.ComponentModel.TypeDescriptor.GetConverter( typeof( Color ) );
color = converter.ConvertFromString( "#FF00FF" );

Esto también puede convertir de los colores con nombre estándar, por ejemplo, ConvertFromString ("Azul")

Consulte aquí para ver una discusión sobre los mecanismos de conversión de tipo .NET estándar.

Phil Devaney
fuente
1

Si el color que desea usar es una constante, en C # use System.Drawing.Color.FromArgb (0xFF00FF). Eso es un poco más rápido que System.Drawing.Color.FromNameo System.Drawing.Color.FromHtml, ya que el análisis de una cadena a un entero se realiza en tiempo de compilación en lugar de en tiempo de ejecución.

Michael Rodby
fuente
0

El método FromName funcionó para mí

System.Drawing.Color.FromName("#FF00FF");
bicbmx
fuente