Mega Code Archive

 
Categories / C# / 2D Graphics
 

Animate Demo

/* GDI+ Programming in C# and VB .NET by Nick Symmonds Publisher: Apress ISBN: 159059035X */ using System; using System.Drawing; using System.Drawing.Drawing2D; using System.Drawing.Imaging; using System.Collections; using System.ComponentModel; using System.Windows.Forms; using System.Data; namespace Animate_c {     public class AnimateDemo : System.Windows.Forms.Form     {     private System.Windows.Forms.Button cmdGo;         /// <summary>         /// Required designer variable.         /// </summary>         ///      Bitmap RotatingBlocks;     Point DrawHere;     Rectangle InvalidRect;     bool InProcess = false;     private System.Windows.Forms.Button cmdStop;         private System.ComponentModel.Container components = null;         public AnimateDemo()         {           InitializeComponent();                RotatingBlocks = new Bitmap("blocks.gif");           DrawHere = new Point(10, 10);           InvalidRect = new Rectangle(DrawHere, RotatingBlocks.Size);                this.SetStyle(ControlStyles.AllPaintingInWmPaint,true);           this.SetStyle(ControlStyles.DoubleBuffer,true);           cmdStop.Enabled = false;        }         protected override void Dispose( bool disposing )         {             if( disposing )             {                 if (components != null)                  {                     components.Dispose();                 }             }             RotatingBlocks.Dispose();             base.Dispose( disposing );         }         #region Windows Form Designer generated code         /// <summary>         /// Required method for Designer support - do not modify         /// the contents of this method with the code editor.         /// </summary>         private void InitializeComponent()         {       this.cmdGo = new System.Windows.Forms.Button();       this.cmdStop = new System.Windows.Forms.Button();       this.SuspendLayout();       //        // cmdGo       //        this.cmdGo.Location = new System.Drawing.Point(160, 120);       this.cmdGo.Name = "cmdGo";       this.cmdGo.Size = new System.Drawing.Size(64, 32);       this.cmdGo.TabIndex = 0;       this.cmdGo.Text = "Animate";       this.cmdGo.Click += new System.EventHandler(this.cmdGo_Click);       //        // cmdStop       //        this.cmdStop.Location = new System.Drawing.Point(240, 120);       this.cmdStop.Name = "cmdStop";       this.cmdStop.Size = new System.Drawing.Size(56, 32);       this.cmdStop.TabIndex = 1;       this.cmdStop.Text = "Stop";       this.cmdStop.Click += new System.EventHandler(this.cmdStop_Click);       //        // AnimateDemo       //        this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);       this.ClientSize = new System.Drawing.Size(312, 157);       this.Controls.AddRange(new System.Windows.Forms.Control[] {                                                                   this.cmdStop,                                                                   this.cmdGo});       this.MaximizeBox = false;       this.MinimizeBox = false;       this.Name = "AnimateDemo";       this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;       this.Text = "AnimateDemo";       this.Load += new System.EventHandler(this.AnimateDemo_Load);       this.ResumeLayout(false);     }         #endregion         /// <summary>         /// The main entry point for the application.         /// </summary>         [STAThread]         static void Main()          {             Application.Run(new AnimateDemo());         }     private void AnimateDemo_Load(object sender, System.EventArgs e)     {     }     private void OnFrameChanged(object o, EventArgs e)      {       //Force a call to the Paint event handler.       this.Invalidate(InvalidRect);     }     protected override void OnPaint(PaintEventArgs e)      {       if ( !InProcess )         return;              //Get the next block ready to display.       ImageAnimator.UpdateFrames(RotatingBlocks);       //Draw the next frame in the RotatingBlocks animation.       e.Graphics.DrawImage(RotatingBlocks, DrawHere);     }     private void cmdGo_Click(object sender, System.EventArgs e)     {       if (!InProcess)        {         if ( ImageAnimator.CanAnimate(RotatingBlocks) )         {           //Begin the animation only once.           ImageAnimator.Animate(RotatingBlocks,                                  new EventHandler(this.OnFrameChanged));           InProcess = true;           cmdGo.Enabled = false;           cmdStop.Enabled = true;         }       }     }     private void cmdStop_Click(object sender, System.EventArgs e)     {       ImageAnimator.StopAnimate(RotatingBlocks,                                  new EventHandler(this.OnFrameChanged));       InProcess = false;       cmdGo.Enabled = true;       cmdStop.Enabled = false;     }   } }                     Animate-c.zip( 6 k)