扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
最后,利用定时器将图形连续重绘于窗体上,便产生了动画效果。程序代码撰写于定时器的 Tick 事件处理例程中,如下所示:
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; } } } |
如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。
现场直击|2021世界人工智能大会
直击5G创新地带,就在2021MWC上海
5G已至 转型当时——服务提供商如何把握转型的绝佳时机
寻找自己的Flag
华为开发者大会2020(Cloud)- 科技行者