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基础入门篇(三):开场动画