2012年9月24日 星期一

將顏色16進位字串色碼轉成 System.Drawing.Color 物件



將 #FF1000 轉成color
和反轉成 #色碼






        //色碼轉換  16進制轉10進制
        public static Color HexColor(String hex)
        {
            //將井字號移除
            hex = hex.Replace("#", "");

            byte a = 255;
            byte r = 255;
            byte g = 255;
            byte b = 255;
            int start = 0;

            //處理ARGB字串
            if (hex.Length == 8)
            {
                a = byte.Parse(hex.Substring(0, 2), System.Globalization.NumberStyles.HexNumber);
                start = 2;
            }
            else if (hex.Length < 6) //錯誤的色碼 直接輸出預設值#000000
            {
                return Color.FromArgb(255, 17, 0, 0);
            }



            // 將RGB文字轉成byte
            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);

        }


        //反色碼轉換  Color的10進制轉16進制
        public static String XColor(Color _co)
        {
            //處理ARGB字串

            string _a = _co.A.ToString("X").PadLeft(2, '0');
            string _r = _co.R.ToString("X").PadLeft(2, '0');
            string _g = _co.G.ToString("X").PadLeft(2, '0');
            string _b = _co.B.ToString("X").PadLeft(2, '0');


            return "#" + _r + _g + _b;

        }



參考
http://www.cnblogs.com/wxbjs/archive/2010/07/15/1777916.html
http://www.dotblogs.com.tw/junegoat/archive/2012/06/22/color-convert-form-hex-string.aspx

0 意見:

張貼留言

 

MangoHost Copyright © 2009 Cookiez is Designed by Ipietoon for Free Blogger Template