Csharp/C Sharp/Components/Marquee Label
Marquee Label Demo
<source lang="csharp"> using System; using System.Collections.Generic; using System.ruponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; public class Form1 : Form {
private MarqueeLabel marqueeLabel1; private System.Windows.Forms.GroupBox GroupBox1; private System.Windows.Forms.Label Label2; private System.Windows.Forms.TrackBar tbInterval; private System.Windows.Forms.Label Label1; private System.Windows.Forms.TrackBar tbAmount; public Form1() { InitializeComponent(); } private void tbAmount_ValueChanged(object sender, EventArgs e) { marqueeLabel1.ScrollPixelAmount = tbAmount.Value; } private void tbInterval_ValueChanged(object sender, EventArgs e) { marqueeLabel1.tmrScroll.Interval = tbInterval.Value; } private void InitializeComponent() { this.GroupBox1 = new System.Windows.Forms.GroupBox(); this.Label2 = new System.Windows.Forms.Label(); this.tbInterval = new System.Windows.Forms.TrackBar(); this.Label1 = new System.Windows.Forms.Label(); this.tbAmount = new System.Windows.Forms.TrackBar(); this.marqueeLabel1 = new MarqueeLabel(); this.GroupBox1.SuspendLayout(); ((System.ruponentModel.ISupportInitialize)(this.tbInterval)).BeginInit(); ((System.ruponentModel.ISupportInitialize)(this.tbAmount)).BeginInit(); this.SuspendLayout(); // // GroupBox1 // this.GroupBox1.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) | System.Windows.Forms.AnchorStyles.Left) | System.Windows.Forms.AnchorStyles.Right))); this.GroupBox1.Controls.Add(this.Label2); this.GroupBox1.Controls.Add(this.tbInterval); this.GroupBox1.Controls.Add(this.Label1); this.GroupBox1.Controls.Add(this.tbAmount); this.GroupBox1.FlatStyle = System.Windows.Forms.FlatStyle.System; this.GroupBox1.Location = new System.Drawing.Point(22, 177); this.GroupBox1.Name = "GroupBox1"; this.GroupBox1.Size = new System.Drawing.Size(336, 132); this.GroupBox1.TabIndex = 6; this.GroupBox1.TabStop = false; // // Label2 // this.Label2.Location = new System.Drawing.Point(12, 76); this.Label2.Name = "Label2"; this.Label2.Size = new System.Drawing.Size(80, 23); this.Label2.TabIndex = 6; this.Label2.Text = "Scroll Interval:"; // // tbInterval // this.tbInterval.Location = new System.Drawing.Point(96, 72); this.tbInterval.Maximum = 500; this.tbInterval.Minimum = 10; this.tbInterval.Name = "tbInterval"; this.tbInterval.Size = new System.Drawing.Size(228, 45); this.tbInterval.TabIndex = 5; this.tbInterval.TickFrequency = 10; this.tbInterval.Value = 100; this.tbInterval.ValueChanged += new System.EventHandler(this.tbInterval_ValueChanged); // // Label1 // this.Label1.Location = new System.Drawing.Point(12, 20); this.Label1.Name = "Label1"; this.Label1.Size = new System.Drawing.Size(80, 23); this.Label1.TabIndex = 4; this.Label1.Text = "Scroll Amount:"; // // tbAmount // this.tbAmount.Location = new System.Drawing.Point(96, 16); this.tbAmount.Maximum = 20; this.tbAmount.Name = "tbAmount"; this.tbAmount.Size = new System.Drawing.Size(228, 45); this.tbAmount.TabIndex = 3; this.tbAmount.Value = 10; this.tbAmount.ValueChanged += new System.EventHandler(this.tbAmount_ValueChanged); // // marqueeLabel1 // this.marqueeLabel1.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) | System.Windows.Forms.AnchorStyles.Right))); this.marqueeLabel1.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(255)))), ((int)(((byte)(255)))), ((int)(((byte)(192))))); this.marqueeLabel1.Font = new System.Drawing.Font("Verdana", 26.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.marqueeLabel1.ForeColor = System.Drawing.Color.Navy; this.marqueeLabel1.Location = new System.Drawing.Point(-2, 7); this.marqueeLabel1.Name = "marqueeLabel1"; this.marqueeLabel1.tmrScroll.Interval = 100; this.marqueeLabel1.Size = new System.Drawing.Size(384, 156); this.marqueeLabel1.TabIndex = 7; this.marqueeLabel1.Tag = ""; this.marqueeLabel1.DisplayText = "This scrolls!"; // // MarqueeTestForm // this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; this.ClientSize = new System.Drawing.Size(381, 322); this.Controls.Add(this.marqueeLabel1); this.Controls.Add(this.GroupBox1); this.Font = new System.Drawing.Font("Tahoma", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.Name = "MarqueeTestForm"; this.Text = "MarqueeTestForm"; this.GroupBox1.ResumeLayout(false); this.GroupBox1.PerformLayout(); ((System.ruponentModel.ISupportInitialize)(this.tbInterval)).EndInit(); ((System.ruponentModel.ISupportInitialize)(this.tbAmount)).EndInit(); this.ResumeLayout(false); } [STAThread] static void Main() { Application.EnableVisualStyles(); Application.Run(new Form1()); }
}
public class MarqueeLabel : Control { public string DisplayText; public int ScrollPixelAmount = 10; public System.Windows.Forms.Timer tmrScroll; private int position = 0; public MarqueeLabel() { this.tmrScroll = new System.Windows.Forms.Timer(new System.ruponentModel.Container()); this.tmrScroll.Tick += new System.EventHandler(this.tmrScroll_Tick); this.Size = new System.Drawing.Size(360, 104); DoubleBuffered = true; ResizeRedraw = true; tmrScroll.Enabled = true; } private void tmrScroll_Tick(object sender, System.EventArgs e) { position += ScrollPixelAmount; Invalidate(); } protected override void OnPaint(System.Windows.Forms.PaintEventArgs e) { base.OnPaint(e); if (position > Width) { position = -(int)e.Graphics.MeasureString(DisplayText, Font).Width; } e.Graphics.DrawString(DisplayText, Font, new SolidBrush(ForeColor), position, 0); } } </source>