第2节:一个简单的EGE程序
#ifndef _GRAPHICS_H_ #define _GRAPHICS_H_ #ifndef __cplusplus #error You must use C++ compiler, or you need filename with '.cpp' suffix #endif #include "ege.h" using namespace ege; #endif #include <iostream> #include <graphics.h> void main() { initgraph(640, 480);//创建绘图窗口 outtextxy(100, 300, "aloha world");//在指定坐标向右输出字符串 line(10, 10, 400, 400);//在指定坐标输出线段 ege::getch();//等待输入字符 closegraph();//关闭绘图窗口 }
第3节:EGE的输入输出
画出椭圆,填充颜色,并随机变化颜色
#include <graphics.h> void mainloop() { //is_run检测程序是否收到关闭消息 //收到则返回false,退出程序 //delay_fps 控制帧率,60表示 //平均延时”为1000/60毫秒 for (; is_run(); delay_fps(60)) { // todo: 逻辑更新 setfillcolor(EGERGB(random(255), random(255), random(255)));//设置颜色 // todo: 图形更新 // 清屏 cleardevice(); fillellipse(200, 200, 50, 30);//输出椭圆,前两个参数是圆心的坐标,后两个参数是长轴和短轴的半径 } } int main(void) { //INIT_DEFAULT ege默认配置 //INIT_NOFORCEEXIT 由程序本身检测和控制结束 //INIT_RENDERMANUAL与setrendermode(RENDER_MANUAL)等效 setinitmode(INIT_DEFAULT|INIT_NOFORCEEXIT); //图形初始化,窗口尺寸640x480 initgraph(640, 480); //随机数初始化,如果需要使用随机数的话 randomize(); //绘图更新模式设置为手动,仅调用delay_fps/delay_ms //等函数时才刷新,避免闪烁。在RENDER_AUTO模式下,任 //何绘图操作进行时都可能刷新,甚至刚cleardevice就显示 //导致屏幕上有时仅显示一个背景而没有其它内容导致闪烁 setrendermode(RENDER_MANUAL); // 程序主循环 mainloop(); closegraph(); return 0; }
画出圆,并移动
#include <graphics.h> void mainloop() { // 动画控制变量,控制横坐标,初始值为0 int x = 0; setcolor(EGERGB(0, 0xFF, 0));//设置绘图线条颜色 setfillcolor(EGERGB(0, 0, 0xFF));//设置填充颜色 for ( ; is_run(); delay_fps(60) ) { // todo: 逻辑更新 //计算新坐标,右移一个像素,若等于440则移回x=0 x = ( x + 1 ) % 440; // todo: 图形更新 //清屏,重新在新的位置绘图图像 cleardevice(); //圆心坐标是 (x + 半径) fillellipse(x + 100, 200, 100, 100); } } int main() { //INIT_ANIMATION相当于INIT_NOFORCEEXIT| // INIT_DEFAULT|INIT_RENDERMANUAL //下面就不需要再多一步setrendermode setinitmode(INIT_ANIMATION); // 图形初始化,窗口尺寸640x480 initgraph(640, 480); // 随机数初始化,如果需要使用随机数的话 randomize(); // 程序主循环 mainloop(); // 关闭绘图设备 closegraph(); return 0; }