任务:使用EGE库设计一个绘制多边形的程序。并且满足以下要求: 1、 可以会制任意个多边形;2、过程中要显示绘制路径,绘制结束后 ,填充多边形内部; 3、能够将已绘制完成的多边形保存到文件中,并且可以从文件中读取已保存的多边形,重新显示在界面上。
时间: 2024-03-19 09:45:06 浏览: 58
好的,我会为您详细介绍如何使用EGE库实现这个任务。
首先,我们需要定义一个表示多边形的数据结构,可以使用一个二维数组来存储顶点的坐标,使用一个一维数组来存储连线的关系。
```C++
const int MAX_VERTEX_NUM = 100; // 定义最大顶点数
int vertex[MAX_VERTEX_NUM][2] = {0}; // 存储顶点坐标
int edge[MAX_VERTEX_NUM][MAX_VERTEX_NUM] = {0}; // 存储连线关系
int vertex_num = 0; // 记录顶点数
```
接下来,我们可以使用EGE库提供的函数来实现绘制多边形的过程。
```C++
#include <graphics.h>
int main() {
initgraph(640, 480); // 初始化窗口
while (true) {
if (ismouseclick(WM_LBUTTONDOWN)) { // 左键按下,添加一个顶点
int x = mousex();
int y = mousey();
vertex[vertex_num][0] = x;
vertex[vertex_num][1] = y;
vertex_num++;
if (vertex_num > 1) { // 绘制当前顶点和上一个顶点之间的连线
line(vertex[vertex_num-2][0], vertex[vertex_num-2][1], x, y);
edge[vertex_num-2][vertex_num-1] = 1; // 更新连线关系
edge[vertex_num-1][vertex_num-2] = 1;
}
}
if (ismouseclick(WM_RBUTTONDOWN)) { // 右键按下,绘制最后一条边并填充多边形
int x = mousex();
int y = mousey();
line(vertex[vertex_num-1][0], vertex[vertex_num-1][1], x, y);
edge[vertex_num-1][0] = 1; // 连接第一个顶点
edge[0][vertex_num-1] = 1;
fillpoly(vertex_num, (int*)vertex); // 填充多边形
vertex_num = 0; // 重置顶点数
memset(vertex, 0, sizeof(vertex)); // 清空顶点数组
memset(edge, 0, sizeof(edge)); // 清空连线关系数组
}
}
closegraph(); // 关闭窗口
return 0;
}
```
在绘制多边形的过程中,我们可以通过判断鼠标左键或右键的按下事件来添加顶点和绘制连线。当右键按下时,我们还需要绘制最后一条边并填充多边形,然后重置顶点数和相关数组。
最后,我们可以实现保存和读取多边形数据的功能。
```C++
#include <fstream>
void save_polygon() {
std::ofstream out("polygon.txt");
out << vertex_num << std::endl;
for (int i = 0; i < vertex_num; i++) {
out << vertex[i][0] << ' ' << vertex[i][1] << std::endl;
}
for (int i = 0; i < vertex_num; i++) {
for (int j = 0; j < vertex_num; j++) {
out << edge[i][j] << ' ';
}
out << std::endl;
}
out.close();
}
void load_polygon() {
std::ifstream in("polygon.txt");
in >> vertex_num;
for (int i = 0; i < vertex_num; i++) {
in >> vertex[i][0] >> vertex[i][1];
}
for (int i = 0; i < vertex_num; i++) {
for (int j = 0; j < vertex_num; j++) {
in >> edge[i][j];
}
}
in.close();
}
```
保存多边形数据时,我们将顶点数、顶点坐标和连线关系写入到文件中。读取多边形数据时,我们需要按照相同的顺序读取数据并更新相关数组。
综上所述,这就是一个基本的绘制多边形程序,并且可以保存和读取多边形数据。您可以根据需要进行优化和扩展。
阅读全文