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

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

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

private void tmrAnimation_Tick(object sender, EventArgs e)
{
 // 眨眼效果。
 if(optWink.Checked)
 {
  Graphics grfx = CreateGraphics();
  // 将数组中之图形绘制在画面上。
  grfx.DrawImage(arrImages[intCurrentImage],(int)(
(ClientSize.Width - arrImages[intCurrentImage].Width) / 2),
(int)((ClientSize.Height - arrImages[intCurrentImage].Height) / 2),
arrImages[intCurrentImage].Width,arrImages[intCurrentImage].Height);
  intCurrentImage += j;
  if(intCurrentImage == 3)
  {
   j = -1;
  }
  else if(intCurrentImage == 0)
  {
   j = 1;
  }
 }
 else if(optBall.Checked) // 弹跳的球。
 {
  Graphics grfx = CreateGraphics();
  // 将球绘制在画面上。
  grfx.DrawImage(bitmap,(int)(intBallPositionX - intBallBitmapWidth / 2),
(int)(intBallPositionY - intBallBitmapHeight / 2),
intBallBitmapWidth, intBallBitmapHeight);
  // 移动球的位置。
  intBallPositionX += intBallMoveX;
  intBallPositionY += intBallMoveY;
  // 球碰到左右边界。
  if(intBallPositionX + intBallRadiusX >= ClientSize.Width || intBallPositionX - intBallRadiusX <= 0)
  {
   intBallMoveX = -intBallMoveX;
   SystemSounds.Beep.Play();
  }
  // 球碰到上下边界。
  if(intBallPositionY + intBallRadiusY >= ClientSize.Height || intBallPositionY - intBallRadiusY <= 75)
  {
   intBallMoveY = -intBallMoveY;
   SystemSounds.Beep.Play();
  }
 }
 else if (optText.Checked) // 闪动文字。
 {
  Graphics grfx = CreateGraphics();
  // 设定文字的字型与大小。
  Font font = new Font("Microsoft Sans Serif", 48, FontStyle.Bold, GraphicsUnit.Point);
  // 设定要显示的文字。
  string strText = "章立民研究室";
  SizeF sizfText = new SizeF(grfx.MeasureString(strText, font));
  // X坐标与Y坐标的配对。
  PointF ptfTextStart = new PointF((float)(ClientSize.Width - sizfText.Width) / 2,
(float)(ClientSize.Height - sizfText.Height) / 2);
  PointF ptfGradientStart = new PointF(0, 0);
  PointF ptfGradientEnd = new PointF(intCurrentGradientShift, 200);
  // 设定笔刷。
  LinearGradientBrush grBrush = new LinearGradientBrush(ptfGradientStart, ptfGradientEnd, Color.Blue, BackColor);
  // 将文字绘制在画面上。
  grfx.DrawString(strText, font, grBrush, ptfTextStart);
  // 以不同的坐标绘制文字,造成闪动效果。
  intCurrentGradientShift += intGradiantStep;
  if (intCurrentGradientShift == 500)
  {
   intGradiantStep = -5;
  }
  else if (intCurrentGradientShift == -50)
  {
   intGradiantStep = 5;
  }
 }
}

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

正在加载评论...