Animation and double buffer
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; public class Form1 : Form { private bool isShrinking = false; private int extraSize = 0; private System.Windows.Forms.Timer tmrRefresh; private System.Windows.Forms.CheckBox chkDoubleBuffer; public Form1() { InitializeComponent(); tmrRefresh.Start(); } private void tmrRefresh_Tick(object sender, System.EventArgs e) { if (isShrinking) extraSize--; else extraSize++; if (extraSize > 500) isShrinking = true; else if (extraSize < 1) isShrinking = false; this.Invalidate(); } private void DoubleBuffering_Paint(object sender, System.Windows.Forms.PaintEventArgs e) { this.DoubleBuffered = chkDoubleBuffer.Checked; Graphics g = e.Graphics; g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality; Pen drawingPen = new Pen(Color.Black, 10); g.FillRectangle(Brushes.White, new Rectangle(new Point(0, 0), this.ClientSize)); g.DrawRectangle(drawingPen, 50, 50, 50 + extraSize, 50 + extraSize); } private void InitializeComponent() { this.tmrRefresh = new System.Windows.Forms.Timer(new System.ComponentModel.Container()); this.chkDoubleBuffer = new System.Windows.Forms.CheckBox(); this.SuspendLayout(); // // tmrRefresh // this.tmrRefresh.Interval = 1; this.tmrRefresh.Tick += new System.EventHandler(this.tmrRefresh_Tick); // // chkDoubleBuffer // this.chkDoubleBuffer.BackColor = System.Drawing.Color.White; this.chkDoubleBuffer.Location = new System.Drawing.Point(12, 12); this.chkDoubleBuffer.Name = "chkDoubleBuffer"; this.chkDoubleBuffer.Size = new System.Drawing.Size(336, 16); this.chkDoubleBuffer.TabIndex = 2; this.chkDoubleBuffer.Text = "Use Double Buffering"; this.chkDoubleBuffer.UseVisualStyleBackColor = false; // // DoubleBuffering // this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; this.ClientSize = new System.Drawing.Size(422, 373); this.Controls.Add(this.chkDoubleBuffer); this.Name = "DoubleBuffering"; this.Text = "Form1"; this.Paint += new System.Windows.Forms.PaintEventHandler(this.DoubleBuffering_Paint); this.ResumeLayout(false); } [STAThread] static void Main() { Application.EnableVisualStyles(); Application.Run(new Form1()); } }