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; }
实现效果: