要怎麼把#77aaff這種HTML色碼轉成.NET中的Color物件呢? (我最常用到的情境是將設計師配好的色系套在WinForm上)

多說無益,直接看Code,解說都放在註解中:

static void testColorTrans()
{
    Color c;
    //我有一個HTML色碼,要怎麼換成.NET Color物件呢?
    string htmlClr = "#77aaff";
    //有了,Color.FromArgb可以用
    c = Color.FromArgb(Convert.ToInt32(htmlClr.Replace("#", ""), 16));
    //其實有更快的方法, ConvertTranslator
    c = ColorTranslator.FromHtml(htmlClr);
    //而且也可以將Color還原回HTML色碼
    Console.WriteLine(ColorTranslator.ToHtml(c));
    //不過有個小問題,如果是Color.Blue這種具名顏色
    c = Color.Blue;
    //會得到ToHtml()會傳回"Blue"字串
    Console.WriteLine(ColorTranslator.ToHtml(c));
    //如果堅持一定要換成色碼,就得花點功夫了
    //謎之聲: 明明Blue在HTML就可用,不知為什麼要這麼堅持??
    Console.WriteLine(
        String.Format("#{0:x2}{1:x2}{2:x2}",
        c.R, c.G, c.B));
    //另外介紹幾個相關函數
    //Color.FromName可以轉換具名顏色
    c = Color.FromName("blue");
    //還有一個看起來較麻煩的WebColorConverter
    //我目前還沒想出不用ColorTranslator要用它的理由
    System.Web.UI.WebControls.WebColorConverter wcc =
        new System.Web.UI.WebControls.WebColorConverter();
    c = (Color)wcc.ConvertFromString(htmlClr);
}

Comments

# by Maxi

這個真的超級有用說 沒看這篇我都不知道有ColorTranslator這麼好用的東東

Post a comment