且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

String转Color

更新时间:2022-09-15 12:02:22

原文:String转Color

很硬性的转换,谁知道更好的忘不吝赐教啊。

        /// <summary>
        /// String To Color
        /// </summary>
        /// <param name="color">例如#FFFF0000,红色</param>
        /// <returns></returns>
        public Color ReturnColorFromString(string color)
        {
            //#FFFF0000,A,R,G,B。
            color = color.Substring(1, color.Length - 1);
            string alpha = color.Substring(0, 2);
            string red = color.Substring(2, 2);
            string green = color.Substring(4, 2);
            string blue = color.Substring(6, 2);
            byte alphaByte = Convert.ToByte(alpha, 16);
            byte redByte = Convert.ToByte(red, 16);
            byte greenByte = Convert.ToByte(green, 16);
            byte blueByte = Convert.ToByte(blue, 16);
            return Color.FromArgb(alphaByte, redByte, greenByte, blueByte);
        }


        public static Color ToColor(this string colorName)
        {
            if (colorName.StartsWith("#")) 
                colorName = colorName.Replace("#", string.Empty);
            var v = int.Parse(colorName, System.Globalization.NumberStyles.HexNumber);
            return new Color
            {
                A = Convert.ToByte((v >> 24) & 255),
                R = Convert.ToByte((v >> 16) & 255),
                G = Convert.ToByte((v >> 8) & 255),
                B = Convert.ToByte((v >> 0) & 255)
            };
        }