ege图形库基本说明.docx

上传人:b****3 文档编号:13264393 上传时间:2023-06-12 格式:DOCX 页数:18 大小:25.44KB
下载 相关 举报
ege图形库基本说明.docx_第1页
第1页 / 共18页
ege图形库基本说明.docx_第2页
第2页 / 共18页
ege图形库基本说明.docx_第3页
第3页 / 共18页
ege图形库基本说明.docx_第4页
第4页 / 共18页
ege图形库基本说明.docx_第5页
第5页 / 共18页
ege图形库基本说明.docx_第6页
第6页 / 共18页
ege图形库基本说明.docx_第7页
第7页 / 共18页
ege图形库基本说明.docx_第8页
第8页 / 共18页
ege图形库基本说明.docx_第9页
第9页 / 共18页
ege图形库基本说明.docx_第10页
第10页 / 共18页
ege图形库基本说明.docx_第11页
第11页 / 共18页
ege图形库基本说明.docx_第12页
第12页 / 共18页
ege图形库基本说明.docx_第13页
第13页 / 共18页
ege图形库基本说明.docx_第14页
第14页 / 共18页
ege图形库基本说明.docx_第15页
第15页 / 共18页
ege图形库基本说明.docx_第16页
第16页 / 共18页
ege图形库基本说明.docx_第17页
第17页 / 共18页
ege图形库基本说明.docx_第18页
第18页 / 共18页
亲,该文档总共18页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

ege图形库基本说明.docx

《ege图形库基本说明.docx》由会员分享,可在线阅读,更多相关《ege图形库基本说明.docx(18页珍藏版)》请在冰点文库上搜索。

ege图形库基本说明.docx

ege图形库基本说明

EGE基本说明

本库是一个类似graphics.h的BGI图形库,使用方法相当接近,所以学习过TC图形的话会很容易上手

基本使用方法几乎和TC的一样,只要#include"graphics.h"就可以了

本图形库目前支持VC6,VC2008,VC2010等IDE,同时也支持MinGW编译器和使用MinGW编译器的IDE(如Code:

:

Blocks,C-Free,Dev-CPP,eclipseforC/C++)

在graphics.h头文件的最顶处有相关的说明,并且附带较详细的pdf文档

●为什么要写这个库?

许多学编程的都是从C语言开始入门的,而目前的现状是:

1.有些学校以TurboC为环境讲C语言,只是TurboC的环境实在太老了,复制粘贴都很不方便。

2.有些学校直接拿VC来讲C语言,因为VC的编辑和调试环境都很优秀,并且VC有适合教学的免费版本。

可惜在VC下只能做一些文字性的练习题,想画条直线画个圆都很难,还要注册窗口类、建消息循环等等,初学者会受严重打击的。

初学编程想要绘图就得用TC,很是无奈。

3.还有计算机图形学,这门课程的重点是绘图算法,而不是Windows编程。

所以,许多老师不得不用TC教学,因为Windows绘图太复杂了,会偏离教学的重点。

新的图形学的书有不少是用的OpenGL,可是门槛依然很高。

所以,我想给大家一个更好的学习平台,就是VC方便的开发平台和TC简单的绘图功能,于是就有了这个库。

如果您刚开始学C语言,或者您是一位教C语言的老师,再或者您在教计算机图形学,那么这个库一定会让您兴奋的。

另外:

这个库不是为了给你直接移植BGI图形代码用的,直接移植多半是不能通过编译的。

如果真需要移植,请做相应的修改,或者使用高兼容性的ege老版本图形库

 

●本图形库的优点:

★绘图效率较好,特别在批量绘图模式下,640*480的半透明混合,可以直接使用getpixel/putpixel完成,

并且可以在大约1.5GCPU台式机器上达到60fps(要优化,否则一般的家用机再强也不行)

★灵活性更强,绘图可以直接针对一个PIMAGE,不必只能画在屏幕上

★功能更多,支持拉伸贴图,支持透明半透明贴图,支持图像模糊滤镜操作,

可以用对话框函数进行图形化的输入

★面向动画编程和游戏编程做了功能增强,可以方便地对帧率进行准确的控制

★附带简单的3D矢量运算函数和类,便于3D计算

★支持读写多种格式图片,支持读取bmp,jpg,png,gif,支持保存为bmp和png

★支持GUI模式编程

●简要安装说明

把include/graphics.h文件,复制到你的编译器安装目录下的include目录内

再把lib目录下的文件,复制到你的编译器安装目录下的lib目录内,具体编译器所依赖的文件情况:

VC6:

graphics.lib

VS2008:

graphics08.libgraphics08d.lib

VS2010:

graphics08.libgraphics10d.lib

MinGW:

libgraphics.a

 

●简要使用说明

目前模拟了绝大多数BGI的绘图函数。

使用上,基本和TC/BC没太大区别。

看一个画圆的例子吧:

#include"graphics.h"//引用ege图形库

intmain()

{

initgraph(640,480);//初始化,显示一个窗口,这里和TC略有区别

circle(200,200,100);//画圆,圆心(200,200),半径100

getch();//暂停一下等待用户按键

closegraph();//关闭图形界面

return0;

}

 

呵呵,很简单吧。

●详细安装和使用方法,请看本文档的安装部分。

如果遇到问题,请直接在“ege娘”贴吧发主题帖子吧。

官方联系邮箱:

misakamm[at]gmail[dot]com

EGE安装

点这里查看视频教程帖子,以下是文件说明:

●简要安装说明

首先把压缩包里include目录下所有文件,复制到你的编译器安装目录下的include目录内,不管是哪个编译器

比如,vc2008的include路径类似“MicrosoftVisualStudio9.0\VC\include”,

而lib路径类似“MicrosoftVisualStudio9.0\VC\lib”,vc2010和2008一样。

vc6的话,是“MicrosoftVisualStudio\VC98\Include”和“MicrosoftVisualStudio\VC98\Lib”

然后再把lib目录下对应编译器名目录下的文件,复制到你的编译器安装目录下的lib目录内。

比如你的是vc6,那就把\lib\vc6\下的复制过去。

如果你还是不明白复制到哪里,那请看这个表达:

copy"include\*.*"to"MicrosoftVisualStudio9.0\VC\include\"

copy"lib\*.*"to"MicrosoftVisualStudio9.0\VC\lib\"

前面的"include\*.*"是安装包里的文件

复制了这些文件后,就已经安装完成了。

然后,如果是VC或者VS,那么要建立一个工程

以下是VC6的操作步骤(但VS2008/VS2010/VS2012也类似),请按以下步骤做:

打开VC6后,新建一个Win32Console工程(菜单->文件->新建),如下图:

右上角的工程名字写你喜欢的名字,其下方选择你要建立的工程的目录

点确定后,在弹出的对话框里选择“一个空工程”,然后直接点完成。

然后再次新建,不过这次新建一个C++SourceFile,见下图:

右边文件名写你喜欢建立的名字,然后点确定,就可以开始编写代码了。

最后,请编写如下测试代码检测你的设置是否正确:

#include

intmain()

{

initgraph(640,480);

setcolor(GREEN);

line(100,100,500,200);

getch();

closegraph();

return0;

}

然后,按F7键,或者点菜单上的Build(组建)来编译并链接,如果没有错误,就可以按F5运行了。

 

好了,为什么说VS2008和VS2010也类似呢?

看看如下VS2008的截图你就明白了:

后面建立文件的时候,在左侧的General就能找到C++源文件了。

如果你的是中文版,那就细心找找吧,不难找的。

至于VS2010的就不截图了,因为几乎和VS2008一样。

 

至于在MinGW下的编译问题,会麻烦一些,如果你懂使用命令行编译,那么需要用如下指令编译:

g++yourfile.cpp-lgraphics-lgdi32-limm32-lmsimg32-lole32-loleaut32-lwinmm-luuid-mwindows

其中yourfile.cpp是你要编译的cpp文件

如果你使用的是IDE,那就要看那个IDE是如何设置的,这里无法一一列举,

主要需要设置两样东西:

一是建立Win32Application工程(目的是让它以-mwindows来编译,这个选项很重要)

二是要添加链接库

需要加入graphics,gdi32,imm32,msimg32,ole32,oleaut32,winmm,uuid共8个

例如在Code:

:

Blocks下(需要建立project),在菜单-Project-buildoptions,设置Linker选项,如图:

例如在C-Free5.0下,则可以在菜单->构建->构建选项里,设置连接选项,如图:

但是,如果你是以建立工程的方式建立,而不是建立单文件的话,

或者你发现上面的设置无效,那你需要在菜单-工程-设置,在这设置连接选项

此外,C-Free比较特殊的一点是,如果需要编译为Win32应用程序,那么要用WinMain来声明你的主函数,如:

#include

intWinMain()//这里在graphics.h里已经定义了宏自动把它展开成合法的声明,以减免声明的麻烦,同时用来欺骗C-Free

{

initgraph(640,480);

getch();

closegraph();

return0;

}

又或者,如果你不喜欢这样,那就在链接选项里(即刚刚截图里的参数框里)手工加上-mwindows也可

使用预览

  使用上,基本和TurboC没太大区别。

启动VisualC++6.0,

创建一个控制台项目(Win32ConsoleApplication),选择空项目,

然后新建"C++SourceFile"项,

然后在那个cpp里写代码就行了。

看一个画圆的例子吧:

#include"graphics.h"//就是需要引用这个图形库

intmain()

{

initgraph(640,480);//初始化为640*480大小的窗口,这里和TC略有区别

circle(200,200,100);//画圆,圆心(200,200),半径100

getch();//等待用户按键,按任意键继续

closegraph();//关闭图形界面

return0;

}

  呵呵,很简单吧。

  不过还是有不少区别的,比如颜色上,TC只有16色,而这个库支持了真彩色。

还有,这个库增加了鼠标、键盘扩展、双缓冲、批量绘图、读取图片(点阵或矢量)等功能。

  另外,如果你希望运行时完全不带控制台窗口,如果在VC下,默认就是去掉控制台窗口。

但如果你需要显示出来的话,你可以把#defineSHOW_CONSOLE写在#include"graphics.h"的前面,例如:

#defineSHOW_CONSOLE

#include"graphics.h"

intmain()

{

initgraph(640,480);

getch();

closegraph();

return0;

}

但,如果你用的是CFree,那把main改成WinMain即可实现控制台窗口的隐藏,如下替换一下即可:

#include"graphics.h"

intWinMain()//这里在graphics.h里已经定义了宏自动把它展开成合法的声明,以减免声明的麻烦

{

initgraph(640,480);

getch();

closegraph();

return0;

}

当然,你在VC上也直接这样写也可以,因为也会自动帮你替换回main,所以直接写WinMain可以两边通用。

关于本EGE图形库

相关信息:

作者:

misakamm

Blog:

http:

//blog.misakamm.org

Mail:

misakamm[at]gmail[dot]com

更新历史:

13.03

★画圆/椭圆/弧函数增加浮点版本

★填充函数增加按颜色区域填充(类似画图的油漆桶功能)

★修正IMAGE初始化背景色不是纯黑色

★修正第二次initgraph的状态错误

★源代码结构细调,抽离数据结构实现

13.02

★图形效率优化

★getch特殊键响应不正常修正

★修正keystate状态错误

13.01

★对mouse_msg友好化

12.12

★增加putimage_withalpha

★修正ege_puttexture贴图bug

12.11

★增加对VC2012的支持

★发布文件分类方式调整

12.08

★delay_fps/delay_jfps增加浮点帧率支持

★修正文档已知错误

12.06

★新增函数xyprintf/rectprintf

★修正png处理alpha为0的像素的方案

★修正对带alpha的图片的贴图支持

★增加离线示例和在线示例

★vs2010编译错误修正

★rgb2gray函数修正

12.05

★inputbox_getline函数修正

★mousemove消息参数修正

★增加发布包中的示例

12.04

★库函数调整较大,去除所有大写字母开头的函数,旧程序基本都需要改动才能正常编译

★mingw编译参数有变,增加链接库msimg32

★不允许使用IMAGE,全部改用PIMAGE,使用newimage/delimage构造和删除

★颜色全部统一为ARGB格式,不要使用宏RGB,要用EGERGB代替(否则红蓝颠倒)

★增加带aa的绘图

★增加渐变填充

★增加纹理概念,增加简单的纹理贴图

★修正若干bugs(主要的是鼠标移动消息参数不正确)

★文档增加动画示例

★增加支持64位静态库(仅vc9/vc10)

★去除原有的编译警告

★增加部分函数过时警告,不屏蔽vs的过时警告

★示例代码更新及增加

★增加邮件列表通讯讨论

12.03stable稳定版svn89

★调整版本命名方式(年.月,像12.03即12年三月发布)

★调整编译参数

★默认标题风格调整

★源代码目录结构调整

2012年:

0107:

★对objc++编译做兼容

★部分函数风格调整

★增加控件button(未完善,测试版)

2011年:

0724:

★Bug修正

★解决在vs2010下编译不正确的问题

★fix在linuxwine下窗口移动困难的问题

0602:

★增加GUI

★修正部分png读取错误

★调整getkey函数,增加配对的kbmsg函数

★增加getmouse函数

★增加setcaption函数

★版本更新为20110602V1.0.1Beta

0520:

★调整头文件,以使兼容性更好,减少链接出错

★GetFPS函数去掉参数

★版本更新为20110520V0.3.8Release

0416:

★增加png图片格式的读写函数(读取仍然用getimage,保存用savepng)

★增加压缩解压函数(ege_compress/ege_uncompress/ege_uncompress_size)

★版本更新为20110416V0.3.8Beta

0414:

★修正拖动时,窗口可能会漂移的问题

★重绘效率优化

★增加INIT_LOCKWINDOW

★批量绘图函数改名为窗口锁定函数(WindowLock/WindowUpdate/WindowUnlock),原函数仍然能使用

★IMAGE类增加getdc接口以便GDI操作(仅可用于Blt操作其它操作慎用)

★VC6库改用/MT编译以便多线程编程

★版本更新为20110414V0.3.7Release

0401:

★增加drawlines和drawbezier函数,优化drawpoly的效率

★增加对设置为屏幕保护程序的支持

★增加安装程序

★增加WM_MOUSEWHEEL宏定义以防在VC6上编译出错

★文档更新

★版本更新为20110401V0.3.6Release

0321:

★更名为EGE,取代原EGE(EasyGraphicsEngine)库

★增加旋转缩放贴图函数(接口还可能变化,暂不推荐使用)

★增加窗口尺寸自动修正(在分辨率变小强制窗口尺寸变小了,再变回大分辨率的时候)

★版本更新为20110321V0.3.5Release

0129:

★修正头文件一个类型错误的问题

★增加saveimage函数,用来保存图片(目前只支持bmp)

★版本号更新为20110129V0.3.4Release

2010年以前的更新记录:

1213:

★增加对基本音频播放的支持(wav,mp3,midi)

★版本号更新为20101213V0.3.3Release

1212:

★更新文档

★增加独立下载库和帮助文档

★版本号更新为20101207V0.3.2Release

1207:

★修正图形更新同步时可能偶然发生无法更新的情况

★增加setbkcolor_f函数,功能是仅设置背景颜色,

仅当调用cleardevice时才使用这个颜色一次性清除屏幕

★提升了重绘性能,并修正一个资源泄露的问题

★增加swappage函数,实现双缓冲模式

1122:

★调整GetMousePos初始化坐标

★修正鼠标滚轮坐标不正确的问题

★随机函数改用专业算法,并增加randomf函数

★增加3D数学函数

★增加3D向量类

★修正文档错误,补充没加到文档的函数

★版本号改为20101122V0.3.1Release

1118:

★修正了三个新贴图函数的BUG

★增加了outtextrect,setfontbkcolor

★增加了logo显示

★修正鼠标消息接收时内容不全的问题

★修正多次开关批量绘图时可能会卡死的BUG

★相应更新文档

★版本号改为20101118V0.3.0Release

1113:

★对imagefilter_blurring函数调整参数次序,并增加默认参数,以使其使用更方便

★优化透明,半透明贴图效率

1111:

★增加三个函数支持透明/半透明贴图(putimage_transparent,putimage_alphablend,putimage_alphatransparent)

★增加图像模糊函数(imagefilter_blurring)

★版本号改为20101111V0.2.5Gamma

1101:

★调整putpixels,使得效率更高一些

★修正部分绘图函数如rectangle不空心的BUG

★增加INITGRAPH宏,以便于使用全局IMAGE时,抢先初始化

★相应更新文档

★版本号改为20101101V0.2.4Gamma

1023:

★增加putpixels函数,便于批量画点时提升速度

★修正setbkcolor函数颜色不正确的BUG

1013:

★增加GetHInstance函数,以便作为读入资源时的参数

★调整closegraph,以便close后再次init

★修正setviewport在某个版本里误编辑的问题导致区域失效

★textwidth和textheight增加单字符版本

★修正总是隐藏控制台无法故意显示的问题

★增加KEYMSG_FIRSTDOWN,便于实现按键按下一次仅响应一次的需求

★修正相应的俄罗斯方块例子(因增加了KEYMSG_FIRSTDOWN的原因)

1010:

★增加ShowMouse函数,以控制鼠标是否隐藏

★增加对VC2005的支持(不带SP1,打了SP1的不能编译通过,其实为了更稳定建议直接用VC2008)

★增加IMAGE对象有效性检查,以便更容易发现指针错误

★相应更新文档,并修正文档中部分已发现的问题

★调整initgraph,允许二次调用,并修改窗口大小(这时原内容会擦除,但除了size和viewport以外,其它属性不变)

★修正批量画图多次调用时可能发生的死锁问题

★增加初始化IMAGE在initgraph之前会直接报错并强制关闭程序

★版本号改为20101010V0.2.2Gamma

0930:

★调整delay_fps,使得帧数更稳定些

★修正getch,kbhit带参数时的一些问题

★改为使用SHOW_CONSOLE才显示控制台窗口,默认不显示,详见PDF内“超简单的使用预览”

★增加getpixel_f,putpixel_f,为原函数的加速版(但调用时有风险,但其实原来的已经足够快,现在的已经快不了多少)

★增加API_Sleep函数用于调用原来的原版Sleep函数

★增加delay_jfps用于自动控制跳帧(跳多少看流畅程度,如果绘图不复杂计算量少,一般不会跳)

★GetFPS函数增加一个可选参数,以便得到实际绘图帧率(在跳帧模式下)

★增加一些方便在CFree下编程的特性,如WinMain,详见PDF内“超简单的使用预览”

★基本完成pdf,并加入了几个比较好的程序源代码,包含一个俄罗斯方块程序

★版本名改为20101001V0.2Gamma

0928:

★前一次修改后对效率的调整和优化

★修正InputBoxGetLine,getch,GetMouseMsg的BUG

★调整延迟函数的逻辑,使得在相同帧率下能更流畅

★增加fclock函数

★增加mingw3.4.5编译器使用的静态库,即能支持在CFree下编译

★增加pdf格式的说明文档(测试版,部分函数还没有补充完成)

★版本名改为0.2Beta

0926:

★大幅修改,使程序不会因为鼠标拖动而停下

★即使不调用delay族函数也会更新窗口,只是并不流畅,所以如果你想要流畅动画,推荐手工调用delay族函数

★增加GetFPS函数,可以随时获取当前帧率

★GetLineInputBox更名为InputBoxGetLine,以便于增加类似InputBoxGetNumber时,相同前缀容易查找

★getch和kbhit改为宏,以防与conio.h库冲突,当包含conio.h时,会自动忽略

★版本名改为0.2Alpha

注:

delay族函数在graphics.h头文件的最顶处有相关的说明,就是指Sleep,delay,delay_ms,delay_fps,getch,GetMouseMsg

0923:

★修正getch的行为,以保持非特殊按键键码与CRT(CRun-Time)的getch一致

0922:

★增加GetLineInputBox在图形界面下进行字符串输入,使用回车确认输入,ESC取消输入(输入为空)

★扩展getch和kbhit函数,使得能根据参数把按键放开的事件也能取得,两个函数需要组合使用

0921:

★增加voidsetinitmode(intmode,intx=CW_USEDEFAULT,inty=CW_USEDEFAULT)

第一个参数mode=0为普通窗口,1为无边框窗口,xy是初始窗口坐标,mode为1时,用于方便全屏模式

此函数必须在initgraph前调用,否则无效

★initgraph函数,若窗口大小均指定为-1,-1,则使用屏幕大小,用于方便全屏,全屏后可用getwidth和getheight取得窗口大小

★VC下使用HIDE_CONSOLE可以使控制台窗口彻底消失,使用方法如下:

#defineHIDE_CONSOLE

#include"graphics.h"

要注意的是,#defineHIDE_CONSOLE必须在graphics.h的前面

★改为Beta版本

0920:

★修正若干BUG

0918:

★第一版发布测试

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 医药卫生 > 基础医学

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2