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());
}
}
Related examples in the same category