Csharp/CSharp Tutorial/GUI Windows Forms/Double Buffering
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>