前回のカラーコードを16進数表示するに続き、今回はその逆の16進数文字列からカラー値を求めるサンプルを紹介。
このサンプルでは以下の処理を行う。
- テキストボックスに16進数6桁のRGBの値を指定
- ボタンをクリックで、ボタンの背景色を指定カラーに変更
- ついでにボタンの文字列も色を反転
GUIデザインでは、Formにbutton2という名前のボタンと、textBox1という名前のテキストボックスを貼り付ける。
ソースコードは以下の通り。
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; namespace WindowsFormsApplication1 { public partial class Form2 : Form { public Form2() { InitializeComponent(); } private void button2_Click(object sender, EventArgs e) { // RGBカラーコード(16進数6桁文字列)を赤、緑、青に振り分け int r = Convert.ToInt32(textBox1.Text.Substring(0, 2), 16); int g = Convert.ToInt32(textBox1.Text.Substring(2, 2), 16); int b = Convert.ToInt32(textBox1.Text.Substring(4, 2), 16); // RGBの値からColorの値を求める Color col = Color.FromArgb(r, g, b); // ボタン背景色へ反映 button2.BackColor = col; // ボタンの文字を反転カラーに変更(RGBをそれぞれ反転) button2.ForeColor = Color.FromArgb(0xFF - col.R, 0xFF - col.G, 0xFF - col.B); } } }
実行後、テキストボックスにRGB値(000000~FFFFFF)を指定し、ボタン押下すると、ボタンの色が変わる。