DOBON.NET プログラミング道: .NET Framework, VB.NET, C#, Visual Basic, Visual Studio, インストーラ, ...

DOBON.NET

HTMLの色からColorオブジェクトを取得する

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"に戻ります。

[VB.NET]
'PictureBox1のGraphicsオブジェクトを取得
Dim g As Graphics = PictureBox1.CreateGraphics()

'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色にする
g.Clear(col1)

'リソースを開放する
g.Dispose()
[C#]
//PictureBox1のGraphicsオブジェクトを取得
Graphics g = PictureBox1.CreateGraphics();

//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色にする
g.Clear(col1);

//リソースを開放する
g.Dispose();

注意:この記事では、基本的な事柄の説明が省略されているかもしれません。初心者の方は、特に以下の点にご注意ください。

  • このサイトで紹介されているコードの多くは、例外処理が省略されています。例外処理については、こちらをご覧ください。