(二)EGE基本画图

17 篇文章 2 订阅
2 篇文章 0 订阅


上一篇: (一)ege基本认识和安装使用教程


博文是用dev-c++写的(←温馨提示

EGE图形库注意事项

  • 本库不支持dev-c++编译器4.8.1以上版本,如需要,请自行下载其他版本
  • 本库必须使用c++编译器编译,使用C会报错,还是先掌握一些C++知识再来看吧qwq
/*
 * 使用本库,必须用C++编译
/*
  • 包含并使用本库时,不要包含conio.h头文件,如需共存,请使用多文件分开包含的模式使用
#if defined(_INC_CONIO) || defined(_CONIO_H_)
#error can not include "conio.h" before "graphics.h"
#endif
  • 如果需要显示控制台窗口,请在包含本文件的前面加一行#define SHOW_CONSOLE
#define SHOW_CONSOLE
  • 调用Sleep这个API时,或者调用delay,实际均会转化为调用delay_ms,如必需调用API请使用 api_sleep
  • delay_ms(0) 能自行判断有没有更新的必要,连续多次但不大量的调用并不会产生帧率的影响
  • 调用delay_ms, delay_fps, getch, getkey, getmouse 时,窗口内容可能会更新,这些函数相当于内置了 delay_ms(0)
  • 如果你只需要更新窗口,而不想等待,可以用delay_ms(0)。注意delay只延时而不更新窗口
  • (重点) 合理地使用delay_ms/delay_fps函数,可以减少你的程序占用的CPU,否则一个都没有调用同时也没有getch/getmouse的话,程序将占满一个CPU的时间

EGE的第一个程序

我们先创建一个项目
在这里插入图片描述
这里我们选择一个空白的项目,不如命名为EGE吧
在这里插入图片描述
我们选择一个路径,保存一下
接着开始动起我们的双手,复制粘贴到源文件中

#include <graphics.h>
int main()
{	
	initgraph(640, 480);				//初始化窗口,大小为640 x 480
	setcolor(EGERGB(0xFF, 0x0, 0x0));	//设置绘画颜色为红色
	setbkcolor(WHITE);					//设置背景颜色为白色
	circle(320, 240, 100);				//在坐标(320, 240)处画个半径100的圆
	getch();							//暂停,等待按键输入
	closegraph();						//关闭图形窗口,
	return 0;
}

接下来,把解决方案调成Debug(调试),Release模式下会出现EGE动画,去掉多好!
在这里插入图片描述
按下我们的F11键,给自己程序取个名字之后,直接编译运行
如果错了就看看这篇文章(别告诉我复制错了)
(一)ege基本认识和安装使用教程
编译成功后,会出现一个小圆
在这里插入图片描述

按下任意键后,程序就结束了

这个程序也就这么几行,分析一下:

  • 第一行包含一个头文件graphics.h,这是EGE图形库里的头文件,不是编译器里自带的
#include<graphics.h>
  • 接下来的主函数中,第一句是创建(初始化)窗口,初始化一个宽640,搞480的画布
initgraph(640,480);
  • 下面两行则是一个用来设置笔的颜色,一个用来设置背景色
setcolor(EGERGB(0xFF, 0x0, 0x0));     //设置笔色
setbkcolor(WHITE);                    //设置背景色

PS:扩展一下,EGERGB是个宏定义,里面的三个参数转换成颜色值,通过这三个参数,可以得到不同的颜色。
setcolor是设置笔的颜色
setbkcolor全称为set background color,就是设置背景色,这里的参数不再是EGERGB,而是WHITE(也就是白色的意思)
为什么不用EGERGB?
WHITE其实就是就是EGERGB(0xFC, 0xFC, 0xFC),所以不难发现,WHITE用来代替EGERGB,更加的直观
而类似于WHITE这样的定义还有很多,比如:

// 颜色
enum COLORS {
	BLACK           = EGERGB(0, 0, 0),                //黑色
	BLUE            = EGERGB(0, 0, 0xA8),             //蓝色
	GREEN           = EGERGB(0, 0xA8, 0),             //绿色
	CYAN            = EGERGB(0, 0xA8, 0xA8),          //青色
	RED             = EGERGB(0xA8, 0, 0),             //红色
	MAGENTA         = EGERGB(0xA8, 0, 0xA8),          //品红色
	BROWN           = EGERGB(0xA8, 0xA8, 0),          //棕色
	LIGHTGRAY       = EGERGB(0xA8, 0xA8, 0xA8),       //浅灰
	DARKGRAY        = EGERGB(0x54, 0x54, 0x54),       //暗灰
	LIGHTBLUE       = EGERGB(0x54, 0x54, 0xFC),       //浅蓝
	LIGHTGREEN      = EGERGB(0x54, 0xFC, 0x54),       //浅绿
	LIGHTCYAN       = EGERGB(0x54, 0xFC, 0xFC),       //浅青
	LIGHTRED        = EGERGB(0xFC, 0x54, 0x54),       //浅红
	LIGHTMAGENTA    = EGERGB(0xFC, 0x54, 0xFC),       //浅品红
	YELLOW          = EGERGB(0xFC, 0xFC, 0x54),       //黄色
	WHITE           = EGERGB(0xFC, 0xFC, 0xFC),       //白色
};

所以这些像WHITE的定义更加直观,更加方便

  • 接下来是画圆,以(320,240)为中心画一个半径为100的圆
circle(320,240,100); //画圆

xy为轴坐标,radius是半径的意思

  • 下一行为getch()这个在graphics里面有定义,在conio里也有定义,它的作用是等待用户按键,一旦按键,执行下一行
    也有时候我们用getch()来给某个字符赋值:
char ch;
ch=getch();

我们按下一个a,那么ch的值就变成了a
我们按下一个P,那么ch的值就变成了P
我们不赋值,那么按下任何键后任何的值都不会有任何的变化(屁话!)

  • 接着就是最后一行**closegraph()**既关闭窗口
  • return 0返回0,也就是程序结束,呵呵呵呵
    所以我们可以总结一下EGE画图的流程
程序结束
添加头文件
graphics.h
初始化画布
画图
关闭窗口

关于控制台的使用

dev-c++运行之后会有一个控制台,这就很nice
控制台不是程序窗口,程序窗口不是控制台,不要张三李四
控制台我们使用printf、cout等


那么:
那么有人问:控制台输入的变量,怎么在EGE窗口中使用?
那么有人问:EGE窗口怎么输出文字?

控制台输入参数

在控制台中输入圆的半径,从而改变圆的大小

#include<graphics.h>
#include<stdio.h>
using namespace std;
int main()
{
	initgraph(640,480);
	setbkcolor(WHITE);
	setcolor(RED);
	int a;
	printf("请输入圆的半径:");
	scanf("%d",&a);
	circle(320,240,a);
	getch();
	closegraph();
	return 0;
}

在这里插入图片描述

在窗口上输出文字

我们在控制台上输出文字用printf
那么我们在窗口上输出文字用xyprintf


函数定义如下:

void EGEAPI xyprintf(int x, int y, LPCWSTR fmt, ...); // 在指定位置输出格式化字符串,指定绘图目标调用settarget

传四个参数,前两个参数传的是输出位置的坐标,后面三个参数跟printf差不多
示例:

#include<graphics.h>
int main()
{	
	xyprintf(20,20,"%s\n","今天心情怎么样");
	return 0;
}

在这里插入图片描述

结束

撒花!撒花!撒花!

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值