Mega Code Archive

 
Categories / C# / 2D Graphics
 

Animates a circle

using System; using System.Drawing; using System.Threading; using System.Windows.Forms; public class AnimateFace : Form {   private int x = 10, y = 10;   private int width = 200, height = 200;   private Button suspend = new Button();   private Button resume = new Button();   private Button abort = new Button();   private Thread t;   public AnimateFace() {     BackColor = Color.White;     abort.Text = "Abort";     suspend.Text = "Suspend";     resume.Text = "Resume";       Controls.Add(suspend);     Controls.Add(resume);     Controls.Add(abort);     int w = 20;     suspend.Location = new Point(w, 240);     resume.Location = new Point(w += 10 + suspend.Width, 240);          abort.Location = new Point(w += 10 + resume.Width, 240);     abort.Click += new EventHandler(Abort_Click);     suspend.Click += new EventHandler(Suspend_Click);     resume.Click += new EventHandler(Resume_Click);     t = new Thread(new ThreadStart(Run));     t.Start();   }   protected void Abort_Click(object sender, EventArgs e) {     t.Abort();   }   protected void Suspend_Click(object sender, EventArgs e) {     t.Suspend();   }   protected void Resume_Click(object sender, EventArgs e) {     t.Resume();   }   protected override void OnPaint( PaintEventArgs e )   {     Graphics g = e.Graphics;     Pen green = new Pen(Color.Green, 3);       Brush red = new SolidBrush(Color.Red);     g.DrawEllipse(green, x, y, width, height);     base.OnPaint(e);   }   public void Run() {     int dx=9, dy=9;     while (true) {       for (int i = 0; i < 30; i++) {          x += dx;          y += dy;          width -= dx;          height -= dy;         Invalidate();         Thread.Sleep(30);       }       dx = -dx; dy = -dy;      }   }   public static void Main( ) {     Application.Run(new AnimateFace());   }         }