Csharp/CSharp Tutorial/GUI Windows Forms/Double Buffering

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

Double Buffering

<source lang="csharp">using System; using System.Drawing; using System.Windows.Forms; using System.Drawing.Drawing2D; public class DoubleBuffering : Form {

   public DoubleBuffering()
   {
       InitializeComponent();
       image = Image.FromFile("YourFile.bmp");
       tmrRefresh.Start();
   }
   private int imageSize = 0;
   private Image image;
   private void tmrRefresh_Tick(object sender, EventArgs e)
   {
       imageSize++;
       this.Invalidate();
   }
   private void DoubleBuffering_Paint(object sender, PaintEventArgs e)
   {
       Graphics g;
       g = e.Graphics;
       g.SmoothingMode = SmoothingMode.HighQuality;
       g.FillRectangle(Brushes.Yellow, new Rectangle(new Point(0, 0),this.ClientSize));
       g.DrawImage(image, 50, 50, 50 + imageSize, 50 + imageSize);
   }
   private void chkUseDoubleBuffering_CheckedChanged(object sender, EventArgs e)
   {
       this.DoubleBuffered = chkUseDoubleBuffering.Checked;
   }
   [STAThread]
   static void Main()
   {
       Application.EnableVisualStyles();
       Application.SetCompatibleTextRenderingDefault(false);
       Application.Run(new DoubleBuffering());
   }
   private System.ruponentModel.IContainer components = null;
   private void InitializeComponent()
   {
       this.ruponents = new System.ruponentModel.Container();
       this.tmrRefresh = new System.Windows.Forms.Timer(this.ruponents);
       this.chkUseDoubleBuffering = new System.Windows.Forms.CheckBox();
       this.SuspendLayout();
       // 
       // tmrRefresh
       // 
       this.tmrRefresh.Tick += new System.EventHandler(this.tmrRefresh_Tick);
       // 
       // chkUseDoubleBuffering
       // 
       this.chkUseDoubleBuffering.AutoSize = true;
       this.chkUseDoubleBuffering.Location = new System.Drawing.Point(12, 3);
       this.chkUseDoubleBuffering.Size = new System.Drawing.Size(127, 17);
       this.chkUseDoubleBuffering.TabIndex = 0;
       this.chkUseDoubleBuffering.Text = "Use Double Buffering";
       this.chkUseDoubleBuffering.UseVisualStyleBackColor = true;
       this.chkUseDoubleBuffering.CheckedChanged += new System.EventHandler(this.chkUseDoubleBuffering_CheckedChanged);
       // 
       this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
       this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
       this.ClientSize = new System.Drawing.Size(299, 277);
       this.Controls.Add(this.chkUseDoubleBuffering);
       this.Text = "Double Buffering";
       this.Paint += new System.Windows.Forms.PaintEventHandler(this.DoubleBuffering_Paint);
       this.ResumeLayout(false);
       this.PerformLayout();
   }
   private System.Windows.Forms.Timer tmrRefresh;
   private System.Windows.Forms.CheckBox chkUseDoubleBuffering;

}</source>