编程也能够颇有趣,通过一个个的趣味小程序,可以更好的掌握编程技能。
一,终究效果文章源自微观生活(93wg.com)微观生活-https://93wg.com/11552.html
钟表效果文章源自微观生活(93wg.com)微观生活-https://93wg.com/11552.html
二,实现文章源自微观生活(93wg.com)微观生活-https://93wg.com/11552.html
1,创立一个VS工程,选择C文章源自微观生活(93wg.com)微观生活-https://93wg.com/11552.html
2,创立一个Form。文章源自微观生活(93wg.com)微观生活-https://93wg.com/11552.html
3,寻觅一个漂亮的钟表背景图。如果图片上有时、分、秒针,需要使用photoshop工具去掉。文章源自微观生活(93wg.com)微观生活-https://93wg.com/11552.html
4,在Form上绘制背景图。在Form1_Paint中添加如下代码。文章源自微观生活(93wg.com)微观生活-https://93wg.com/11552.html
//绘制背景文章源自微观生活(93wg.com)微观生活-https://93wg.com/11552.html
Bitmap bmp = new Bitmap(&文章源自微观生活(93wg.com)微观生活-https://93wg.com/11552.html
e.Graphics.DrawImage(bmp, new Rectangle(0,0,300,300));文章源自微观生活(93wg.com)微观生活-https://93wg.com/11552.html
钟表背景
5,在背景图上绘制时、分、秒针。
//绘制秒针
int sec = DateTime.Now.Second;
float angle = 90 - sec * 360 / 60.0f;
angle = 3.1415926f * angle / 180.0f;
PointF dstPoint = new PointF(150 + 125*(float)Math.Cos(angle),
150 - 125 * (float)Math.Sin(angle));
PointF srcPoint= new PointF(150- 20 * (float)Math.Cos(angle),
150 + 20 * (float)Math.Sin(angle));
e.Graphics.DrawLine(new Pen(new SolidBrush(Color.Red), 2),
srcPoint, dstPoint);
//绘制时针
int hour = DateTime.Now.Hour;
angle = 90 - hour * 360 / 12.0f-360*DateTime.Now.Minute/60/12;
angle = 3.1415926f * angle / 180.0f;
dstPoint = new PointF(150 + 80 * (float)Math.Cos(angle),
150 - 80 * (float)Math.Sin(angle));
srcPoint = new PointF(150 - 20 * (float)Math.Cos(angle),
150 + 20 * (float)Math.Sin(angle));
e.Graphics.DrawLine(new Pen(new SolidBrush(Color.Black), 4),
srcPoint, dstPoint);
//绘制分针
int min = DateTime.Now.Minute;
angle = 90 - min * 360 / 60.0f;
angle = 3.1415926f * angle / 180.0f;
dstPoint = new PointF(150 + 100 * (float)Math.Cos(angle),
150 - 100 * (float)Math.Sin(angle));
srcPoint = new PointF(150 - 20 * (float)Math.Cos(angle),
150 + 20 * (float)Math.Sin(angle));
e.Graphics.DrawLine(new Pen(new SolidBrush(Color.Black), 3),
srcPoint, dstPoint);
6,添加Timer控件,Interval设置为1000。在timer1_Tick中添加如下代码实现定时刷新。
this.Invalidate();
7,此时运行代码,发现钟表可能正常显示动画,然而有闪烁问题。需要在Form1_Load中添加this.DoubleBuffered = true,实现绘图双缓存,解决闪烁问题。
8,细心察看,表针显示有锯齿,在Form1_Paint中添加e.Graphics.SmoothingMode = SmoothingMode.HighQuality,实现高质量绘图,解决锯齿问题。
至此,钟表程序就完成为了,有任何问题,请评论中答复!
以上就是微观生活(93wg.com)关于“趣味编程-编写一个漂亮的钟表程序”的详细内容,希望对大家有所帮助!
评论