習作で作ったカラーバーのサンプルコード。
カラーコードのイテレータ
namespace Color_Bar { class ColorCodeIterator { private readonly Int32[] Fcolor_list = {0x0000FF, 0xFF0000, 0x00FF00, 0x808080, 0xffffff, 0x000000}; private int Findex = 0; public ColorCodeIterator() { this.first(); } /// <summary> /// カラー配列の先頭に移動 /// </summary> /// <returns>配列先頭のカラーコード</returns> public Int32 first() { Findex = 0; return this.value; } /// <summary> /// カラー配列の次の値を返す。配列の末尾まで達したら先頭を返す /// </summary> /// <returns>次のカラーコード</returns> public Int32 next() { Findex++; if (Findex < Fcolor_list.Length) { return this.value; } else { return this.first(); } } /// <summary> /// カラー配列の前の値を返す。配列の先頭に達したら末尾を返す /// </summary> /// <returns>前のカラーコード</returns> public Int32 prev() { Findex--; if (Findex < 0){ Findex = Fcolor_list.Length - 1; } return this.value; } /// <summary> /// カラー配列の現在値を取得 /// </summary> public Int32 value { get { return Fcolor_list[Findex]; } } } }
フォーム本体
namespace Color_Bar { public partial class Form1 : Form { private ColorCodeIterator Fcolor; public Form1() { InitializeComponent(); } private void Form1_Load(object sender, EventArgs e) { Fcolor = new ColorCodeIterator(); label1.Text = "0x" + Convert.ToString(Fcolor.value, 16); this.ChangeBackColor(Fcolor.value); this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None; this.WindowState = FormWindowState.Maximized; } private void Form1_MouseClick(object sender, MouseEventArgs e) { switch(e.Button) { case System.Windows.Forms.MouseButtons.Left: Fcolor.next(); break; case System.Windows.Forms.MouseButtons.Right: Fcolor.prev(); break; } label1.Text = "0x" + Convert.ToString(Fcolor.value, 16); this.ChangeBackColor(Fcolor.value); } private void ChangeBackColor(Int32 aValue) { this.BackColor = Color.FromArgb(0xFF, Color.FromArgb(aValue)); } private void Form1_KeyUp(object sender, KeyEventArgs e) { if (e.KeyCode == Keys.Escape) { Application.Exit(); } } } }
ホントDelphiちっくだけど相変わらずネームスペースが長い!!