How do I get the color from a hexadecimal color code using .NET?

前端 未结 16 800
不思量自难忘°
不思量自难忘° 2020-11-22 06:45

How can I get a color from a hexadecimal color code (e.g. #FFDFD991)?

I am reading a file and am getting a hexadecimal color code. I need to create the

16条回答
  •  误落风尘
    2020-11-22 06:55

    This post has become the goto for anyone trying to convert from a hex color code to a system color. Therefore, I thought I'd add a comprehensive solution that deals with both 6 digit (RGB) and 8 digit (ARGB) hex values.

    By default, according to Microsoft, when converting from an RGB to ARGB value

    The alpha value is implicitly 255 (fully opaque).

    This means by adding FF to a 6 digit (RGB) hex color code it becomes an 8 digit ARGB hex color code. Therefore, a simple method can be created that handles both ARGB and RGB hex's and converts them to the appropriate Color struct.

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

    This was inspired by Hans Kesting's answer.

提交回复
热议问题