我的時鐘

也學了幾天的編程了,做了個小時鐘試試自己!

首先建一個窗體應用程序:(圖片是運行的結果)

首先:重繪窗體,把窗體化成一個圓形!

 protected override void  OnPaint(PaintEventArgs e)
        {
            //把窗體畫成圓
            GraphicsPath shape = new GraphicsPath();
            shape.AddEllipse(0, 0, 200, 200);
            this.Region = new Region(shape);

}

然後就要在窗體上畫表盤和數字了:這我寫了個方法Clock

該方法需要有三個參數:即是時分秒

 String date = DateTime.Now.ToLongDateString();
            Graphics g = panel1.CreateGraphics();
            Font fntDate = new Font("Verdana", 8);
            Font fnt = new Font("Verdana", 12);
            g.Clear(Color.Gray);//清楚指針走過的痕跡

            g.DrawString(date, fntDate, new SolidBrush(Color.Black), 62, 62);//顯示日期

            //此處繪製錶盤的刻度與指針
            #region 錶盤上的數字
            g.DrawString("1", fnt, new SolidBrush(Color.Black), 140, 20);//畫數字1
            g.DrawString("2", fnt, new SolidBrush(Color.Black), 170, 50);//畫數字2
            g.DrawString("3", fnt, new SolidBrush(Color.Black), 180, 89);//畫數字3
            g.DrawString("4", fnt, new SolidBrush(Color.Black), 168, 133);//畫數字4
            g.DrawString("5", fnt, new SolidBrush(Color.Black), 140, 168);//畫數字5
            g.DrawString("6", fnt, new SolidBrush(Color.Black), 92, 180);//畫數字6
            g.DrawString("7", fnt, new SolidBrush(Color.Black), 50, 168);//畫數字7
            g.DrawString("8", fnt, new SolidBrush(Color.Black), 16, 133);//畫數字8
            g.DrawString("9", fnt, new SolidBrush(Color.Black), 0, 92);//畫數字9
            g.DrawString("10", fnt, new SolidBrush(Color.Black), 10, 53);//畫數字10
            g.DrawString("11", fnt, new SolidBrush(Color.Black), 37, 23);//畫數字11
            g.DrawString("12", fnt, new SolidBrush(Color.Black), 85, 0);//畫數字12
            #endregion
            Pen penH = new Pen(Color.DarkBlue, 1);//畫時針的畫筆
            Pen penM = new Pen(Color.DarkRed, 1);//畫分針的畫筆
            Pen penS = new Pen(Color.Black, 1);//畫秒針的畫筆
            //畫秒針
            float Xs = (float)(75 * Math.Sin(Second/30d*Math.PI) + 100);
            float Ys = (float)(100 - 75 * Math.Cos(Second/30d*Math.PI));
            g.DrawLine(penS,100,100, Xs, Ys);
            //畫分針
            float Xm = (float)(70 * Math.Sin((Minute * 60 + Second) / 1800d * Math.PI) + 100);
            float Ym = (float)(100 - 70 * Math.Cos((Minute * 60 + Second) / 1800d * Math.PI));
            g.DrawLine(penM, 100, 100, Xm, Ym);
            // 畫時針
            if (Hour > 12)
            {
                g.DrawString("PM", fntDate, new SolidBrush(Color.Black), 90, 120);//顯示PM
                Hour = Hour - 12;
            }
            else
            {
                g.DrawString("AM", fntDate, new SolidBrush(Color.Black), 90, 120);//顯示AM
            }
            double AllSecondH = (Hour * 3600 + Minute * 60 + Second) / 21600d;
            float Xh = (float)(50 * Math.Sin(AllSecondH * Math.PI) + 100);
            float Yh = (float)(100 - 50 * Math.Cos(AllSecondH * Math.PI));
            g.DrawLine(penH, 100, 100, Xh, Yh);

最後還需要一個Timer控件來刷新時鐘:

 int  S = DateTime.Now.Second;//獲取系統時間秒
          int  M= DateTime.Now.Minute;//獲取系統時間分
          int  H = DateTime.Now.Hour;//獲取系統時間時

Clock(s,m,h)

這基本及OK了,希望對你有所幫助!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章