Convert HEX string to color in Windows Phone Runtime C #

I am working on a game on Windows Phone and I got stuck when I wanted to convert the HEX string to Color. On Windows Phone 8, silverlight is not a problem, but I cannot find a solution at runtime because it does not include the Color.FromArgb or Color.FromName functions.

Does anyone have a function that converts a HEX string to color?

Thanks.

+6
source share
8 answers

The color .FromArgb is in the Windows.UI namespace. There is no Color.FromName method, but you can use Colors. <name> or you can use reflection to search for a name from a string.

using System.Reflection; // For GetRuntimeProperty using System.Globalization; // For NumberStyles using Windows.UI; // for Color and Colors using Windows.UI.Xaml.Media; // for SystemColorBrush // from #AARRGGBB string byte a = byte.Parse(hexColor.Substring(1, 2),NumberStyles.HexNumber); byte r = byte.Parse(hexColor.Substring(3, 2),NumberStyles.HexNumber); byte g = byte.Parse(hexColor.Substring(5, 2),NumberStyles.HexNumber); byte b = byte.Parse(hexColor.Substring(7, 2),NumberStyles.HexNumber); Windows.UI.Color color = Color.FromArgb(a, r, g, b); Windows.UI.Xaml.Media.SolidColorBrush br = new SolidColorBrush(color); // From Name var prop = typeof(Windows.UI.Colors).GetRuntimeProperty("Aqua"); if (prop != null) { Color c = (Color) prop.GetValue(null); br = new SolidColorBrush(c); } // From Property br = new SolidColorBrush(Colors.Aqua); 
+14
source

Just in case, someone is looking for a better alternative. The Universal Windows Platform (Windows 10) has XamlBindingHelper.ConvertValue , which is much better than nothing.

 // Get a Color instance representing #FFFF0000. var color = XamlBindingHelper.ConvertValue(typeof(Windows.UI.Color), "red"); 

It can convert enumerations from the Windows.UI.Xaml namespace, booleans, brushes, colors and other simple actions that the XAML analyzer can perform.

+9
source

Convert Hex to color in C # for Universal Windows Platform (UWP)

Create a method for converting the hexadecimal string to SolidColorBrush:

  public SolidColorBrush GetSolidColorBrush(string hex) { hex = hex.Replace("#", string.Empty); byte a = (byte)(Convert.ToUInt32(hex.Substring(0, 2), 16)); byte r = (byte)(Convert.ToUInt32(hex.Substring(2, 2), 16)); byte g = (byte)(Convert.ToUInt32(hex.Substring(4, 2), 16)); byte b = (byte)(Convert.ToUInt32(hex.Substring(6, 2), 16)); SolidColorBrush myBrush = new SolidColorBrush(Windows.UI.Color.FromArgb(a, r, g, b)); return myBrush; } 

Now all that remains is to get the color by calling the method and pass it the sixth line as a parameter:

  var color = GetSolidColorBrush("#FFCD3927").Color; 

Link : http://www.joeljoseph.net/converting-hex-to-color-in-universal-windows-platform-uwp/

+5
source

I made a method from the top answer here:

 private Windows.UI.Color GetColorFromHex(string hexString) { hexString = hexString.Replace("#", string.Empty); byte r = byte.Parse(hexString.Substring(0, 2), NumberStyles.HexNumber); byte g = byte.Parse(hexString.Substring(2, 2), NumberStyles.HexNumber); byte b = byte.Parse(hexString.Substring(4, 2), NumberStyles.HexNumber); return Windows.UI.Color.FromArgb(byte.Parse("1"), r, g, b); } 
+3
source

you can use

 var color = new SolidColorBrush(Color.FromArgb(0xFF, 0xFF, 0, 0)); 
0
source

Final that also works on UWP :

  public static Color GetColorFromHex(string hexString) { //add default transparency to ignore exception if ( !string.IsNullOrEmpty(hexString) && hexString.Length > 6 ) { if ( hexString.Length == 7 ) { hexString = "FF" + hexString; } hexString = hexString.Replace("#", string.Empty); byte a = (byte) ( Convert.ToUInt32(hexString.Substring(0, 2), 16) ); byte r = (byte) ( Convert.ToUInt32(hexString.Substring(2, 2), 16) ); byte g = (byte) ( Convert.ToUInt32(hexString.Substring(4, 2), 16) ); byte b = (byte) ( Convert.ToUInt32(hexString.Substring(6, 2), 16) ); Color color = Color.FromArgb(a, r, g, b); return color; } //return black if hex is null or invalid return Color.FromArgb(255, 0, 0, 0); } 
0
source

Here is a simple code snippet

 public Color HexColor(String hex) { //remove the # at the front hex = hex.Replace("#", ""); byte a = 255; byte r = 255; byte g = 255; byte b = 255; int start = 0; //handle ARGB strings (8 characters long) if (hex.Length == 8) { a = byte.Parse(hex.Substring(0, 2), System.Globalization.NumberStyles.HexNumber); start = 2; } //convert RGB characters to bytes r = byte.Parse(hex.Substring(start, 2), System.Globalization.NumberStyles.HexNumber); g = byte.Parse(hex.Substring(start+2, 2), System.Globalization.NumberStyles.HexNumber); b = byte.Parse(hex.Substring(start+4, 2), System.Globalization.NumberStyles.HexNumber); return Color.FromArgb(a, r, g, b); } 

and you can just call as shown below.

 Color c = HexColor("#99ccff"); 

I tested this in winphone 8.1 and it works

Link

0
source

generates a file, namely: ColorUtils.cs

 using Windows.UI.Xaml.Markup; .... static class ColorUtils { public static Color GetColorFromHex(string hexString) { Color x =(Color)XamlBindingHelper.ConvertValue(typeof(Color), hexString); return x; } } 

and use it something like

 var acolor=(new SolidColorBrush(ColorUtils.GetColorFromHex("#F24C27")): 

or with alpha

 var acolor=(new SolidColorBrush(ColorUtils.GetColorFromHex("#4CF24C27")): 
0
source

Source: https://habr.com/ru/post/983148/


All Articles