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"形式の文字列が取得できます。
メジャーなカラーを引数に与えた場合は色名の文字列が取得できます。
![](https://resources.ipentec.com/document/image/csharp-color-to-htmlcolor-04)
この現象を回避し、常に"#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