资讯详情

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

EGE专栏:EGE专栏

上一篇:EGE基本介绍(3):开场动画

下一篇:EGE基本介绍(5):换上我的彩色画笔!


文章目录

  • 操作简单的窗口
    • 1. 窗口标题
    • 2. 窗口位置
      • 2.1 设置窗口位置
      • 2.2 指定初始窗口的位置
      • 2.3 移动窗口`(ege20.08新增)`
    • 3. 窗口大小
      • 3.1 指定初始窗口的大小
      • 3.2 改变窗口大小`(ege20.08新增)`
      • 3.3 全屏
      • 3.4 窗口尺寸可变
      • 3.5 获取窗口大小
    • 4. 操作更多窗口

操作简单的窗口

1. 窗口标题

??可使用窗口标题 来设置。

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就可以了,更多可以在查看。

  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 指定初始窗口大小

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

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

  调用 改变窗口大小,如改变窗口大小为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);

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

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 获取窗口大小

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

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基础入门篇(五):换上我的彩色画笔!

标签: ege红外传感器p60074

锐单商城拥有海量元器件数据手册IC替代型号,打造 电子元器件IC百科大全!

 锐单商城 - 一站式电子元器件采购平台  

 深圳锐单电子有限公司