1、下载并安装 EasyX
EasyX 是一个基于 Windows 平台的简单易用的图形库,主要用于 C/C++ 程序设计教学和初学者图形编程入门。它的特点是接口简洁,功能实用,适合用于编写各种图形应用程序。解压下载的文件,并按照文档中的说明进行安装。
使用示例:
#include <graphics.h>
#include <conio.h>
int main() {
// 初始化图形窗口
initgraph(640, 480); // 创建 640x480 的窗口
// 设置绘图颜色
setcolor(RED);
// 绘制一个圆形
circle(320, 240, 100); // 以(320, 240)为中心,半径为100
// 等待按键
_getch();
// 关闭图形窗口
closegraph();
return 0;
}
2、设置 Visual Studio
打开 Visual Studio,文件 -> 新建 -> 项目 -> Visual C++ -> 控制台应用,创建一个新的 Win32 控制台应用程序项目。如下图,
3、项目代码
使用 EasyX 库绘制圆盘时钟的完整代码,如下,
#include <graphics.h>
#include <math.h>
#include <time.h>
#include <conio.h>
#define PI 3.14159
void drawClockFace(int xCenter, int yCenter, int radius) {
// 画圆
circle(xCenter, yCenter, radius);
// 画小时刻度
for (int i = 0; i < 12; i++) {
int angle = i * 30; // 360 / 12 = 每小时30度
int xOuter = xCenter + (radius - 10) * cos(angle * PI / 180);
int yOuter = yCenter + (radius - 10) * sin(angle * PI / 180);
int xInner = xCenter + (radius - 20) * cos(angle * PI / 180);
int yInner = yCenter + (radius - 20) * sin(angle * PI / 180);
line(xOuter, yOuter, xInner, yInner);
}
}
void drawHand(int xCenter, int yCenter, int length, double angle, COLORREF color) {
int x = xCenter + length * cos(angle);
int y = yCenter + length * sin(angle);
setlinecolor(color);
line(xCenter, yCenter, x, y);
}
void updateClock(int xCenter, int yCenter, int radius) {
time_t rawtime;
struct tm *timeinfo;
time(&rawtime);
timeinfo = localtime(&rawtime);
int hours = timeinfo->tm_hour % 12;
int minutes = timeinfo->tm_min;
int seconds = timeinfo->tm_sec;
// 将当前时间转换为角度
double hourAngle = (hours + minutes / 60.0) * 30 * PI / 180 - PI / 2;
double minuteAngle = (minutes + seconds / 60.0) * 6 * PI / 180 - PI / 2;
double secondAngle = seconds * 6 * PI / 180 - PI / 2;
// 画时钟指针
drawHand(xCenter, yCenter, radius - 50, hourAngle, WHITE);
drawHand(xCenter, yCenter, radius - 20, minuteAngle, WHITE);
drawHand(xCenter, yCenter, radius - 10, secondAngle, RED);
}
int main() {
int xCenter = 300;
int yCenter = 300;
int radius = 200;
initgraph(600, 600);
while (!_kbhit()) {
cleardevice();
drawClockFace(xCenter, yCenter, radius);
updateClock(xCenter, yCenter, radius);
Sleep(1000);
}
closegraph();
return 0;
}
实现效果: