| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1033 人关注过本帖
标题:怎样子画出一个闹钟的模型?
只看楼主 加入收藏
维夏
Rank: 2
等 级:论坛游民
威 望:1
帖 子:32
专家分:11
注 册:2009-9-22
结帖率:50%
收藏
 问题点数:0 回复次数:3 
怎样子画出一个闹钟的模型?
想问一下就是怎样子在form中设计出一个闹钟的模型,就是用画布,但是不是只有代码的那种哦。拜托哦
搜索更多相关主题的帖子: 闹钟 模型 
2009-11-10 20:53
jedypjd
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:蒙面侠
威 望:9
帖 子:1096
专家分:4969
注 册:2009-7-27
收藏
得分:0 
程序代码:
           private void OnFormPaint(object sender, System.Windows.Forms.PaintEventArgs e)
           {
            Graphics g = e.Graphics;

            Pen myPen = new Pen(Color.Blue, 1); //创建一个自定义画笔对象

            //创建一个正方形rect
            int myRect_X = this.ClientRectangle.Right / 6;
            int myRect_Y = this.ClientRectangle.Bottom / 6;
            int myRect_Width;
            int myRect_Height;
            if (this.ClientRectangle.Height < this.ClientRectangle.Width)
            {

                myRect_Width = this.ClientRectangle.Height *2/ 3;
                myRect_Height = this.ClientRectangle.Height*2 / 3;
            }
            else
            {
                myRect_Width = this.ClientRectangle.Width / 2;
                myRect_Height = this.ClientRectangle.Width / 2;
            }


            Rectangle rect = new Rectangle(myRect_X, myRect_Y, myRect_Width, myRect_Height);

            g.DrawEllipse(myPen, rect); //画出一个内切于矩形rect的圆


            g.TranslateTransform(ClientSize.Width / 2, ClientSize.Height / 2, MatrixOrder.Append);

            DrawClock(e.Graphics);
        }

        private void DrawClock(Graphics g)
        {
            const double pai = Math.PI;
            Point center = new Point(0, 0);

            DateTime time = DateTime.Now;
            //读取时间;
            double secAng = 2.0 * pai * time.Second / 60.0;
            double minAng = 2.0 * pai * (time.Minute + time.Second / 60.0) / 60.0;
            double hourAng = 2.0 * pai * (time.Hour + time.Minute / 60.0) / 12.0;
            //各指针单位换算;
            int r = Math.Min(ClientSize.Width, ClientSize.Height) / 2;
            int secHandLength = (int)(0.6 * r);
            int minHandLength = (int)(0.4 * r);
            int hourHandLength = (int)(0.2 * r);
            //指针的长度定义;

            Point secHand = new Point((int)(secHandLength * Math.Sin(secAng)),
             (int)(-secHandLength * Math.Cos(secAng)));
            Point minHand = new Point((int)(minHandLength * Math.Sin(minAng)),
             (int)(-minHandLength * Math.Cos(minAng)));
            Point hourHand = new Point((int)(hourHandLength * Math.Sin(hourAng)),
             (int)(-hourHandLength * Math.Cos(hourAng)));
            //刷新指针;

            Pen SecPen = new Pen(Color.Red, 1);
            g.DrawLine(SecPen, center, secHand);

            Pen MinPen = new Pen(Color.RoyalBlue, 3);
            g.DrawLine(MinPen, center, minHand);

            Pen HourPen = new Pen(Color.CornflowerBlue, 5);
            g.DrawLine(HourPen, center, hourHand);
            //指针的样式定义;
        }

天涯无岁月,歧路有风尘,百年浑似醉,是非一片云
2009-11-10 22:39
维夏
Rank: 2
等 级:论坛游民
威 望:1
帖 子:32
专家分:11
注 册:2009-9-22
收藏
得分:0 
哈,谢谢楼上的解答了哦。
2009-11-11 09:41
athenalux
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:河北石家庄
等 级:小飞侠
威 望:8
帖 子:975
专家分:2514
注 册:2008-11-26
收藏
得分:0 
钟的表盘就不会自己画了,设定一个图片就可以了。因为它在运行时基本不变,时针,分针,秒针就要自己画了。

QQ:81704464
2009-11-16 08:05
快速回复:怎样子画出一个闹钟的模型?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.024823 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved