首页 > 编程 > C# > 正文

使用C#编程实现圆的移动

2023-05-16 12:36:04
字体:
来源:转载
供稿:网友

本例实现了编程移动一个圆:

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 OnPaintPaintEventArgs 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());
  }        
}

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表