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

Je veux créer un System.Drawing.Color partir d’une valeur comme #FF00FF ou FF00FF sans avoir besoin d’écrire du code pour cela. Il existe un parsingur intégré .NET pour cela?

 ColorTranslator.FromHtml("#FF00FF"); 

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

utilisation:

 System.Drawing.ColorTranslator.FromHtml("#FFFFFF"); 

C’est assez facile lorsque vous utilisez la classe Convert . La fonction ToInt32 a une surcharge avec un deuxième paramètre qui représente la base de la chaîne.

 using System.Drawing Color yourColor = Color.FromARGB(Convert.ToInt32("FF00FF", 16)); 

Utilisez la classe ColorConverter :

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

Cela peut également convertir à partir des couleurs nommées standard, par exemple ConvertFromSsortingng (“Blue”)

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

La méthode FromName a fonctionné pour moi

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

Si la couleur que vous souhaitez utiliser est une constante, en C #, utilisez System.Drawing.Color.FromArgb (0xFF00FF) . C’est légèrement plus rapide que System.Drawing.Color.FromName ou System.Drawing.Color.FromHtml , puisque l’parsing d’une chaîne en entier se fait au moment de la compilation plutôt qu’à l’exécution.