Csharp/CSharp Tutorial/GUI Windows Forms/TrackBar
Содержание
Color Tracker
<source lang="csharp">using System; using System.Drawing; using System.Collections; using System.ruponentModel; using System.Windows.Forms; using System.Data; public class TrackColorForm : System.Windows.Forms.Form {
private System.ruponentModel.Container components = null; private System.Windows.Forms.Label label4; private System.Windows.Forms.Label label2; private System.Windows.Forms.TrackBar blueTrackBar; private System.Windows.Forms.Label label3; private System.Windows.Forms.TrackBar greenTrackBar; private System.Windows.Forms.TrackBar redTrackBar; private System.Windows.Forms.Label label1; private System.Windows.Forms.Panel panel1; private System.Windows.Forms.Label lblCurrColor; private System.Windows.Forms.PictureBox colorBox; public TrackColorForm() { InitializeComponent(); redTrackBar.Value = 100; greenTrackBar.Value = 255; blueTrackBar.Value = 0; UpdateColor(); } protected override void Dispose( bool disposing ) { if( disposing ) { if (components != null) { components.Dispose(); } } base.Dispose( disposing ); } private void InitializeComponent() { this.label4 = new System.Windows.Forms.Label(); this.label1 = new System.Windows.Forms.Label(); this.label3 = new System.Windows.Forms.Label(); this.label2 = new System.Windows.Forms.Label(); this.panel1 = new System.Windows.Forms.Panel(); this.blueTrackBar = new System.Windows.Forms.TrackBar(); this.greenTrackBar = new System.Windows.Forms.TrackBar(); this.redTrackBar = new System.Windows.Forms.TrackBar(); this.colorBox = new System.Windows.Forms.PictureBox(); this.lblCurrColor = new System.Windows.Forms.Label(); this.panel1.SuspendLayout(); ((System.ruponentModel.ISupportInitialize)(this.blueTrackBar)).BeginInit(); ((System.ruponentModel.ISupportInitialize)(this.greenTrackBar)).BeginInit(); ((System.ruponentModel.ISupportInitialize)(this.redTrackBar)).BeginInit(); this.SuspendLayout(); // // label4 // this.label4.Font = new System.Drawing.Font("Microsoft Sans Serif", 15F); this.label4.Location = new System.Drawing.Point(16, 88); this.label4.Name = "label4"; this.label4.Size = new System.Drawing.Size(240, 32); this.label4.TabIndex = 9; this.label4.Text = "Pick your slider here:"; // // label1 // this.label1.Font = new System.Drawing.Font("Arial", 15F); this.label1.Location = new System.Drawing.Point(24, 16); this.label1.Name = "label1"; this.label1.Size = new System.Drawing.Size(88, 32); this.label1.TabIndex = 4; this.label1.Text = "Red:"; // // label3 // this.label3.Font = new System.Drawing.Font("Arial", 15F); this.label3.Location = new System.Drawing.Point(24, 104); this.label3.Name = "label3"; this.label3.Size = new System.Drawing.Size(88, 32); this.label3.TabIndex = 6; this.label3.Text = "Blue:"; // // label2 // this.label2.Font = new System.Drawing.Font("Arial", 15F); this.label2.Location = new System.Drawing.Point(24, 64); this.label2.Name = "label2"; this.label2.Size = new System.Drawing.Size(88, 32); this.label2.TabIndex = 5; this.label2.Text = "Green:"; // // panel1 // this.panel1.AutoScroll = true; this.panel1.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; this.panel1.Controls.Add(this.label2); this.panel1.Controls.Add(this.blueTrackBar); this.panel1.Controls.Add(this.label3); this.panel1.Controls.Add(this.greenTrackBar); this.panel1.Controls.Add(this.redTrackBar); this.panel1.Controls.Add(this.label1); this.panel1.Location = new System.Drawing.Point(16, 120); this.panel1.Name = "panel1"; this.panel1.Size = new System.Drawing.Size(384, 88); this.panel1.TabIndex = 8; // // blueTrackBar // this.blueTrackBar.Location = new System.Drawing.Point(120, 96); this.blueTrackBar.Maximum = 255; this.blueTrackBar.Name = "blueTrackBar"; this.blueTrackBar.Size = new System.Drawing.Size(240, 45); this.blueTrackBar.TabIndex = 1; this.blueTrackBar.TickFrequency = 5; this.blueTrackBar.TickStyle = System.Windows.Forms.TickStyle.TopLeft; this.blueTrackBar.Scroll += new System.EventHandler(this.blueTrackBar_Scroll); // // greenTrackBar // this.greenTrackBar.Location = new System.Drawing.Point(120, 56); this.greenTrackBar.Maximum = 255; this.greenTrackBar.Name = "greenTrackBar"; this.greenTrackBar.Size = new System.Drawing.Size(240, 45); this.greenTrackBar.TabIndex = 3; this.greenTrackBar.TickFrequency = 5; this.greenTrackBar.TickStyle = System.Windows.Forms.TickStyle.TopLeft; this.greenTrackBar.Scroll += new System.EventHandler(this.greenTrackBar_Scroll); // // redTrackBar // this.redTrackBar.Location = new System.Drawing.Point(120, 16); this.redTrackBar.Maximum = 255; this.redTrackBar.Name = "redTrackBar"; this.redTrackBar.Size = new System.Drawing.Size(232, 45); this.redTrackBar.TabIndex = 2; this.redTrackBar.TickFrequency = 5; this.redTrackBar.TickStyle = System.Windows.Forms.TickStyle.TopLeft; this.redTrackBar.Scroll += new System.EventHandler(this.redTrackBar_Scroll); // // colorBox // this.colorBox.BackColor = System.Drawing.Color.Blue; this.colorBox.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D; this.colorBox.Location = new System.Drawing.Point(16, 16); this.colorBox.Name = "colorBox"; this.colorBox.Size = new System.Drawing.Size(384, 56); this.colorBox.TabIndex = 0; this.colorBox.TabStop = false; // // lblCurrColor // this.lblCurrColor.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; this.lblCurrColor.Font = new System.Drawing.Font("Microsoft Sans Serif", 14F); this.lblCurrColor.Location = new System.Drawing.Point(16, 224); this.lblCurrColor.Name = "lblCurrColor"; this.lblCurrColor.Size = new System.Drawing.Size(392, 40); this.lblCurrColor.TabIndex = 7; this.lblCurrColor.Text = "label4"; // // TrackColorForm // this.AutoScaleBaseSize = new System.Drawing.Size(5, 13); this.ClientSize = new System.Drawing.Size(424, 285); this.Controls.Add(this.label4); this.Controls.Add(this.panel1); this.Controls.Add(this.lblCurrColor); this.Controls.Add(this.colorBox); this.panel1.ResumeLayout(false); ((System.ruponentModel.ISupportInitialize)(this.blueTrackBar)).EndInit(); ((System.ruponentModel.ISupportInitialize)(this.greenTrackBar)).EndInit(); ((System.ruponentModel.ISupportInitialize)(this.redTrackBar)).EndInit(); this.ResumeLayout(false); } [STAThread] static void Main() { Application.Run(new TrackColorForm()); } protected void greenTrackBar_Scroll (object sender, System.EventArgs e) { UpdateColor(); } protected void redTrackBar_Scroll (object sender, System.EventArgs e) { UpdateColor(); } protected void blueTrackBar_Scroll (object sender, System.EventArgs e) { UpdateColor(); } private void UpdateColor() { Color c = Color.FromArgb(redTrackBar.Value, greenTrackBar.Value, blueTrackBar.Value); colorBox.BackColor = c; lblCurrColor.Text = string.Format("Current color is: ({0}, {1}, {2})", redTrackBar.Value, greenTrackBar.Value,blueTrackBar.Value); }
}</source>
TrackBar on value changed event handler
<source lang="csharp">using System; using System.Drawing; using System.Windows.Forms; public class TrackBars : Form {
Panel pnl; PictureBox pb; TrackBar htbar; TrackBar vtbar; public TrackBars() { Size = new Size(500,520); Image img = Image.FromFile("YourFile.bmp"); pnl = new Panel(); pnl.Parent = this; pnl.BorderStyle = BorderStyle.FixedSingle; pnl.Size = new Size(400,400); pnl.Location = new Point(10,10); pb = new PictureBox(); pb.Parent = pnl; pb.Size = new Size(200, 200); pb.Location = new Point((pnl.Size.Width / 2) - (pb.Size.Width / 2), (pnl.Size.Height / 2) - (pb.Size.Height /2)); pb.BorderStyle = BorderStyle.FixedSingle; pb.SizeMode = PictureBoxSizeMode.StretchImage; pb.Image = img; htbar = new TrackBar(); htbar.Parent = this; htbar.Orientation = Orientation.Horizontal; htbar.Size = new Size(pnl.Width, 10); htbar.Location = new Point(pnl.Left, pnl.Bottom + 25); htbar.TickStyle = TickStyle.BottomRight; htbar.TickFrequency = 25; htbar.Minimum = 25; htbar.Maximum = 400; htbar.SmallChange = 10; htbar.LargeChange = 25; htbar.BackColor = Color.Yellow; htbar.Value = pb.Width; htbar.ValueChanged += new EventHandler(htbar_OnValueChanged); vtbar = new TrackBar(); vtbar.Parent = this; vtbar.Orientation = Orientation.Vertical; vtbar.Size = new Size(25, pnl.Height); vtbar.Location = new Point(pnl.Right + 25, pnl.Top); vtbar.TickStyle = TickStyle.Both; vtbar.SetRange(25,400); vtbar.SmallChange = 10; vtbar.LargeChange = 50; vtbar.TickFrequency = vtbar.Maximum / 20; vtbar.BackColor = Color.Pink; vtbar.Value = pb.Height; vtbar.ValueChanged += new EventHandler(vtbar_OnValueChanged); } private void htbar_OnValueChanged(object sender, EventArgs e) { pb.Size = new Size(htbar.Value, pb.Height); } private void vtbar_OnValueChanged(object sender, EventArgs e) { pb.Size = new Size(pb.Width, vtbar.Value); } static void Main() { Application.Run(new TrackBars()); }
}</source>
TrackBar: SmallChange, LargeChange, Minimum, Maximum
<source lang="csharp">using System; using System.Drawing; using System.Windows.Forms;
class ColorTrackBar: Form {
Panel panel; Label[] alabelName = new Label[3]; Label[] alabelValue = new Label[3]; TrackBar[] atrackbar = new TrackBar[3]; public static void Main() { Application.Run(new ColorTrackBar()); } public ColorTrackBar() { Color[] acolor = { Color.Red, Color.Green, Color.Blue }; panel = new Panel(); panel.Parent = this; panel.Location = new Point(0, 0); panel.BackColor = Color.White; for (int i = 0; i < 3; i++) { alabelName[i] = new Label(); alabelName[i].Parent = panel; alabelName[i].ForeColor = acolor[i]; alabelName[i].Text = "&" + acolor[i].ToKnownColor(); alabelName[i].TextAlign = ContentAlignment.MiddleCenter; atrackbar[i] = new TrackBar(); atrackbar[i].Parent = panel; atrackbar[i].Orientation = Orientation.Vertical; atrackbar[i].BackColor = acolor[i]; atrackbar[i].SmallChange = 1; atrackbar[i].LargeChange = 16; atrackbar[i].Minimum = 0; atrackbar[i].Maximum = 255; atrackbar[i].TickFrequency = 16; atrackbar[i].ValueChanged += new EventHandler(TrackBarOnValueChanged); alabelValue[i] = new Label(); alabelValue[i].Parent = panel; alabelValue[i].TextAlign = ContentAlignment.MiddleCenter; } Color color = BackColor; atrackbar[0].Value = color.R; // Generates ValueChanged event atrackbar[1].Value = color.G; atrackbar[2].Value = color.B; OnResize(EventArgs.Empty); } protected override void OnResize(EventArgs ea) { base.OnResize(ea); int cx = ClientSize.Width; int cy = ClientSize.Height; int cyFont = Font.Height; panel.Size = new Size(cx / 2, cy); for (int i = 0; i < 3; i++) { alabelName[i].Location = new Point(i * cx / 6, cyFont / 2); alabelName[i].Size = new Size(cx / 6, cyFont); atrackbar[i].Height = cy - 4 * cyFont; atrackbar[i].Location = new Point((1 + 2 * i) * cx / 12 - atrackbar[i].Width / 2, 2 * cyFont); alabelValue[i].Location = new Point(i * cx / 6, cy - 3 * cyFont / 2); alabelValue[i].Size = new Size(cx / 6, cyFont); } } void TrackBarOnValueChanged(object obj, EventArgs ea) { for (int i = 0; i < 3; i++) if((TrackBar) obj == atrackbar[i]) alabelValue[i].Text = atrackbar[i].Value.ToString(); BackColor = Color.FromArgb(atrackbar[0].Value, atrackbar[1].Value, atrackbar[2].Value); }
}</source>
TractBar Large/Small range
<source lang="csharp">using System; using System.Drawing; using System.Windows.Forms; public class TrackBars : Form {
Panel pnl; PictureBox pb; TrackBar htbar; TrackBar vtbar; public TrackBars() { Size = new Size(500,520); Image img = Image.FromFile("YourFile.bmp"); pnl = new Panel(); pnl.Parent = this; pnl.BorderStyle = BorderStyle.FixedSingle; pnl.Size = new Size(400,400); pnl.Location = new Point(10,10); pb = new PictureBox(); pb.Parent = pnl; pb.Size = new Size(200, 200); pb.Location = new Point((pnl.Size.Width / 2) - (pb.Size.Width / 2), (pnl.Size.Height / 2) - (pb.Size.Height /2)); pb.BorderStyle = BorderStyle.FixedSingle; pb.SizeMode = PictureBoxSizeMode.StretchImage; pb.Image = img; htbar = new TrackBar(); htbar.Parent = this; htbar.Orientation = Orientation.Horizontal; htbar.Size = new Size(pnl.Width, 10); htbar.Location = new Point(pnl.Left, pnl.Bottom + 25); htbar.TickStyle = TickStyle.BottomRight; htbar.TickFrequency = 25; htbar.Minimum = 25; htbar.Maximum = 400; htbar.SmallChange = 10; htbar.LargeChange = 25; htbar.BackColor = Color.Yellow; htbar.Value = pb.Width; htbar.ValueChanged += new EventHandler(htbar_OnValueChanged); vtbar = new TrackBar(); vtbar.Parent = this; vtbar.Orientation = Orientation.Vertical; vtbar.Size = new Size(25, pnl.Height); vtbar.Location = new Point(pnl.Right + 25, pnl.Top); vtbar.TickStyle = TickStyle.Both; vtbar.SetRange(25,400); vtbar.SmallChange = 10; vtbar.LargeChange = 50; vtbar.TickFrequency = vtbar.Maximum / 20; vtbar.BackColor = Color.Pink; vtbar.Value = pb.Height; vtbar.ValueChanged += new EventHandler(vtbar_OnValueChanged); } private void htbar_OnValueChanged(object sender, EventArgs e) { pb.Size = new Size(htbar.Value, pb.Height); } private void vtbar_OnValueChanged(object sender, EventArgs e) { pb.Size = new Size(pb.Width, vtbar.Value); } static void Main() { Application.Run(new TrackBars()); }
}</source>