HTMLでは色を「# + 16進数」または「色の名前」で指定しますが、このようにして指定された色(HTMLカラー)を.NETで使われるGDI+のColorオブジェクトに変換するには、ColorTranslator.FromHtmlメソッドを使用します。
また、HTMLで使われる色の名前は.NETでも「定義された色」(KnownColor列挙体の要素によって表される色)としてすべて登録されているようなので、ColorクラスのFromNameメソッドによってもColorオブジェクトに変換できるでしょう。HTMLの色の名前によりColorオブジェクトへ変換されたときは、ColorTranslator.FromHtmlメソッドを使った時でも、FromNameメソッドを使った時同様、Color.IsNamedColorプロパティ(及びIsKnownColorプロパティ)はTrueとなります。
逆にColorオブジェクトからHTMLカラーの文字列に変換するには、ColorTranslator.ToHtmlメソッドを使用します。この時、色の名前を指定して作成したColorオブジェクトは色の名前に変換されますが、そうでない時は「# + 16進数」になります。
次にこれらの機能を使った例を示します。ここではHTMLカラーの"Tomato"と"#FF6347"をColorオブジェクトに変換しています。"Tomato"と"#FF6347"は全く同じ色ですが、変換された後のColorオブジェクトのToStringメソッドと、IsNamedColorプロパティの結果は違っています。さらにこれらをColorTranslator.ToHtmlメソッドでHTMLカラーに変換すると、みごとに元と同じく"Tomato"と"#FF6347"に戻ります。
'Imports System.Drawing 'FromHtmlにより、"Tomato"をColorに変換 Dim col1 As Color = ColorTranslator.FromHtml("Tomato") 'FromHtmlにより、"#FF6347"をColorに変換 '"Tomato"と"#FF6347"は同じ色 Dim col2 As Color = ColorTranslator.FromHtml("#FF6347") 'FromNameにより、"Tomato"をColorに変換 Dim col3 As Color = Color.FromName("Tomato") '色の名前と、IsNamedColorの値を調べる Console.WriteLine("Color:{0} / IsNamedColor:{1}", _ col1.ToString(), col1.IsNamedColor) Console.WriteLine("Color:{0} / IsNamedColor:{1}", _ col2.ToString(), col2.IsNamedColor) Console.WriteLine("Color:{0} / IsNamedColor:{1}", _ col3.ToString(), col3.IsNamedColor) '上の結果: 'Color:Color [Tomato] / IsNamedColor:True 'Color:Color [A=255, R=255, G=99, B=71] / IsNamedColor:False 'Color:Color [Tomato] / IsNamedColor:True 'ColorをHTMLカラーに変換する Console.WriteLine("col1:{0}", ColorTranslator.ToHtml(col1)) Console.WriteLine("col2:{0}", ColorTranslator.ToHtml(col2)) Console.WriteLine("col3:{0}", ColorTranslator.ToHtml(col3)) '上の結果: 'col1:Tomato 'col2:#FF6347 'col3:Tomato 'PictureBox1をTomato色にする PictureBox1.BackColor = col1
//using System.Drawing; //FromHtmlにより、"Tomato"をColorに変換 Color col1 = ColorTranslator.FromHtml("Tomato"); //FromHtmlにより、"#FF6347"をColorに変換 //"Tomato"と"#FF6347"は同じ色 Color col2 = ColorTranslator.FromHtml("#FF6347"); //FromNameにより、"Tomato"をColorに変換 Color col3 = Color.FromName("Tomato"); //色の名前と、IsNamedColorの値を調べる Console.WriteLine("Color:{0} / IsNamedColor:{1}", col1.ToString(), col1.IsNamedColor); Console.WriteLine("Color:{0} / IsNamedColor:{1}", col2.ToString(), col2.IsNamedColor); Console.WriteLine("Color:{0} / IsNamedColor:{1}", col3.ToString(), col3.IsNamedColor); //上の結果: //Color:Color [Tomato] / IsNamedColor:True //Color:Color [A=255, R=255, G=99, B=71] / IsNamedColor:False //Color:Color [Tomato] / IsNamedColor:True //ColorをHTMLカラーに変換する Console.WriteLine("col1:{0}", ColorTranslator.ToHtml(col1)); Console.WriteLine("col2:{0}", ColorTranslator.ToHtml(col2)); Console.WriteLine("col3:{0}", ColorTranslator.ToHtml(col3)); //上の結果: //col1:Tomato //col2:#FF6347 //col3:Tomato //PictureBox1をTomato色にする PictureBox1.BackColor = col1;