1 #include <graphics.h> 2 #include <conio.h> 3 #include <math.h> 4 #define PI 3.14159265359 5 void Draw(int hour, int minute, int second) 6 { 7 double a_hour, a_min, a_sec; 8 // 时、分、秒针的弧度值 9 int x_hour, y_hour, x_min, y_min, x_sec, y_sec; 10 // 时、分、秒针的末端位置 11 // 计算时、分、秒针的弧度值 12 a_sec = second * 2 * PI / 60; 13 a_min = minute * 2 * PI / 60 + a_sec / 60; 14 a_hour= hour * 2 * PI / 12 + a_min / 12; 15 // 计算时、分、秒针的末端位置 16 x_sec = 320 + (int)(120 * sin(a_sec)); 17 y_sec = 240 - (int)(120 * cos(a_sec)); 18 x_min = 320 + (int)(100 * sin(a_min)); 19 y_min = 240 - (int)(100 * cos(a_min)); 20 x_hour= 320 + (int)(70 * sin(a_hour)); 21 y_hour= 240 - (int)(70 * cos(a_hour)); 22 // 画时针 23 setlinestyle(PS_SOLID, 10, NULL); 24 setlinecolor(WHITE); 25 line(320, 240, x_hour, y_hour); 26 // 画分针 27 setlinestyle(PS_SOLID, 6, NULL); 28 setlinecolor(LIGHTGRAY); 29 line(320, 240, x_min, y_min); 30 // 画秒针 31 setlinestyle(PS_SOLID, 2, NULL); 32 setlinecolor(RED); 33 line(320, 240, x_sec, y_sec); 34 } 35 void main() 36 { 37 initgraph(640, 480); 38 // 初始化 640 x 480 的绘图窗口 39 // 绘制一个简单的表盘 40 circle(320, 240, 2); 41 circle(320, 240, 60); 42 circle(320, 240, 160); 43 outtextxy(296, 310, _T("BestAns")); 44 // 设置 XOR 绘图模式 45 setwritemode(R2_XORPEN); 46 // 设置 XOR 绘图模式 47 // 绘制表针 48 SYSTEMTIME ti; 49 // 定义变量保存当前时间 50 while(!kbhit()) 51 // 按任意键退出钟表程序 52 { 53 GetLocalTime(&ti); 54 // 获取当前时间 55 Draw(ti.wHour, ti.wMinute, ti.wSecond); 56 // 画表针 57 Sleep(1000); 58 // 延时 1 59 Draw(ti.wHour, ti.wMinute, ti.wSecond); 60 // 擦表针(擦表针和画表针的过程是一样的) 61 } 62 closegraph(); 63 // 关闭绘图窗口 64 }