用easyx写一个有表盘的时钟
时间: 2023-05-11 22:04:22 浏览: 179
EasyX制作表盘时钟
好的,以下是使用 EasyX 编写的有表盘的时钟的代码:
```c++
#include <graphics.h>
#include <time.h>
int main()
{
initgraph(400, 400); // 创建绘图窗口
while (true)
{
cleardevice(); // 清空绘图窗口
// 获取当前时间
time_t t = time(NULL);
struct tm* now = localtime(&t);
// 绘制表盘
setlinecolor(WHITE);
setlinestyle(PS_SOLID, 2);
circle(200, 200, 180);
// 绘制刻度
for (int i = 0; i < 60; i++)
{
int x1, y1, x2, y2;
double angle = i * 6.0 / 180.0 * 3.1415926;
if (i % 5 == 0)
{
x1 = 200 + 140 * sin(angle);
y1 = 200 - 140 * cos(angle);
x2 = 200 + 160 * sin(angle);
y2 = 200 - 160 * cos(angle);
}
else
{
x1 = 200 + 150 * sin(angle);
y1 = 200 - 150 * cos(angle);
x2 = 200 + 160 * sin(angle);
y2 = 200 - 160 * cos(angle);
}
line(x1, y1, x2, y2);
}
// 绘制时针
setlinecolor(RED);
setlinestyle(PS_SOLID, 5);
int hour = now->tm_hour % 12;
double angle = (hour + now->tm_min / 60.0) * 30.0 / 180.0 * 3.1415926;
int x = 200 + 80 * sin(angle);
int y = 200 - 80 * cos(angle);
line(200, 200, x, y);
// 绘制分针
setlinecolor(GREEN);
setlinestyle(PS_SOLID, 3);
angle = now->tm_min * 6.0 / 180.0 * 3.1415926;
x = 200 + 120 * sin(angle);
y = 200 - 120 * cos(angle);
line(200, 200, x, y);
// 绘制秒针
setlinecolor(BLUE);
setlinestyle(PS_SOLID, 1);
angle = now->tm_sec * 6.0 / 180.0 * 3.1415926;
x = 200 + 140 * sin(angle);
y = 200 - 140 * cos(angle);
line(200, 200, x, y);
Sleep(1000); // 等待1秒钟
}
closegraph(); // 关闭绘图窗口
return 0;
}
```
这个程序使用 EasyX 库绘制了一个有表盘的时钟,包括时针、分针和秒针。程序会不断更新当前时间并重新绘制时钟,实现了时钟的动态效果。
阅读全文