DEV-C++ ege.h库 绘图教程(二)

一、上期回顾

上一期我们讲了ege库中的基本绘图函数,那么今天,让我们来讲讲高级绘图函数。

上一期传送门:DEV-C++ ege.h库 绘图教程(一)

二、高级绘图函数

1.ege_enable_aa

这个函数是用来启动或关闭抗锯齿的。

void EGEAPI ege_enable_aa(bool enable, PIMAGE pimg = NULL);

 就比如说,画一个圆弧,我们都知道是一个一个像素点描出来的。

所以说有一些地方像素画出来的就很突兀,特别是在画细节的时候。

那么开启抗锯齿的话,就可以减少这种突兀感。

虽说我也不知道是怎么做到的。

2.ege_line

画线,但是多了一些细节。格式和line没什么区别。

void EGEAPI ege_line(float x1, float y1, float x2, float y2, PIMAGE pimg = NULL);

首先我们可以看到参数类型都是float的,就体现出他的“高级”了

但除此以外,还有一些地方需要注意。

首先就是我们都知道这也还是一个个像素点,但画线时他不会画(x1,y1)和(x2,y2)这两个点。

也就是说,ege_line(100,100,101,100)画不出任何东西出来。

另一件值得注意的事情是,画线的颜色是RGBA的,如果A==0,那么什么也画不出来。

就是没什么用罢了,建议使用line函数。

3.ege_drawpoly

和drawpoly没什么两样,就是参数变成了

void EGEAPI ege_drawpoly(int numpoints, ege_point* polypoints, PIMAGE pimg = NULL);

也就是说,创建polypoints数组时,得这样:

#include<bits/stdc++.h>
#include<ege.h>
using namespace std;
using namespace ege;
int main(){
	initgraph(640,480);
	ege_point a[]={
		(ege_point){100,100},
		(ege_point){100,200},
		(ege_point){200,100},
		(ege_point){200,200},
	};
	ege_drawpoly(4,a);
	getch();
	closegraph();
	return 0;
}

4.ege_drawcurve

画一条经过所有点的拟合曲线,格式与ege_drawpoly一样。

他的意思就是,画一条经过所有点的曲线,并使其看起来“自然一些”。

我也不知道我的解释是否生动形象,所以直接上代码吧

#include<bits/stdc++.h>
#include<ege.h>
using namespace std;
using namespace ege;
int main(){
	initgraph(640,480);
	ege_point a[]={
		(ege_point){100,100},
		(ege_point){100,200},
		(ege_point){200,100},
		(ege_point){200,200},
	};
	ege_drawcurve(4,a);
	getch();
	closegraph();
	return 0;
}

可以看到,四个点被一条曲线“相当自然地”连在了一起。

 5.ege_rectangle

不用我说了吧,画矩形。

6.ege_ellipse

void EGEAPI ege_ellipse(float x, float y, float w, float h, PIMAGE pimg = NULL);

可以理解为画ege_rectangle(x,y,w,h)的内切椭圆。

注意,w是矩形宽,h是矩形高。

#include<bits/stdc++.h>
#include<ege.h>
using namespace std;
using namespace ege;
int main(){
	initgraph(640,480);
    ege_rectangle(100,100,200,300);
	ege_ellipse(100,100,200,300);
	getch();
	closegraph();
	return 0;
}

7.ege_pie

画一个椭圆扇形。

void EGEAPI ege_pie(float x, float y, float w, float h, float stangle, float sweepAngle, PIMAGE pimg = NULL);

 x,y,w,h与上面ege_ellipse一样。

关键是stangle和sweepAngle。

这里的stangle和我们之前讲的不一样。

例如:ege_pie(100,100,200,300,45,150);

也就是说和之前反了过来——之前是向上为正,现在则相反。

它的官方解释是:

startAngle
扇形开始的角度(单位为角度,x正方向为0度,y正方向为90度)。

这里的y正方向指的是窗口的y正方向,也就是向下。不是平面直角坐标系的y正方向。

 8.ege_arc

和ege_pie的格式一样,画椭圆圆弧。

9.ege_fillpoly,ege_fillrect,ege_fillellipse,ege_fillpie

和不fill前的函数格式,功能一样,只是填充颜色的。

用setfillcolor来设置填充颜色。

10.ege_setpattern_none

直接给出官方解释了。

设置高级函数颜色填充模式为默认颜色填充模式,即以setfillcolor设置的填充颜色填充。

也就是说,用ege_fillrect等时,就简单的把颜色填进去就算了,没什么特别的。 

11.ege_setpattern_lineargradient

设置高级函数颜色填充模式为线性渐变颜色填充模式。
区域为从以直线为宽的条状区域,颜色由一边向另一边线性渐变。
填充区域在区域内有效。

什么意思呢,我们还是来看例子。

 ege_setpattern_lineargradient(100,100,YELLOW,300,400,GREEN);

他的意思是:

1.(100,100)的颜色为YELLOW

2.(300,400)的颜色为GREEN

3.将(100,100)到(300,400)这一片矩形区域填充为从YELLOW到GREEN的渐变色。

我们在加一句

ege_fillrect(100,100,200,300);

注意,填充颜色只会在(100,100)到(300,400)生效,也就是说,如果我们把代码改成

ege_setpattern_lineargradient(100,100,YELLOW,300,300,GREEN);

出来的效果就是:

12.ege_setpattern_pathgradient

开始越来越复杂了

还是一样的,我们看一看官方定义

功能:
设置高级函数颜色填充模式为路径渐变颜色填充模式。
有效区域为由点包围成的多边形区域,区域内容颜色渐变填充。
填充区域在有效区域内才能正确填充,在有效区域外填充区域不能保证填充正确。


声明:
void ege_setpattern_lineargradient( ege_point center, color_t centercolor, int count, ege_point* points, int colcount, color_t* pointscolor, PIMAGE pimg = NULL );  

参数:
center,centercolor
中心点的坐标及颜色

count,points
围成区域的多边形的点的个数和坐标

colcount,pointscolor
多边形每个点对应的颜色。

pimg
设置的目标图像,默认为NULL,即设置窗口。

他和fillpoly_gradient差不多,就直接放代码了。

#include<bits/stdc++.h>
#include<ege.h>
using namespace std;
using namespace ege;
int main(){
	initgraph(640,480);
	ege_point a[]={
		(ege_point){100,100},
		(ege_point){100,200},
		(ege_point){200,100},
		(ege_point){200,200},
	};
	color_t b[]={(color_t)RED,(color_t)BLUE,(color_t)YELLOW,(color_t)GREEN};
	ege_setpattern_pathgradient((ege_point){150,150},YELLOW,4,a,4,b);
	ege_fillrect(100,100,100,100);
	getch();
	closegraph();
	return 0;
}

反正这玩意很难搞就对了,也没有什么人去用它。 

13.ege_setpattern_ellipsegradient

void EGEAPI ege_setpattern_ellipsegradient(ege_point center, color_t centercolor,
	float x, float y, float w, float h, color_t color, PIMAGE pimg = NULL);
设置高级函数颜色填充模式为椭圆渐变颜色填充模式。
有效区域为椭圆区域,区域内容颜色渐变填充。
填充区域在有效区域内才能正确填充。

void ellipsegradient(
    ege_point center,            //中心点坐标
    color_t centercolor,         //中心点颜色
    float x,
    float y,
    float w,
    float h,
    color_t color,               //边界颜色
    PIMAGE pimg = NULL
);

这里也是直接放代码了。

#include<bits/stdc++.h>
#include<ege.h>
using namespace std;
using namespace ege;
int main(){
	initgraph(640,480);
	ege_setpattern_ellipsegradient((ege_point){125,150},RED,50,100,200,100,YELLOW);
	ege_fillellipse(50,100,200,100);
	getch();
	closegraph();
	return 0;
}

 三、总结

以上就是我们今天要讲的内容了。ege高级绘图函数不止这一些,后面就越来越难了。

我们下次再继续!

上一期:DEV-C++ ege.h库 绘图教程(一)

下一期:DEV-C++ ege.h库 绘图教程(三)

  • 27
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值