EGE基础入门篇(四):窗口简单操作

EGE专栏:EGE专栏

上一篇:EGE基础入门篇(三):开场动画

下一篇:EGE基础入门篇(五):换上我的彩色画笔!


窗口简单操作

测试所使用ege版本:20.08

1. 窗口标题

  窗口标题可以使用 setcaption() 来设置。

setcaption("窗口标题");

  setcaption() 可以随时调用,创建窗口后也可以调用 setcaption() 来修改窗口标题。

  如果你想窗口一开始便使用想要的标题,那就在调用 initgraph() 创建窗口之前调用 setcaption() 吧!

示例代码

#include <graphics.h>

int main()
{
	setcaption("初始窗口标题");				//设置窗口标题
	initgraph(320, 240, INIT_RENDERMANUAL);	//初始化窗口
	setbkcolor(WHITE);						//设置窗口背景色
	
	getch();								//暂停,等待按下任意键

	setcaption("现在窗口标题变啦!");			//修改窗口标题
	
	getch();								//暂停,等待按下任意键
	closegraph();							//绘图结束,关闭窗口
	
	return 0;
}

  运行结果如下图所示,窗口标题发生了改变。

在这里插入图片描述

在这里插入图片描述

2. 窗口位置

  前面使用initgraph创建的窗口,在屏幕上出现的位置是不确定的,每次都可能不一样。这时因为EGE的窗口在默认情况下位置由系统决定,如果有固定窗口位置或者调整窗口的需要,可以调用相关的函数来进行设置。

2.1 设置窗口位置

  窗口位置是指窗口左上角在屏幕上的坐标(单位为像素),屏幕的坐标系如下图所示:
窗口在屏幕上的位置

2.2 指定初始窗口位置

  窗口第一次创建,会在屏幕上的某个位置出现,这个位置默认是由系统决定的,也就是说每次出现的位置可能都不一样。

  如果想要每次窗口都出现在固定的位置,可以在调用 initgraph() 之前使用 setinitmode() 进行设置。如设置窗口左上角在屏幕上的坐标为 ( x , y ) (x, y) (x,y),则如下所示:

setinitmode(mode, x, y)
initgraph(width, height);

  mode参数是初始化模式,传入0就可以了,更多初始化模式可以在EGE窗口章节查看。

  20.08版本新修改的bug,导致setinitmode失效,可以等待新版本发布,或者自行从github上编译最新版本的EGE。

示例代码

#include <graphics.h>

int main()
{
	//设置窗口位置为(100, 100)
	setinitmode(INIT_RENDERMANUAL, 100, 100);
	
	//初始化图形环境,设置窗口大小为640x480
	initgraph(640, 480, INIT_RENDERMANUAL);

	//暂停,等待按键
	getch();

	//关闭窗口
	closegraph();

	return 0;
}

2.3 移动窗口(ege20.08新增)

  调用 movewindow 移动窗口

movewindow(100, 50, redraw);

   redraw参数是在窗口移动后是否对窗口内容进行一次重新绘制,填 true即可。

3. 窗口大小

3.1 指定初始窗口大小

  initgraph 中的 width, height参数即为初始窗口大小。

3.2 改变窗口大小(ege20.08新增)

  调用 resizewindow()函数 改变窗口大小,如改变窗口大小为600x400。

resizewindow(600, 400);

  在改变窗口尺寸后,画面内容会丢失,所以需要根据新窗口大小,重新绘制一遍。

#include <graphics.h>

int main()
{
	//初始化图形环境,设置窗口大小为640x480
	initgraph(640, 480, INIT_RENDERMANUAL);
	
	//更改背景色
	setbkcolor(WHITE);
	
	//暂停,等待按键
	getch();
	
	//改变窗口大小
	resizewindow(320, 240);
	
	//重新绘制
	setbkcolor_f(WHITE);
	cleardevice();
	
	getch();

	//关闭窗口
	closegraph();

	return 0;
}

3.3 全屏

  窗口宽高参数有个特殊的值,就是-1 。传入-1,窗口尺寸将会扩展成屏幕大小。
  初始窗口大小设置成全屏:

initgraph(-1, -1, INIT_RENDERMANUAL);

  创建窗口后,设置窗口成全屏大小。

resizewindow(-1, -1);

  这里可能有个小问题,就是其实看到窗口无法全屏,左右两边还留有缝隙,其实这是窗口的阴影部分。可以设置为无边框窗口,从而去掉窗口阴影部分,具体查看 EGE基础:窗口篇 章节。

3.4 关于窗口尺寸可变

  如果你窗口的尺寸随意可变,那应该设置参数用于保存窗口的大小。改变窗口大小后,调整参数,而程序中的绘图则是根据这窗口大小参数来进行绘制

  如下面所示,绘制一个在窗口中心的圆。在窗口大小改变的时候,窗口中心已经改变,所以不能设置成定值,而要设置两个变量作为保存窗口大小。以窗口大小作为参数,窗口大小改变时,根据窗口大小重新绘制,图形依然能保持在窗口中心。

在这里插入图片描述

在这里插入图片描述

#include <graphics.h>

void draw(int x, int y)
{
	setcolor(BLUE);			//设置前景色
	setfillcolor(BLUE);		//设置填充颜色

	//绘制一个圆
	fillellipse(x, y, 100, 100);
}

int main()
{
	initgraph(640, 480, INIT_RENDERMANUAL);		//初始化图形环境,设置窗口大小
	setbkcolor(WHITE);		//设置背景色

	//获取窗口大小,在窗口中心处绘图
	draw(getwidth()/2, getheight()/2);
	
	getch();	//暂停,等待按键

	resizewindow(400, 400);		//改变窗口大小

	cleardevice();	//清屏

	//重新获取窗口大小,在窗口中心处绘图
	draw(getwidth()/2, getheight()/2);

	getch();
	closegraph();	//关闭窗口

	return 0;
}

3.5 获取窗口大小

  调用getwidth()getheight() 即可获取窗口当前的宽高信息。

int width  = getwidth();
int height = getheight();

示例代码

#include <graphics.h>

int main()
{
	initgraph(640, 480, INIT_RENDERMANUAL);	//初始化窗口

	setbkcolor(WHITE);						//设置窗口背景色
	
	int width  = getwidth();
	int height = getheight();

	//设置文字样式,输出文字
	settextjustify(CENTER_TEXT, CENTER_TEXT);
	setfont(24, 0, "宋体");
	setcolor(BLACK);
	xyprintf(320, 240, "窗口大小为%d x %d", width, height);
	
	getch();								//暂停,等待按下任意键

	closegraph();							//绘图结束,关闭窗口

	return 0;
}

在这里插入图片描述

4. 更多窗口操作

如果想要了解更多窗口相关内容,请阅读:EGE基础:窗口篇


EGE专栏:EGE专栏

上一篇:EGE基础入门篇(三):开场动画

下一篇:EGE基础入门篇(五):换上我的彩色画笔!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

依稀_yixy

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值