Comment créer un System.Drawing.Color à partir de sa chaîne RVB hexadécimale?

84

Je veux créer un à System.Drawing.Colorpartir d'une valeur comme #FF00FFou FF00FFsans avoir besoin d'écrire du code pour cela. Il existe un analyseur .NET intégré pour cela?

Jader Dias
la source

Réponses:

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

Vous pouvez utiliser la méthode statique System.Drawing.ColorTranslator FromHtml.

utilisation:

System.Drawing.ColorTranslator.FromHtml("#FFFFFF");
Tapoter
la source
18

C'est assez facile lorsque vous utilisez la classe Convert . La ToInt32fonction a une surcharge avec un deuxième paramètre qui représente la base dans laquelle se trouve la chaîne.

using System.Drawing

Color yourColor = Color.FromARGB(Convert.ToInt32("FF00FF", 16));
Policier
la source
9

Utilisez la classe ColorConverter :

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

Cela peut également convertir des couleurs nommées standard, par exemple ConvertFromString ("Blue")

Voir ici pour une discussion sur les mécanismes de conversion de type .NET standard.

Phil Devaney
la source
1

Si la couleur que vous souhaitez utiliser est une constante, utilisez C # System.Drawing.Color.FromArgb (0xFF00FF). C'est légèrement plus rapide que System.Drawing.Color.FromNameou System.Drawing.Color.FromHtml, puisque l'analyse d'une chaîne à un entier est effectuée au moment de la compilation plutôt qu'au moment de l'exécution.

Michael Rodby
la source
0

La méthode FromName a fonctionné pour moi

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