也學了幾天的編程了,做了個小時鐘試試自己!
首先建一個窗體應用程序:(圖片是運行的結果)
首先:重繪窗體,把窗體化成一個圓形!
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了,希望對你有所幫助!