利用Visual C# 2005制作简单动画效果

http://tech.ddvip.com   2006年11月18日    社区交流

本文详细介绍利用Visual C# 2005制作简单动画效果

protected override void OnResize(EventArgs ea)
{
 if (optWink.Checked)
 {
  Graphics grfx = CreateGraphics();
  // 重绘窗体。
  this.Refresh();
 }
 else if (optBall.Checked)
 {
  Graphics grfx = CreateGraphics();
  grfx.Clear(BackColor);
  double dblRadius = Math.Min(ClientSize.Width / grfx.DpiX,ClientSize.Height / grfx.DpiY) / intBallSize;
  intBallRadiusX = (int)(dblRadius * grfx.DpiX);
  intBallRadiusY = (int)(dblRadius * grfx.DpiY);
  intBallMoveX = (int)(Math.Max(1, intBallRadiusX / intMoveSize));
  intBallMoveY = (int)(Math.Max(1, intBallRadiusY / intMoveSize));
  intBitmapWidthMargin = intBallMoveX;
  intBitmapHeightMargin = intBallMoveY;
  intBallBitmapWidth = 2 * (intBallRadiusX + intBitmapWidthMargin);
  intBallBitmapHeight = 2 * (intBallRadiusY + intBitmapHeightMargin);
  bitmap = new Bitmap(intBallBitmapWidth, intBallBitmapHeight);
  grfx = Graphics.FromImage(bitmap);
  grfx.Clear(BackColor);
  // 绘制球形。
  grfx.FillEllipse(Brushes.Red, new Rectangle(intBallMoveX,intBallMoveY, 2 * intBallRadiusX, 2 * intBallRadiusY));
  intBallPositionX = (int)(ClientSize.Width / 2);
  intBallPositionY = (int)(ClientSize.Height / 2);
 }
 else if (optText.Checked)
 {
  Graphics grfx = CreateGraphics();
  grfx.Clear(BackColor);
 }
}

  最后,利用定时器将图形连续重绘于窗体上,便产生了动画效果。程序代码撰写于定时器的 Tick 事件处理例程中,如下所示:

来源:博客园    作者:章立民    责编:豆豆技术应用

正在加载评论...