首页 > 学院 > 开发设计 > 正文

一个c#模拟时钟的源代码

2019-11-17 04:08:11
字体:
来源:转载
供稿:网友
view plaincopy to clipboardPRint?
using System;   
using System.Drawing;   
using System.Collections;   
using System.ComponentModel;   
using System.Windows.Forms;   
using System.Data;   
using System.Drawing.Drawing2D;   
  
namespace AnalogClock   
{   
  
public class AnalogClock : System.Windows.Forms.Form   
{   
  private System.Windows.Forms.Timer timer1;   
  private System.ComponentModel.IContainer components;   
  
  public AnalogClock()   
  {   
  
   InitializeComponent();   
   //初始化;   
  
  
  }   
  
  
  protected override void Dispose( bool disposing )   
  {   
   if( disposing )   
   {   
    if (components != null)    
    {   
     components.Dispose();   
    }   
   }   
   base.Dispose( disposing );   
  }  

  #region Windows Form Designer generated code   
  
  private void InitializeComponent()   
  {   
   this.components = new System.ComponentModel.Container();   
   System.Resources.ResourceManager resources = new System.Resources.ResourceManager(typeof(AnalogClock));   
   this.timer1 = new System.Windows.Forms.Timer(this.components);   
   //    
   // timer1   
   //    
   this.timer1.Enabled = true;   
   this.timer1.Interval = 1000;   
   this.timer1.Tick += new System.EventHandler(this.OnTick);   
   //    
   // AnalogClock   
   //    
   this.AutoScaleBaseSize = new System.Drawing.Size(6, 14);   
   this.BackColor = System.Drawing.SystemColors.Control;   
   this.BackgroundImage = ((System.Drawing.Image)(resources.GetObject("$this.BackgroundImage")));   
   this.ClientSize = new System.Drawing.Size(306, 271);   
   this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog;   
   this.MaximizeBox = false;   
   this.Name = "AnalogClock";   
   this.Text = "模拟时钟 v1.1 neowang008";   
   this.Load += new System.EventHandler(this.AnalogClock_Load);   
   this.Paint += new System.Windows.Forms.PaintEventHandler(this.OnFormPaint);   
  
  }  
  #endregion   
  
  
  [STAThread]   
  static void Main()    
  {   
   application.Run(new AnalogClock());   
  }   
  
  
  private void OnFormPaint(object sender, System.Windows.Forms.PaintEventArgs e)   
  {   
   Graphics g = e.Graphics;   
  
   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.65*r);   
   int minHandLength = (int)(0.6*r);   
   int hourHandLength = (int)(0.5*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);   
   //指针的样式定义;   
  }   
  
  
  private void OnTick(object sender, System.EventArgs e)   
  {   
   Invalidate();   
  }   
  
  private void AnalogClock_Load(object sender, System.EventArgs e)   
  {   
  
  }   
}   
}  
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表