本节中的所有代码窗体大小均为800 * 600。坐标系原点在窗体中心,X轴正方向向右,Y轴正方向向上。
1. 绘制多边形
如何在平面内绘制一个三角形?
- 首先确定三角形的顶点。
- 根据顶点绘制首尾相接的线段。
例如:三角形的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;
}