Monday, April 28, 2008 - 文章

TIPS-如何將HTML色碼轉成.NET Color Object?

要怎麼把#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);
}
Posted 28 April 2008 09:51 AMJeffrey | 1 comment(s)
Filed under: ,

搜尋

Go

<April 2008>
SunMonTueWedThuFriSat
303112345
6789101112
13141516171819
20212223242526
27282930123
45678910
 
RSS
【工商服務】
最新回應

Tags 分類檢視
關於作者

一個醉心技術又酷愛分享的Coding魔人,十年的IT職場生涯,寫過系統、管過專案, 也帶過團隊,最後還是無怨無悔地選擇了技術鑽研這條路,近年來則以做一個"有為的中年人"自許。

文章典藏
其他功能

這個部落格


BlogLook Score and Rank

Syndication