C #

Hogyan lehet színt kapni a hexadecimális színkódból a .NET használatával?

How Get Color From Hexadecimal Color Code Using



Hogyan lehet kódolni hexadecimális színből (például #FFDFD991) a szín megszerzéséhez?

Olvasom a fájlt, és megkapom a hexadecimális színkódot. Létre kell hoznom a hexadecimális színkód megfelelőjét. Van-e beépített módszer a keretrendszerben erre?




# 1. emelet

Láthatod Silverlight / WPF Használjon hexadecimális értéket Állítsa az ellipszist hexa színre



System.Windows.Media.Color

#2. emelet

A következő három változat pontosan ugyanazt a színt adja. Az utolsó előny, hogy ki lehet emelni a Visual Studio 2010 IDE-ben (valószínűleg a ReSharper csinálja), és a megfelelő színt használja.



your_contorl.Color = DirectCast(ColorConverter.ConvertFromString('#D8E0A627'), Color)

#3. emelet

WPF

var cc1 = System.Drawing.ColorTranslator.FromHtml('#479DEE') var cc2 = System.Drawing.Color.FromArgb(0x479DEE) var cc3 = System.Drawing.Color.FromArgb(0x47, 0x9D, 0xEE)

#4. emelet

Ha feltételezzük, hogy HTML típusú RGB kódra gondol (hexakódnak hívják, például # FFCC66), kérjük, használja ColorTranslator Osztály:

using System.Windows.Media //hex to color Color color = (Color)ColorConverter.ConvertFromString('#7AFF7A7A') //color to hex string hexcolor = color.ToString()

Ha azonban ARGB hexakódot használ, használhatja a System.Windows.Media névteret ColorConverter Osztály:



System.Drawing.Color col = System.Drawing.ColorTranslator.FromHtml('#FFCC66')

#5. emelet

Ha a HashCode-ot Color col = ColorConverter.ConvertFromString('#FFDFD991') as Color //or = (Color) ColorConverter.ConvertFromString('#FFCC66') néven képviseli , Akkor attól tartok, hogy nem fog tudni visszatérni. A hash függvény nem kétirányú, csak 'előre' lehet, nem térhet vissza.

Ha a színt a szín hexadecimális értéke alapján kell megszereznie, kövesse Oded javaslatát.


# 6. emelet

használat

.GetHashCode()

# 7. emelet

Ha nem akarja használni a ColorTranslator alkalmazást, akkor könnyen elérheti:

System.Drawing.Color.FromArgb(myHashCode)

A színkód csak az ARGB érték hexadecimális ábrázolása.

szerkesztés

Ha egész szám helyett 4 értéket kell használnia, használhatja ezt az értéket (több megjegyzés kombinálásával):

string colorcode = '#FFFFFF00' int argb = Int32.Parse(colorcode.Replace('#', ''), NumberStyles.HexNumber) Color clr = Color.FromArgb(argb)

1. megjegyzés : A NumberStyles a System.Globalizationban van.
Jegyzet 2 : Kérjük, adja meg saját hibakeresését (a színkódnak 6 vagy 8 karakteres hexa értéknek kell lennie)


# 8 emelet

Feltételezem, hogy ez ARGB kód ... úgy érted, hogy string colorcode = '#FFFFFF00' colorcode = colorcode.TrimStart('#') Color col // from System.Drawing or System.Windows.Media if (colorcode.Length == 6) col = Color.FromArgb(255, // hardcoded opaque int.Parse(colorcode.Substring(0,2), NumberStyles.HexNumber), int.Parse(colorcode.Substring(2,2), NumberStyles.HexNumber), int.Parse(colorcode.Substring(4,2), NumberStyles.HexNumber)) else // assuming length of 8 col = Color.FromArgb( int.Parse(colorcode.Substring(0, 2), NumberStyles.HexNumber), int.Parse(colorcode.Substring(2, 2), NumberStyles.HexNumber), int.Parse(colorcode.Substring(4, 2), NumberStyles.HexNumber), int.Parse(colorcode.Substring(6, 2), NumberStyles.HexNumber)) még mindig System.Drawing.Color ? Ez utóbbit például a WPF-ben használják. Még nem láttam senkit megemlíteni, ezért csak arra az esetre, ha keresnéd:

System.Windows.Media.Color

# 9 Emelet

Bárki, aki hexadecimális színkódból rendszerszínűvé kíván konvertálni, ez a cikk lett az első választás. Ezért azt gondolom, hogy átfogó megoldást adok a 6 bites (RGB) és a 8 bites (ARGB) hexadecimális értékek kezelésére.

A Microsoft alapértelmezett beállításai szerint, amikor RGB-ről ARGB-értékekre konvertál

Az alfa értéke implicit módon 255 (teljesen átlátszatlan).

Ez azt jelenti, hogy az FF hozzáadásával egy 6 bites (RGB) hexadecimális színkódhoz 8 bites ARGB hexadecimális kód lesz. Ezért létrehozhat egy egyszerű módszert, amely kezeli az ARGB és RGB hexadecimális értékeket, és átalakítja őket a megfelelő színstruktúrává.

using System.Windows.Media Color color = (Color)ColorConverter.ConvertFromString('#FFDFD991')

Ezt Hans Kesting válasza ihlette.


# 10. emelet

Ha a Windows Store alkalmazást szeretné használni erre, kérjük, kövesse a @Hans Kesting és a @Jink válaszokat:

public static System.Drawing.Color GetColorFromHexValue(string hex) { string cleanHex = hex.Replace('0x', '').TrimStart('#') if (cleanHex.Length == 6) { //Affix fully opaque alpha hex value of FF (225) cleanHex = 'FF' + cleanHex } int argb if (Int32.TryParse(cleanHex, NumberStyles.HexNumber, CultureInfo.InvariantCulture, out argb)) { return System.Drawing.Color.FromArgb(argb) } //If method hasn't returned a color yet, then there's a problem throw new ArgumentException('Invalid Hex value. Hex must be either an ARGB (8 digits) or RGB (6 digits)') }

# 11Padló

string colorcode = '#FFEEDDCC' int argb = Int32.Parse(colorcode.Replace('#', ''), NumberStyles.HexNumber) tData.DefaultData = Color.FromArgb((byte)((argb & -16777216) >> 0x18), (byte)((argb & 0xff0000) >> 0x10), (byte)((argb & 0xff00) >> 8), (byte)(argb & 0xff))

# 12 emelet

Át kell alakítanom a hexadecimális színkódot System.Drawing.Color színre, különös tekintettel az Alice Blue árnyalatra, mint a WPF űrlap hátterére, és megállapítottam, hogy a vártnál tovább tartott a válasz megtalálása:

private Color FromHex(string hex) { if (hex.StartsWith('#')) hex = hex.Substring(1) if (hex.Length != 6) throw new Exception('Color not valid') return Color.FromArgb( int.Parse(hex.Substring(0, 2), System.Globalization.NumberStyles.HexNumber), int.Parse(hex.Substring(2, 2), System.Globalization.NumberStyles.HexNumber), int.Parse(hex.Substring(4, 2), System.Globalization.NumberStyles.HexNumber)) }

-

using System.Windows.Media

# 13 Emelet

Használhatja a következő kódot:

System.Drawing.Color myColor = System.Drawing.ColorTranslator.FromHtml('#EFF3F7') this.Background = new SolidColorBrush(System.Windows.Media.Color.FromArgb(myColor.A, myColor.R, myColor.G, myColor.B))

# 14F

A legalapvetőbb:

Color color = System.Drawing.ColorTranslator.FromHtml('#FFDFD991')

# 15F

Van egy tömör kiterjesztési módszer is:

Color.ParseColor('#ff43a047')

használ:

static class ExtensionMethods { public static Color ToColor(this uint argb) { return Color.FromArgb((byte)((argb & -16777216)>> 0x18), (byte)((argb & 0xff0000)>> 0x10), (byte)((argb & 0xff00) >> 8), (byte)(argb & 0xff)) } }