Animation and double buffer : Animation « 2D Graphics « C# / C Sharp






Animation and double buffer

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

1.Object collisionObject collision
2.Button click action to move a ballButton click action to move a ball
3.Animates a circleAnimates a circle
4.Uses a thread to Animate a ballUses a thread to Animate a ball
5.Animates an imageAnimates an image
6.Timer based animationTimer based animation
7.No Flicker (Flicker Free) AnimationNo Flicker (Flicker Free) Animation
8.Animate ImageAnimate Image
9.Animate DemoAnimate Demo
10.Animate Image with ImageAnimator