如何从十六进制颜色代码(例如#FFDFD991)中获得颜色?

我正在读取一个文件,并得到一个十六进制的颜色代码。我需要为十六进制颜色代码创建相应的System.Windows.Media.Color实例。框架中是否有一个内置的方法来做到这一点?


当前回答

对于任何Xamarin开发人员,您都需要了解

指定颜色类型,以防止强制转换异常假设您谈论的是Xamarin.Forms.Color 创建一个ColorConverter类型的对象

var conv = new System.Drawing.ColorConverter();
var color = (System.Drawing.Color)conv.ConvertFromString("#FF1D65AE");

其他回答

在asp.net:

color_black = (Color)new ColorConverter().ConvertFromString("#FF76B3");

你可以使用下面的代码:

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

XNA / Monogame (Microsoft.Xna.Framework.Color)。 适用于6或8(带alpha)字符的十六进制字符串 可能还有更好的替代方案(位屏蔽/移位)。

    using Microsoft.Xna.Framework;
    using System.Globalization;
    
    public static class ColorBuilder
    {
        public static Color FromHex(string color)
        {
            var hex = color.Replace("#", string.Empty);
            var h = NumberStyles.HexNumber;

            var r = int.Parse(hex.Substring(0, 2), h);
            var g = int.Parse(hex.Substring(2, 2), h);
            var b = int.Parse(hex.Substring(4, 2), h);
            var a = 255;

            if (hex.Length == 8)
            {
                a = int.Parse(hex.Substring(6, 2), h);
            }
 
            return new Color(r, g, b, a);
        }
    }
    
    //create a blue color
    var color = ColorBuilder.FromHex("#2733C5"); //or ColorBuilder.FromHex("2733C5");
    
    //create a blue color with 50% alpha
    var colorTrans = ColorBuilder.FromHex("#2733C580");

我需要将HEX颜色代码转换为System.Drawing。颜色,特别是在WPF表单上作为背景的爱丽丝蓝的阴影,并发现找到答案的时间比预期的要长:

using System.Windows.Media;

--

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));

假设你是指HTML类型的RGB代码(称为十六进制代码,如#FFCC66),使用ColorTranslator类:

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

如果你使用的是ARGB十六进制代码,你可以使用System.Windows.Media命名空间中的ColorConverter类:

Color col = ColorConverter.ConvertFromString("#FFDFD991") as Color;
//or      = (Color) ColorConverter.ConvertFromString("#FFCC66") ;