05.多边形

  • 学习人数 15K+
  • 适合有C语言基础人群学习
avatar
林耿亮

你好编程主讲老师

本节中的所有代码窗体大小均为800 * 600。坐标系原点在窗体中心,X轴正方向向右,Y轴正方向向上。

1. 绘制多边形

如何在平面内绘制一个三角形?

  1. 首先确定三角形的顶点。
  2. 根据顶点绘制首尾相接的线段。

例如:三角形的3个顶点为:

P1点:(0, 200) P2点:(200, -200) P3点:(-200, -200)

绘制P1到P2的线段。 绘制P2到P3的线段。 绘制P3到P1的线段。

绘制三角形

可以利用之前学过的画线段函数line来绘制这3条线段。

line(0, 200, 200, -200);
line(200, -200, -200, -200);
line(-200, -200, 0, 200);

当然,EasyX还提供了一个更加便利的函数polygon用于绘制多边形。仅需要提供多边形的顶点,即可按照顶点的顺序,依次绘制线段组成一个封闭的多边形。

void polygon(
    const POINT *points,
    int num
);
参数 类型 意义
points const POINT * 每个点的坐标
num int 多边形顶点的个数

返回值 无

参数points指向结构POINT数组的首元素 参数num指明数组中有多少个元素

我们先来看一下结构POINT是如何声明的:

typedef struct
{
    LONG  x;
    LONG  y;
}POINT;

使用typedef关键词为结构起了一个别名POINT。 而这个结构有两个成员,其类型均为LONG类型。LONG为关键词long的别名。

typedef long LONG;

因此,这个结构的两个成员均为long类型,x表示该点的横坐标,y表示该点的纵坐标。

让我们使用polygon函数来绘制三角形吧。首先,声明一个POINT结构的数组,并把点初始化给这个数组。

POINT points[] = { {0, 200}, {200, -200}, {-200, -200} };

接下来,将数组首元素的指针传给polygon函数的第一个参数(数组名出现在表达式中转换为首元素的指针)。第二个参数指明数组中的元素数量。

polygon(points, 3);

完整代码如下:

#include <easyx.h>
#include <stdio.h>

int main()
{
    initgraph(800, 600);
    setorigin(400, 300);
    setaspectratio(1, -1);

    //  三角形,顶点为(0, 200), (200, -200), (-200, -200)
    POINT points[] = { {0, 200}, {200, -200}, {-200, -200} };
    polygon(points, 3);

    getchar();
    closegraph();
    return 0;
}

三角形