Csharp/C Sharp/Components/Marquee Label

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

Marquee Label Demo

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);
    }
    }