john.net

博客园 首页 新随笔 联系 订阅 管理

public class SubColor
    {
        public static Color FromArgb(string color) {
            int[] a =new int[4];
            int[] b =new int[8];
            string rg1 = "#[a-fA-F0-9]{8}";
            Regex r1 = new Regex(rg1);
            if (r1.IsMatch(color))
            {
                for (int i = 0; i < 8; i++)
                {
                    switch (color.Substring(i + 1, 1))
                    {
                        case "a":
                        case "A": b[i] = 10; break;
                        case "b":
                        case "B": b[i] = 11; break;
                        case "c":
                        case "C": b[i] = 12; break;
                        case "d":
                        case "D": b[i] = 13; break;
                        case "e":
                        case "E": b[i] = 14; break;
                        case "f":
                        case "F": b[i] = 15; break;
                        default: b[i] = int.Parse(color.Substring(i + 1, 1)); break;
                    }
                }
                         }
            else
            {
                string rg2 = @"^[A-Fa-f0-9]{8}";
                Regex r2 = new Regex(rg2);
                if (r2.IsMatch(color))
                {
                    for (int i = 0; i < 8; i++)
                    {
                        switch (color.Substring(i, 1))
                        {
                            case "a":
                            case "A": b[i] = 10; break;
                            case "b":
                            case "B": b[i] = 11; break;
                            case "c":
                            case "C": b[i] = 12; break;
                            case "d":
                            case "D": b[i] = 13; break;
                            case "e":
                            case "E": b[i] = 14; break;
                            case "f":
                            case "F": b[i] = 15; break;
                            default: b[i] = int.Parse(color.Substring(i, 1)); break;
                        }
                    }
                                   }

            }

                a[0] = b[0] *16+b[1];
                a[1] = b[2] *16+b[3];
                a[2] = b[4] *16+b[5];
                a[3] = b[6] *16+b[7];

            return Color.FromArgb((byte)a[0], (byte)a[1], (byte)a[2], (byte)a[3]);
        }
    }

这样就可以使用了

testb.Color = SubColor.FromArgb("#FF000000");

teste.Color = SubColor.FromArgb("FFA9CCF2");

本人正则表达式比较烂,还望高人指点

posted on 2009-05-21 12:35  john.net  阅读(546)  评论(0编辑  收藏  举报