龙空技术网

WinForm制作一个显示唯美的时钟,记录美好时刻

快乐鲤渔 1095

前言:

目前我们对“web时间控件”大概比较关切,同学们都需要了解一些“web时间控件”的相关资讯。那么小编同时在网上收集了一些关于“web时间控件””的相关文章,希望看官们能喜欢,小伙伴们快快来了解一下吧!

#头条创作挑战赛#

声明定义变量与初始化:

       //设置秒针,分钟,时针的长度        int s_p = 150, m_p = 110, h_p = 80;       private void Form1_Load(object sender, EventArgs e)        {            this.Text = "美美的时钟";        }
添时时间控件:
private void timer1_Tick(object sender, EventArgs e)        {            toolStripStatusLabel1.Text = DateTime.Now.ToString("yyyy-MM-dd hh:mm:ss");//获取当前系统时间并输出            toolStripStatusLabel1.BackColor = System.Drawing.Color.Pink;              toolStripStatusLabel1.ForeColor = System.Drawing.Color.Brown;               mycolock();//调用mycolock()函数        }

定义时钟函数:

        void mycolock()//定义时间函数        {            Graphics graphics = pictureBox1.CreateGraphics();//创建Graphics对象            graphics.Clear(Color.White);//清空            Pen mypen = new Pen(Color.Pink, 5);//设置为黑色,笔的粗细为2            graphics.DrawEllipse(mypen, pictureBox1.ClientRectangle);//画表盘            int h = DateTime.Now.Hour;//获取当前系统时间的小时            int m = DateTime.Now.Minute;//获取当前系统时间的分钟            int s = DateTime.Now.Second;//获取当前系统时间的秒            Point C = new Point(pictureBox1.ClientRectangle.Width / 2, pictureBox1.Height / 2);//获取圆心坐标            Point S = new Point((int)(C.X + (Math.Sin(6 * s * Math.PI / 180)) * s_p), (int)(C.Y - (Math.Cos(6 * s * Math.PI / 180)) * s_p));//获取秒针另一端点的坐标            Point M = new Point((int)(C.X + (Math.Sin(6 * m * Math.PI / 180)) * m_p), (int)(C.Y - (Math.Cos(6 * m * Math.PI / 180)) * m_p));//获取分针另一端点的坐标            Point H = new Point((int)(C.X + (Math.Sin(((30 * h) + m / 2) * Math.PI / 180)) * h_p), (int)(C.Y - (Math.Cos((30 * h + (m / 2)) * Math.PI / 180)) * h_p));//获取时针另一端点的坐标            graphics.DrawLine(mypen, C, S);//画秒针            mypen = new Pen(Color.Red, 9);//改变画笔的粗细,设置为3            graphics.DrawLine(mypen, C, M);//画分针            mypen = new Pen(Color.Green, 10);//改变画笔的粗细,设置为4            graphics.DrawLine(mypen, C, H);//画时针            //画刻度            GraphicsState state = graphics.Save();            state = graphics.Save();            int dialRadius = Math.Min(C.X, C.Y);//取最小值            Font hourFont = new Font("Arial", 15, FontStyle.Bold);//定义字号            Brush brush = new SolidBrush(Color.Red);            for (int i = 0; i < 60; i++)            {                string dian = ".";//设 . 代表刻度                if (i % 5 == 0)//每到五个刻度,不显示  .                {                    dian = "";                }                Point point = new Point(-6, -6); //当为(0,0)时全部数字偏右下移,故手动调整                double dd = Math.PI / 180 * i * (360 / 60); //每次转360/60度                float x = point.X + (float)((dialRadius - 12) * Math.Cos(dd));                float y = point.Y + (float)((dialRadius - 12) * Math.Sin(dd));                //画圈                graphics.DrawString(dian, hourFont, brush, x + 175, y + 160);            }            graphics.Restore(state);            state = graphics.Save();            for (int i = 0; i < 12; i++)            {                //已知圆中心占坐标(x0,y0),半径r,角度a0,则圆上任一点坐标(x,y)计算:                //x = x0 + r * cos(ao * 3.14 /180)                 //y = y0 + r * sin(ao * 3.14 /180)                 Point point = new Point(-6, -6); //当为(0,0)时全部数字偏右下移,故手动调整                double dd = Math.PI / 180 * i * (360 / 12); //每次转360/12度                float x = point.X + (float)((dialRadius - 12) * Math.Cos(dd));                float y = point.Y + (float)((dialRadius - 12) * Math.Sin(dd));                //因为是从顺时钟3点钟开始画,所以索引i需要加上3                int j = i + 3;                if (j > 12)                    j = j - 12;                //画圈并显示数字                graphics.DrawString(j.ToString(), hourFont, brush, x + 175, y + 160);            }            graphics.Restore(state);        }

标签: #web时间控件