Csharp/C Sharp/Components/Marquee Label

Материал из .Net Framework эксперт
Перейти к: навигация, поиск

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>