Colorから HTMLカラーに変換する (Colorから #RRGGBB形式に変換する) - C#

ColorからHTML形式、もしくは"#RRGGBB"形式に変換するには、ColorTranslator.ToHtml()メソッドを使用します。

書式

string strColor = ColorTranslator.ToHtml(Color.Blue);
string strColor = ColorTranslator.ToHtml( Color.FromArgb(240,220,126) );

プログラム例

UI

下図のUIを作成します。TextBox,Button,Panelを1つずつ配置します。

コード

下記のコードを記述します。
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace ColorToHtmlColor
{
  public partial class Form1 : Form
  {
    public Form1()
    {
      InitializeComponent();
    }

    private void button1_Click(object sender, EventArgs e)
    {
      Color c = Color.FromArgb(192,64,32);

      string strColor = ColorTranslator.ToHtml(c);
      textBox1.Text = strColor;
      panel1.BackColor = ColorTranslator.FromHtml(strColor);
    }
  }
}

解説

Colorクラスcに設定されたカラー値をColorTranslator.ToHtml()メソッドを呼び出してHTML形式の文字列に変換します。変換した文字列をテキストボックスに表示します。また変換した文字列から、ColorTranslator.FromHtml()メソッドを呼び出しColorに変換してPanelの背景色に設定します。

実行結果

プロジェクトを実行します。下図のウィンドウが表示されます。


[button1]をクリックすると下図の状態に変化します。テキストボックスにHTMLカラー値の文字列が表示され、パネルの背景色も変更されます。


メジャーなカラーでの動作

上記の方法では、マイナーなカラーの場合は問題ありませんが"#0000FF"のようなWebカラーの場合、値が"blue"になってしまう動作になります。
ColorTranslator.ToHtml()メソッドにマイナーなカラーを引数に与えた場合は"#RRGGBB"形式の文字列が取得できます。


メジャーなカラーを引数に与えた場合は色名の文字列が取得できます。

この現象を回避し、常に"#RRGGBB"形式の文字列を取得したい場合、下記のコードを利用します。Formatメソッドを用いてカラーのR,G,Bの値を整形して出力します。

コード

  string strColor = string.Format("#{0:X2}{1:X2}{2:X2}", c.R, c.G, c.B);
著者
iPentecのメインプログラマー
C#, ASP.NET の開発がメイン、少し前まではDelphiを愛用
最終更新日: 2024-01-06
作成日: 2010-06-19
iPentec all rights reserverd.