Color Scroll Dialog Box

image_pdfimage_print

using System;
using System.Drawing;
using System.Windows.Forms;

class ColorScrollDialogBox: Form
{
Label[] alabelName = new Label[3];
Label[] alabelValue = new Label[3];
VScrollBar[] avscroll = new VScrollBar[3];

public event EventHandler Changed;

public ColorScrollDialogBox()
{
Color[] acolor = { Color.Red, Color.Green, Color.Blue };

for (int i = 0; i < 3; i++) { alabelName[i] = new Label(); alabelName[i].Parent = this; alabelName[i].ForeColor = acolor[i]; alabelName[i].Text = "&" + acolor[i].ToKnownColor(); alabelName[i].TextAlign = ContentAlignment.MiddleCenter; avscroll[i] = new VScrollBar(); avscroll[i].Parent = this; avscroll[i].SmallChange = 1; avscroll[i].LargeChange = 16; avscroll[i].Minimum = 0; avscroll[i].Maximum = 255 + avscroll[i].LargeChange - 1; avscroll[i].ValueChanged += new EventHandler(ScrollOnValueChanged); avscroll[i].TabStop = true; alabelValue[i] = new Label(); alabelValue[i].Parent = this; alabelValue[i].TextAlign = ContentAlignment.MiddleCenter; } OnResize(EventArgs.Empty); } public Color Color { get { return Color.FromArgb(avscroll[0].Value, avscroll[1].Value, avscroll[2].Value); } set { avscroll[0].Value = value.R; avscroll[1].Value = value.G; avscroll[2].Value = value.B; } } protected override void OnResize(EventArgs ea) { base.OnResize(ea); int cx = ClientSize.Width; int cy = ClientSize.Height; int cyFont = Font.Height; for (int i = 0; i < 3; i++) { alabelName[i].Location = new Point(i * cx / 3, cyFont / 2); alabelName[i].Size = new Size(cx / 3, cyFont); avscroll[i].Location = new Point((4 * i + 1) * cx / 12,2 * cyFont); avscroll[i].Size = new Size(cx / 6, cy - 4 * cyFont); alabelValue[i].Location = new Point(i * cx / 3,cy - 3 * cyFont / 2); alabelValue[i].Size = new Size(cx / 3, cyFont); } } void ScrollOnValueChanged(Object obj, EventArgs ea) { for (int i = 0; i < 3; i++) if((VScrollBar) obj == avscroll[i]) alabelValue[i].Text = avscroll[i].Value.ToString(); if (Changed != null) Changed(this, new EventArgs()); } } class ModelessColorScroll: Form { public static void Main() { Application.Run(new ModelessColorScroll()); } public ModelessColorScroll() { ColorScrollDialogBox dlg = new ColorScrollDialogBox(); dlg.Owner = this; dlg.Color = BackColor; dlg.Changed += new EventHandler(ColorScrollOnChanged); dlg.Show(); } void ColorScrollOnChanged(object obj, EventArgs ea) { ColorScrollDialogBox dlg = (ColorScrollDialogBox) obj; BackColor = dlg.Color; } } [/csharp]