Hoe maak je een System.Drawing.Color van zijn hexadecimale RGB-string?

Ik wil een System.Drawing.Colormaken van een waarde als #FF00FFof FF00FFzonder dat ik daarvoor code hoef te schrijven. Is daar een ingebouwde .NET-parser voor?


Antwoord 1, autoriteit 100%

ColorTranslator.FromHtml("#FF00FF");

Antwoord 2, autoriteit 38%

U kunt de statische methode van System.Drawing.ColorTranslator FromHtml gebruiken.

gebruik:

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

Antwoord 3, autoriteit 11%

Het is vrij eenvoudig wanneer u de Convert-Class. De functie ToInt32heeft een overbelasting met een tweede parameter die de basis vertegenwoordigt waarin de string zich bevindt.

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

Antwoord 4, autoriteit 5%

Gebruik de klasse ColorConverter:

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

Dit kan ook worden omgezet van de standaard benoemde kleuren, b.v. ConvertFromString( “Blauw” )

Zie hiervoor een bespreking van de standaard .NET-typeconversie mechanismen.


Antwoord 5

Als de kleur die je wilt gebruiken een constante is, gebruik dan in C# System.Drawing.Color.FromArgb (0xFF00FF). Dat is iets sneller dan System.Drawing.Color.FromNameof System.Drawing.Color.FromHtml, aangezien het ontleden van een string naar een geheel getal tijdens het compileren wordt gedaan in plaats van tijdens runtime.


Antwoord 6

De FromName-methode werkte voor mij

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

Other episodes