自己做的时钟可能不好请大家见谅 我是用timer语句做的因为执行程序是有时间延迟所以timer的周期不是1秒 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; using System.Drawing.Imaging; using System.IO; using System.Drawing.Drawing2D; namespace WindowsFormsApplication1 { public partial class Form1 : Form { public Form1() { InitializeComponent(); } //实例化Time private Timer timer1 = new Timer(); private Timer timer2 = new Timer(); private Timer timer3 = new Timer(); private void button1_Click(object sender, EventArgs e) { //设定timer周期时间 timer1.Interval = 984; timer2.Interval = 59040; timer3.Interval = 708480; //为timer制定触发对象 timer1.Tick += new EventHandler(timer1_Tick); timer2.Tick += new EventHandler(timer2_Tick); timer3.Tick += new EventHandler(timer3_Tick); //开始timer timer1.Start(); timer2.Start(); timer3.Start(); //this.drawclock(); //this.playSound(12); } //定义秒针旋转角度s,分针旋转角度m,时针旋转角度h,及s的初始数值Reset1,m、h的初始数值Reset2 private int s = 0, m = 0, h = 0,num; //计时器计算分针的旋转角度 void timer2_Tick(object sender, EventArgs e) { m += 6; } //计时器计算时针的旋转角度 void timer3_Tick(object sender, EventArgs e) { h += 6; if (h % 30 == 0) { num = h / 30; this.playSound(num); } } //计时器画图 //DateTime c=new DateTime(); void timer1_Tick(object sender, EventArgs e) { //DateTime b = DateTime.Now; //TimeSpan r = b-c; //c = DateTime.Now; //MessageBox.Show(r.ToString()); //验证程序延迟用 s += 6; Graphics a = this.pictureBox1.CreateGraphics(); //a.Clear(Color.Blue); a.TranslateTransform(175, 175); Pen pen = new Pen(Color.Black); Image imag = Image.FromFile("clock.png"); a.DrawImage(imag, -175, -175); a.RotateTransform(s); pen.StartCap = LineCap.SquareAnchor; pen.EndCap = LineCap.ArrowAnchor; //画秒针 a.DrawLine(pen, 0, 0, 0, -85); a.RotateTransform(m - s); pen.StartCap = LineCap.SquareAnchor; pen.EndCap = LineCap.ArrowAnchor; //画分针 a.DrawLine(pen, 0, 0, 0, -80); a.RotateTransform(h - m); pen.StartCap = LineCap.SquareAnchor; pen.EndCap = LineCap.ArrowAnchor; //画时针 a.DrawLine(pen, 0, 0, 0, -75); //a.Clear(Color.Blue); a.ResetTransform(); //Image imag = Image.FromFile("clock.png"); //a.DrawImage(imag,0,0); //this.Reset(s, Reset2); a.Dispose(); this.clockTime(); this.systemTime(); } //画一个表盘 就第一次调用了 为了画表盘 //public void drawclock() //{ // Image clock = new Bitmap(350, 350); // Graphics a = Graphics.FromImage(clock); // a.Clear(Color.Blue); // a.TranslateTransform(175, 175); // Pen pen = new Pen(Color.Black); // pen.Width = 3; // Point point1 = new Point(0, -90); //第一点 // Point point2 = new Point(0, -100); //第二点 // for (int i = 4; i > 0; i--) // { // a.DrawLine(pen, point1, point2); // a.RotateTransform(90); // } // for (int i = 12; i > 0; i--) // { // point1.Y = -95; // a.DrawLine(pen, point1, point2); // a.RotateTransform(30); // } // for (int i = 60; i > 0; i--) // { // pen.Width = 1; // point1.Y = -95; // a.DrawLine(pen, point1, point2); // a.RotateTransform(6); // } // a.ResetTransform(); // a.Flush(); // a.Dispose(); // clock.Save("clock.png", ImageFormat.Png); //} // private void button2_Click(object sender, EventArgs e) //{ // OpenFileDialog dialog = new OpenFileDialog(); // // dialog.Filter = "Audio Files (.wav)|*.wav"; // if (dialog.ShowDialog() == DialogResult.OK) // { // string path = dialog.FileName; // playSound(path); // } // } //播放声音 private void playSound(int num) { //获取程序域 string path1 = AppDomain.CurrentDomain.BaseDirectory; //实例化播放器 System.Media.SoundPlayer player = new System.Media.SoundPlayer(); //连接uil地址,由于文件大小问题所以只用一个声音了 string pathMusic = "music//clock.wav"; string combination = Path.Combine(path1, pathMusic); combination = Path.Combine(path1, pathMusic); // player.SoundLocation = path; player.SoundLocation = combination; //MessageBox.Show(combination); player.Load(); player.Play(); } //显示时钟时间 private void clockTime() { //初始化h、m、s防止数值过大 if (h/30 >= 12) { h = 0; } if (m / 6 >= 60) { m = 0; } if (s / 6 >= 60) { s = 0; } //把int类型数据转化为string类行 string numstr = Convert.ToString(h/30); string mstr = Convert.ToString(m / 6); string sstr = Convert.ToString(s / 6); //连接字符串 string clockTime = numstr + ":" + mstr + ":" + sstr; textBox3.Text = clockTime; } //与系统时间校队 private void systemTime() { //获取系统日期、时间 string date = DateTime.Now.ToString("D"); string time = DateTime.Now.ToString("T"); //在textbox中显示日期和时间 textBox1.Text = date; textBox2.Text = time; } //与系统时间校对 private void button2_Click(object sender, EventArgs e) { //获取系统时间小时、分钟。秒 int systemTimeHour=DateTime.Now.Hour-12; int systemTimeMinute = DateTime.Now.Minute; int systemTimeSecond = DateTime.Now.Second; //改变画h、m、s时针的坐标系旋转角度 h = systemTimeHour * 30; m = systemTimeMinute * 6; s = systemTimeSecond * 6-6; } } }