C语言 图形化

在上学期小学期转专业班的补课-十天内完成来bupt的第一个项目,我负责就是图形化和完成输出的任务。

最开始我是用的Qt,但是Qt的入门和掌握太花时间了,最后万般无奈地情况下我选择了EGE图形库。

首先提一下,笔者使用Visual Studio 2017开发环境,至于ege图形库安装和生效大家可以去csdn里面搜。

ege能实现一些图形化的功能,比如说:

绘制直线 绘制矩形 绘制曲线(正圆和椭圆) 绘制字符串

贴图:各种格式图片文件

设置画笔的颜色和线条粗细 提供文本输入对话框 移动画面的某些部分(动画)

安好了ege之后。。。

#include <graphics.h> // 引用图形库

新建和关闭图像:initgraph(640,480)//创建大小为640*480的画卷

对应的,关闭图像:closegraph()

处理鼠标/键盘事件:getch(),getkey(),getmouse(),其中getch和c一样的用法

在某个坐标画圆:circle(横坐标,纵坐标,半径大小)

到此我们可以初步的尝试一下了:

#include <graphics.h>      // 就是需要引用这个图形库
int main()
{
    initgraph(640, 480);   // 初始化为640*480大小的窗口
    circle(200, 200, 100); // 画圆,圆心(200, 200),半径100
    getch();               // 等待用户按键,按任意键继续
    closegraph();          // 关闭图形界面
    return 0;
}

提一句:在生成的图像中,xy轴是这样的分布,x代表水平轴,y代表铅垂轴,长度的单位为像素

还有一些函数:

setbkcolor 设置当前绘图背景色,就是生成的图画的背景颜色

setcolor     设置当前绘图前景色,比如你要写一串紫色的fuck you

setfillcolor    设置当前绘图填充色

arc 画椭圆弧。

bar 画无边框填充矩形。

 drawpoly 画多边形。

ellipse 画椭圆。

fillellipse 画填充椭圆。

fillpoly 画填充的多边形。

我们接下来看一个小程序:

#include <graphics.h>
#include <conio.h>
#include <windows.h>
int runbar(); //上下移动的方块
int main() {
    initgraph(640, 480);  
    runbar();			// 调用动画函数
    closegraph();          // 关闭图形界面
    return 0;
}
int runbar()//移动的方块 
{   setbkcolor(WHITE);	
    int direction=1;
    int positionY=80;
    int speed=20;//方块运行速度
 while(!_kbhit())//按任意键结束
 {
	     if(positionY<80||positionY>391)
			 direction=(direction+1)%2;//改变方向 
         	     setfillcolor(BLUE);
	     bar(280,positionY,380,positionY+20);
         Sleep(speed);
                setfillcolor(WHITE);
	  //擦除原来的方块,用与背景相同的颜色
	     bar(280,positionY,380,positionY+20);

	     if(direction==1)    positionY += 10;
	     else	 positionY -= 10;
	}
}

另外,文字输出函数:

setfont(30, 0, "华文楷体");//指定字体高度宽度

setcolor(BLACK);

outtextxy(270, 20, "演示程序"); //写文字,outtextxy不支持\t \n这类格式化用的特殊字符

outtextxy(100, 100, "Hello EGE Graphics"); //要使用特殊格式化字符请用outtextrect

outtextrect(100, 120, 200, 100, "\tHello EGE Graphics\nHere is the next line.");

举个例子:

void output(){
    	//文字背景色(注意setbkcolor函数也会同时改变文字背景色)
	setfontbkcolor(EGERGB(0x80, 0x00, 0x80));
	//设置字体,第一个参数是字体的高度(像素),第二个参数是字体的宽度,第二个参数如果为0,就使用默认比例值
	//如果高度为12,即相当于小五号字,或者9磅字
	setfont(20, 0, "宋体");
	outtextxy(100, 100, "Hello EGE Graphics");
	outtextrect(100, 120, 200, 100, "\tHello EGE Graphics\nHere is the next line.");
	//设置文字背景填充方式为透明,默认为OPAQUE不透明
	setbkmode(TRANSPARENT);
	outtextxy(100, 250, "Hello EGE Graphics, 中文也是支持的");
	getch();
}

猜你喜欢

转载自blog.csdn.net/qq_42229034/article/details/82352121