利用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;
}
}
}
来源:博客园 作者:章立民 责编:豆豆技术应用
正在加载评论...