Form1.cs
上传用户:yiyuerguo
上传日期:2014-09-27
资源大小:3781k
文件大小:5k
源码类别:

C#编程

开发平台:

Others

  1. using System;
  2. using System.Drawing;
  3. using System.Collections;
  4. using System.ComponentModel;
  5. using System.Windows.Forms;
  6. using System.Data;
  7. namespace MyClockApp
  8. {
  9. /// <summary>
  10. /// Form1 的摘要说明。
  11. /// </summary>
  12. public class Form1 : System.Windows.Forms.Form
  13. {
  14. private System.Windows.Forms.StatusBar statusBar1;
  15. private System.Windows.Forms.Timer timer1;
  16. private System.Windows.Forms.Label lbTime;
  17. private System.ComponentModel.IContainer components;
  18. public Form1()
  19. {
  20. //
  21. // Windows 窗体设计器支持所必需的
  22. //
  23. InitializeComponent();
  24. //
  25. // TODO: 在 InitializeComponent 调用后添加任何构造函数代码
  26. //
  27. }
  28. /// <summary>
  29. /// 清理所有正在使用的资源。
  30. /// </summary>
  31. protected override void Dispose( bool disposing )
  32. {
  33. if( disposing )
  34. {
  35. if (components != null) 
  36. {
  37. components.Dispose();
  38. }
  39. }
  40. base.Dispose( disposing );
  41. }
  42. #region Windows Form Designer generated code
  43. /// <summary>
  44. /// 设计器支持所需的方法 - 不要使用代码编辑器修改
  45. /// 此方法的内容。
  46. /// </summary>
  47. private void InitializeComponent()
  48. {
  49. this.components = new System.ComponentModel.Container();
  50. this.statusBar1 = new System.Windows.Forms.StatusBar();
  51. this.timer1 = new System.Windows.Forms.Timer(this.components);
  52. this.lbTime = new System.Windows.Forms.Label();
  53. this.SuspendLayout();
  54. // 
  55. // statusBar1
  56. // 
  57. this.statusBar1.Location = new System.Drawing.Point(0, 287);
  58. this.statusBar1.Name = "statusBar1";
  59. this.statusBar1.Size = new System.Drawing.Size(344, 22);
  60. this.statusBar1.TabIndex = 0;
  61. // 
  62. // timer1
  63. // 
  64. this.timer1.Enabled = true;
  65. this.timer1.Interval = 1000;
  66. this.timer1.Tick += new System.EventHandler(this.timer1_Tick);
  67. // 
  68. // lbTime
  69. // 
  70. this.lbTime.Font = new System.Drawing.Font("Arial", 42F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((System.Byte)(0)));
  71. this.lbTime.Location = new System.Drawing.Point(24, 24);
  72. this.lbTime.Name = "lbTime";
  73. this.lbTime.Size = new System.Drawing.Size(288, 49);
  74. this.lbTime.TabIndex = 1;
  75. this.lbTime.Text = "88:88:88";
  76. this.lbTime.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
  77. // 
  78. // Form1
  79. // 
  80. this.AutoScaleBaseSize = new System.Drawing.Size(6, 14);
  81. this.ClientSize = new System.Drawing.Size(344, 309);
  82. this.Controls.Add(this.lbTime);
  83. this.Controls.Add(this.statusBar1);
  84. this.Name = "Form1";
  85. this.Text = "MyClockApp";
  86. this.ResumeLayout(false);
  87. }
  88. #endregion
  89. /// <summary>
  90. /// 应用程序的主入口点。
  91. /// </summary>
  92. [STAThread]
  93. static void Main() 
  94. {
  95. Application.Run(new Form1());
  96. }
  97. public string GetTime()
  98. {
  99. string TimeInString="";
  100. //DateTime.Now.Hour返回当前时
  101. int hour=DateTime.Now.Hour;
  102. //DateTime.Now.Hour返回当前分
  103. int min=DateTime.Now.Minute;
  104. //DateTime.Now.Hour返回当前秒
  105. int sec=DateTime.Now.Second;
  106.             //将时、分、秒连在一起得到TimeInString
  107. TimeInString=(hour < 10)?"0" + hour.ToString() :hour.ToString();
  108. TimeInString+=":" + ((min<10)?"0" + min.ToString() :min.ToString());
  109. TimeInString+=":" + ((sec<10)?"0" + sec.ToString() :sec.ToString());
  110. return TimeInString;
  111. }
  112. private void timer1_Tick(object sender, System.EventArgs e)
  113. {
  114. //得到当前的时、分、秒
  115. int h = DateTime.Now .Hour ;
  116. int m = DateTime.Now .Minute ;
  117. int s = DateTime.Now .Second ;
  118. //调用MyDrawClock绘制图形表盘
  119. MyDrawClock(h,m,s);
  120. //在statusbar上显示数字时钟
  121. statusBar1.Text = String.Format ("{0}:{1}:{2}",h,m,s);
  122.     //在lbtime上显示数字时钟 
  123. lbTime.Text=GetTime(); 
  124. }
  125. //定义秒针,分针,时针的长度
  126. private const int s_pinlen = 75;
  127. private const int m_pinlen = 50;
  128. private const int h_pinlen = 25;
  129. private void MyDrawClock(int h, int m, int s)
  130. {
  131. Graphics g = this.CreateGraphics ();
  132. //清除所有
  133.             //得到当前矩形值
  134.             Rectangle rect = this.ClientRectangle;
  135. //新建矩形对象距离 底边250 右边230 横纵半径都是150 如果不都是150 两个不相等
  136. //比如一个是140 一个是160 则画出来的是一个椭圆 
  137. rect = new Rectangle(this.ClientRectangle.Right-250,this.ClientRectangle.Bottom-230,150,150);
  138. g.Clear (Color.White);
  139. //创建Pen                                    
  140. Pen myPen = new Pen (Color.Blue ,1);
  141. //绘制表盘
  142. g.DrawEllipse (myPen,rect);
  143. //表中心点 
  144. Point centerPoint = new Point (this.ClientRectangle.Width/2 ,this.ClientRectangle .Height /2);
  145. //计算出秒针,分针,时针的另外端点
  146. Point secPoint = new Point ( (int)(centerPoint.X +(Math.Sin(6*s*Math.PI/180) )*s_pinlen) ,
  147. (int)(centerPoint.Y -(Math.Cos(6*s*Math.PI/180) )*s_pinlen) ) ;
  148. Point minPoint = new Point ( (int)(centerPoint.X +(Math.Sin(6*m*Math.PI/180) )*m_pinlen) ,
  149.      (int)(centerPoint.Y -(Math.Cos(6*m*Math.PI/180) )*m_pinlen) ) ;
  150. Point hourPoint = new Point ( (int)(centerPoint.X +(Math.Sin(((30*h)+(m/2))*Math.PI/180) )*h_pinlen) ,
  151.      (int)(centerPoint.Y -(Math.Cos(((30*h)+(m/2))*Math.PI/180) )*h_pinlen) );
  152. //以不同的颜色绘制
  153. g.DrawLine (myPen,centerPoint,secPoint);
  154. myPen = new Pen (Color.Green ,2);
  155. g.DrawLine (myPen,centerPoint,minPoint);
  156. myPen = new Pen (Color.Red  ,4);
  157. g.DrawLine (myPen,centerPoint,hourPoint);
  158. }
  159. }
  160. }