天天看點

C#編寫的clock

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Text;

using System.Windows.Forms;

namespace MyClockApp

{

    public partial class Clock : Form

    {

        public Clock()

        {

            InitializeComponent();

        }

        /// <summary>

        /// 得到目前系統時間,并将其拼接成一個字元串

        /// </summary>

        /// <returns>數字時鐘要顯示的字元串</returns>

        public string GetTime()

            String TimeInString = "";

            int hour = DateTime.Now.Hour;

            int min = DateTime.Now.Minute;

            int sec = DateTime.Now.Second;

            //将時,分,秒連成一個字元串

            TimeInString = (hour < 10) ? "0" + hour.ToString() : hour.ToString();

            TimeInString += ":" + ((min < 10) ? "0" + min.ToString() : min.ToString());

            TimeInString += ":" + ((sec < 10) ? "0" + sec.ToString() : sec.ToString());

            return TimeInString;

        /// 在窗體上畫表盤時鐘的圖形

        /// <param name="h"></param>

        /// <param name="m"></param>

        /// <param name="s"></param>

        private void MyDrawClock(int h, int m, int s)

            Graphics g = this.CreateGraphics();

            Rectangle rect = this.ClientRectangle;

            g.Clear(Color.White);

            Pen myPen = new Pen(Color.Black, 1);

            g.DrawEllipse(myPen, this.ClientRectangle.Width / 2 - 75, this.ClientRectangle.Height / 2-75, 150, 150);//畫表盤

            Point centerPoint = new Point(this.ClientRectangle.Width / 2, this.ClientRectangle.Height / 2);//表的中心點

            //計算出秒針,時針,分針的另外一個商點

            Point secPoint = new Point((int)(centerPoint.X + (Math.Sin(s * Math.PI / 30) * 50)), (int)(centerPoint.Y - (Math.Cos(s * Math.PI / 30) * 50)));

            Point minPoint = new Point((int)(centerPoint.X + (Math.Sin(m * Math.PI / 30) * 40)), (int)(centerPoint.Y - (Math.Cos(m * Math.PI / 30) * 40)));

            Point hourPoint = new Point((int)(centerPoint.X + (Math.Sin(h * Math.PI / 6) * 30) - m * Math.PI / 360), (int)(centerPoint.Y - (Math.Cos(h * Math.PI / 6) * 30) - m * Math.PI / 360));

            //以不同顔色和寬度繪制表針

            myPen = new Pen(Color.Red, 1);

            g.DrawLine(myPen, centerPoint, secPoint);

            myPen = new Pen(Color.Green, 2);

            g.DrawLine(myPen, centerPoint, minPoint);

            myPen = new Pen(Color.Orange, 4);

            g.DrawLine(myPen, centerPoint, hourPoint);

        /// 定時重新整理顯示時間

        /// <param name="sender"></param>

        /// <param name="e"></param>

        private void timer1_Tick(object sender, EventArgs e)

            int h = DateTime.Now.Hour;

            int s = DateTime.Now.Second;

            int m = DateTime.Now.Minute;

            MyDrawClock(h, m, s);

            toolStripStatusLabel1.Text = string.Format("{0}:{1}:{2}", h, m, s);

            lblTime.Text = GetTime();

        /// 若無此方法,時鐘也能顯示,但要等窗體顯示幾秒以後表盤才會顯示。有了此方法窗體和表盤同時顯示

        private void Form1_Paint(object sender, PaintEventArgs e)

    }

}

C#編寫的clock