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