EasyX----各类函数绘制

一、初识图形库

不用将字符打印在控制台上,因此不需要使用头文件stdio.h,而是使用EasyX的头文件easyx.h

1.开始前创建一个窗体作为画布,这时候我们就需要使用easyx中初始化绘图窗口的函数initgraph;

它的函数原型是这样的,width参数为窗体的宽度,单位为像素,height参数为窗体的高度,单位为像素,第三个参数为设置了缺省值的flag,这个参数在我们使用过程中一般可以不用填写,现在我们就可以使用initgraph函数创建一个窗体了

 我们创建了一个800像素*600像素的窗体

关闭绘图窗体函数  void closegraph();

 尝试运行代码后窗体一闪而过,这是因为创建绘图窗体后立刻又关闭了,我们需要让窗体多停留一段时间怎么办呢,我们可以使用getchar()函数暂时阻塞程序,等待用户按键后再关闭

 而getchar()函数声明在头文件stdio.h中,我们又需要将stdio.h这个头文件加到代码中

2.easyx坐标系统

 绘制圆形函数,第一个参数x,第二个参数y为圆形圆心的xy的坐标,第三个参数radius为圆形的半径

 

 运行如上代码后确实画了一个圆,但是这个圆在窗体的最左上角

1)easyx的坐标系有两种:物理坐标和逻辑坐标

(2)切换逻辑坐标原点 

首先获取窗体中心点的物理坐标:窗体宽度/2,窗体宽度/2,接下来我们使用setorigin函数,这个函数的作业是以物理坐标为基准设置逻辑坐标的原点

 参数x为原点在物理坐标上x坐标,参数y为原点在物理坐标上y坐标

3)翻转逻辑坐标

前面我们已经将逻辑坐标原点移到了窗体中心,想要翻转逻辑坐标的轴向,可以使用setaspectratio函数,参数xasp为x方向上的缩放因子,参数yasp为y方向上的缩放因子,如果缩放因子为负数可以实现坐标轴翻转

这样就可以将y轴翻转使其向上

3.绘制点

putpixel函数用于绘制点,参数x表示点的x坐标,参数y表示点的y坐标,color表示点的颜色·

我们将如下代码放在visual stdio中运行结果发现什么都没有,其实代码已经运行成功了,但是因为这些点仅占一个像素,所以很难看清。

 为了让效果更加明显,我们调整一下需求,希望在平面内随机画上1000个点,首先为了不让点跑到平面外,那么x的取值范围应该在-400到400之间,y的取值范围在-300到300之间(取所有代码窗体大小均为800像素宽*600像素高),并且xy是随机取值的,我们可以写出这样的代码,rand函数返回的是一个不为负数的随机值,将rand对800+1取余,结果最小为0最大为800,其后再减去400,那么x刚好落在-400到400之间,同理将rand对600+1取余,结果最小为0最大为600,其后再减去300,那么y刚好落在-300到300之间

4.绘制线

line函数用于绘制直线,它的函数原型是这样的,参数x1y1表示直线起始点的xy坐标,参数x2y2表示直线终止点的xy坐标

5.绘制圆

circle函数用于绘制圆形 ,它的函数原型是这样的,参数xy表示圆心的xy坐标,参数radius表示圆的半径。我们尝试新的需求,我们希望多画几个圆,这些圆的原点都在(0,0)处,半径从10开始,每画一次递增10直到半径大于300为止

6.绘制矩形 

rectangle函数用于绘制矩形,它的函数原型是这样的,参数left表示矩形左上角的x坐标,参数top表示矩形左上角的y坐标,参数right表示矩形右下角的x坐标,参数bottom表示矩形右下角的y坐标

其实从函数的传参我们就可以看出 ,只要知道了矩形左上角和右下角的顶点,就可以确定一个矩形了

 7.绘制椭圆

ellipse函数用于绘制椭圆,它的函数原型是这样的,可以发现它的传参和矩形rectangle的传参非常相似,这是因为椭圆的绘制和矩形是息息相关的,参数left表示椭圆外切矩形的左上角的x坐标,参数top表示椭圆外切矩形的左上角的y坐标,参数right表示椭圆外切矩形的右下角的x坐标,参数bottom表示椭圆外切矩形的右下角的y坐标

从函数的传参我们就可以看出,想要确定一个椭圆 ,其实只要先确定一个矩形,那么ellipse函数就算是在该矩形内做一个内切椭圆

8.绘制圆角矩形

roundrect函数用于绘制圆角矩形,它的函数原型是这样的,前四个参数left/top/right/bottom的意义和矩形rectangle函数是一样的,参数ellipsewidth表示构成

 9.绘制扇形

pie函数用于绘制扇形,它的函数原型是这样的,前四个参数left/top/right/bottom的意义和椭圆ellipse函数是一样的,参数stangle表示扇形的起始角的弧度,参数endangle表示扇形的终止角的弧度

 其实从函数中我们就可以知道,想要确定一个扇形,只要确定一个椭圆,根据后两个参数起始弧度与终止弧度确定扇形的圆心角大小就可以了,圆心角从x轴正方向开始,顺时针旋转单位为弧度

10.绘制圆弧

 arc函数用于绘制圆弧,它的函数原型是这样的,其实圆弧arc参数与扇形pie函数的参数全部一致,圆弧arc函数与扇形pie函数的区别是圆弧arc函数不会绘制从圆心到圆周的线段

 

 11.绘制多边形

函数polygon用于绘制多边形,仅仅需要提供多边形的各个顶点,就可以按照顶点的顺序,依次绘制线段组成一个封闭的多边形,参数points是一个POINT类型的指针,指向结构POINT数组的首元素,表示每个点的坐标,参数num指明数组中有多少个元素,结构POINT是easyx中自带的,我们可以先看看POINT这个结构是如何声明的,使用typedef关键词,为结构起了一个别名POINT,用于保存点的xy坐标,而这个结构有两个成员,其类型均为LONG类型,x表示该点的横坐标,y表示该点的纵坐标

首先声明一个POINT结构的数组,并且使用三角形的三个点初始化这个数组,接下来将数组首元素的指针传给polygon函数的第一个参数,第二个参数指明数组中的元素数量

12.各种多边形示例

矩形

 梯形

正五边形

怎样求出正五边形的顶点坐标呢?这里就需要用到一个初中的数学知识三角函数,首先我们给正五边形做一个外切圆,会发现正五边形的顶点刚好将圆分成了五等份,每份的圆心角为72度,现在我们想要求出顶点p1的坐标,已知顶点p1与x轴正方向的夹角为90度,外切圆的半径为r,那么根据三角函数就可以得到p1的坐标为x=cos(90°)*r,y=sin(90°)*r。接着我们求顶点p2的坐标,已知顶点p2与x轴正方向的夹角为90°+72°,外切圆半径为r,那么根据三角函数就可以得到p2的坐标为x=cos(162°)*r,y=sin(162°)*r,按照同样的方法就可以求出p3p4p5的坐标。这个时候我们就可以写个循环来求五个点的坐标,循环次数为5,初始角度为90度,每循环一次角度增加72度,就可以得到五个点的坐标(这里还需要有一个注意的地方,c语言中的sin与cos函数使用的是弧度制,因此需要使用弧度表示角度的大小。

 

13.polygon绘制不规则图形

 只要将顶点与顶点的个数传入polygon函数,它就能按照顺序依次连接各个点,组成一个封闭的图形

14.polyline函数绘制不封闭图形

函数polyline与polygon几乎一致,唯一的区别是它不会连接首尾两个顶点

 

 

  • 16
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值