C#如何实现时钟表盘(云服务器、云主机、高防IP、高防服务器、香港服务器、美国服务器,开发技术)

时间:2024-04-28 02:17:05 作者 : 石家庄SEO 分类 : 开发技术
  • TAG :

一、设计如下图界面

按键“打开时钟”按下后会出现表盘,按键“退出”按下后会关闭页面。

C#如何实现时钟表盘

二、多线程初始化和函数初始化

publicForm1(){InitializeComponent();generateBtn();Control.CheckForIllegalCrossThreadCalls=false;}

对按键 重命名

voidgenerateBtn(){Buttonbt1=button1;bt1.Text="打开时钟";Buttonbt2=button2;bt2.Text="退出";}

三、按键“打开时钟”按下

打开多线程,运行时钟相关程序。

privatevoidbutton1_Click(objectsender,EventArgse){ThreadStartthStart=newThreadStart(Start);Threadthread=newThread(thStart);thread.Priority=ThreadPriority.Highest;thread.IsBackground=true;//关闭窗体继续执行thread.Start();}

四、时钟主函数

给定表盘圆心坐标和半径,初始化一些画笔颜色和画刷大小以及一些变量,通过半径和圆心计算表盘上各点的坐标,读取并记录电脑上的时间戳,计算时针分针秒针的角度,通过之前计算结果绘制表盘。

每隔一秒(检测读取到的时、分、秒发生变化)擦除一遍页面,重新计算坐标点,重新绘制新的表盘。

privatevoidStart(){vargraph=this.pictureBox1.CreateGraphics();double[]Sin=newdouble[60];double[]Cos=newdouble[60];float[]x=newfloat[60];float[]y=newfloat[60];float[]x1=newfloat[60];float[]y1=newfloat[60];float[]x2=newfloat[60];float[]y2=newfloat[60];float[]x3=newfloat[60];float[]y3=newfloat[60];float[]x4=newfloat[60];float[]y4=newfloat[60];floatx5=0;floaty5=0;floatr0=0;stringtradeTime=DateTime.Now.ToString("hhmmss",System.Globalization.DateTimeFormatInfo.InvariantInfo);varpencoler1=newPen(Color.Red);varpencoler2=newPen(Color.Yellow);varpencoler3=newPen(Color.Black);varpensize=newPen(Color.Black,3);varpensize1=newPen(Color.Red,2);varpensize2=newPen(Color.Black,4);inti;intz=0;intx0=500;inty0=300;intr=300;intsec,min,hour;intsecn=0,minn=0,hourn=0;intTime;for(i=0;i<60;i++){//if(i==0||i==30||i==15||i==45){continue;}doubled=(((i*6)-90)*3.1415)/180;Sin[i]=Math.Sin(d);Cos[i]=Math.Cos(d);y[i]=(float)(Sin[i]*r)+y0;x[i]=(float)(Cos[i]*r)+x0;x1[i]=x[i]-(x[i]-x0)/10;y1[i]=y[i]-(y[i]-y0)/10;x2[i]=x[i]-(x[i]-x0)/7-r/20;y2[i]=y[i]-(y[i]-y0)/7-r/20;x3[i]=x[i]-(x[i]-x0)/20;y3[i]=y[i]-(y[i]-y0)/20;x4[i]=x[i]-(x[i]-x0)/2;y4[i]=y[i]-(y[i]-y0)/2;x5=x0-r/40;y5=y0-r/40;r0=r/20;}Brushpenbrush=newSolidBrush(Color.Black);Fontpenfont=newFont("华文行楷",r/20);for(;;){tradeTime=DateTime.Now.ToString("hhmmss",System.Globalization.DateTimeFormatInfo.InvariantInfo);Time=int.Parse(tradeTime);sec=Time%100;min=Time/100%100;hour=Time/10000;if(hour==12){hour=0;}if(secn!=sec||minn!=min||hourn!=hour){//MessageBox.Show(sec.ToString());graph.Clear(this.BackColor);//graph.DrawEllipse(pencoler2,x0-r,y0-r,2*r,2*r);for(i=0;i<60;i++){if(i%5==0){z=i/5;if(z==0)z=12;graph.DrawLine(pensize,x[i],y[i],x1[i],y1[i]);graph.DrawString(z.ToString(),penfont,penbrush,x2[i],y2[i]);}else{graph.DrawLine(pencoler3,x[i],y[i],x3[i],y3[i]);}}graph.DrawLine(pensize1,x0,y0,x[sec],y[sec]);graph.DrawLine(pensize2,x0,y0,x[min],y[min]);graph.DrawLine(pensize2,x0,y0,x4[hour*5],y4[hour*5]);//graph.DrawPie(pencoler2,x0-r,y0-r,2*r,2*r,sec*6-90,1);//graph.DrawPie(pencoler3,x0-r,y0-r,r*2,r*2,min*6-90,1);//graph.DrawPie(pencoler3,x0-r/2,y0-r/2,r,r,hour*30-90,2);secn=sec;minn=min;hourn=hour;graph.FillEllipse(newSolidBrush(Color.Yellow),x5,y5,r0,r0);continue;}}}

五、“退出”按键按下后

得益于多线程的使用,在表盘一直处于死循环监测时间变化的同时,依然能检测到Button的按下。
“退出”按下后,退出页面。

privatevoidbutton2_Click(objectsender,EventArgse){Application.Exit();}

六、表盘上各点的计算

C#如何实现时钟表盘

 </div> <div class="zixun-tj-product adv-bottom"></div> </div> </div> <div class="prve-next-news">
本文:C#如何实现时钟表盘的详细内容,希望对您有所帮助,信息来源于网络。
上一篇:基于服务端怎么实现OSS文件直传下一篇:

23 人围观 / 0 条评论 ↓快速评论↓

(必须)

(必须,保密)

阿狸1 阿狸2 阿狸3 阿狸4 阿狸5 阿狸6 阿狸7 阿狸8 阿狸9 阿狸10 阿狸11 阿狸12 阿狸13 阿狸14 阿狸15 阿狸16 阿狸17 阿狸18