TIPS-如何將HTML色碼轉成.NET Color Object?
1 |
要怎麼把#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這麼好用的東東