2012-10-05

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

 

最近在做圖形合成,遇到一個惱人問題..

就是常會遇到需要把 #FFFFFF 轉成Color物件,但是沒有提供此function 來轉..

網路上面看到一段非常有效的範例..寫得很方便使用..

參考來源: http://silverlemma.blogspot.tw/2009/03/c-converting-from-hex-string-to-color.html

public 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;
            }
 
            // 將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);
        }

使用方式 :



Brush br = new SolidBrush(HexColor("#3ea530"));

變得非常簡單,紀錄一下,真的每次要找都要花一點時間..