标题 | C语言实现可视化人机界面的有效方法研究 |
范文 | 孙炼 摘要:C语言当前最主流的结构化程序设计语言,在当前的软件编程中用处比较广泛,怎样使用C语言发挥动画以及图像输出的功能是我们需要重点研究的课题内容。本文中设置了计算机的相关图形模式,并且构建了相对独立的图形程序,探究了C语言输出图像的整个过程,并且探讨了制作简单动画的具体方法和思路,希望为相关人士提供必要的借鉴。 关键词:C语言;人机界面;有效方法 0前言 C语言是一个具有强大功能的计算机编程语言,并且能够进行有效的数据处理,有着十分广泛的应用和实践。一方面利用C语言可以制作多种系统软件,另一方面利用C语言能够绘制动画、二维图像以及三维图像,进而构成人机界面。一般来说,输出函数printf()只可以输出特定的文本信息,没有绘图的功能。所以在C语言标准中,为了达到绘图的目的,其标准函数库中包含了一个功能强大的图形函数库。通过图形模式的操作,能够利用图形函数制作可视化人机界面。 1设置C语言图形模式 想要使用C语言的图形绘制功能,首先需要使用一个头文件,在其中我们可以看到许多有用的图形绘制函数。但是这些函数并不是可以直接使用,需要先把屏幕设置成图形模式才可以进行。 屏幕刚开始默认是文本模式(25行,80列字符模式),需要操作显示卡才能继续。这里所说的显示卡,其实是显示适配器的一般程序,对于不同规格的显示适配器来说,具有各不相同的图形分辨率以及色彩种数。在利用图形函数开始做图之前,需要在graphics.h图形函数库中选择一个合适的函数,选择initgraph()函数,而后依据显示适配器的具体种类和参数将其设定成特定的图形模式。 需要注意的是,在程序的最开始需要加一个#include BGI Error:(use initagraph)Graphics not initialized 以下笔者通过一个常见的例子来解释这个问题: #include Intmain() { Initgraph;/*图形模式初始化/ gdriver=DETECT;/*把相应的图形驱动器设置为自动测量*/ Int gdriver,gmode;/*对图形驱动器的相应变量进行定义*/ Getch(); Line(200,200,100,100);/*进行画线*/ Closegraph();/*把相应的图形模式关闭*/ return 0: } 以下是对这个程序的说明: 第一点:关于gdriver,这是个开始要求设置的特定图形驱动器,相应的gmode就是和这种驱动器对应的。如果把gdriver设置成DETECT,计算机硬件就会自动地检测模式和图形驱动器,这样的效率比较低。 第二点:在特定情况下,比如C:\\下有当前目录,c:\\下有bgi文件,相应的path就可以采用绝对路径的形式。 第三点,如果完成了图形模式的初始化,那么可以开始进行做图,在这个程序里,line(200,200,100,100)就是一个从点(200,200)到点(100,100)的直线。 第四点,在程序中使用了一个从图形模式转变成文本模式的函数:closegraph()。 2在特定的图形模式下写字 在特定的图形模式中,也能够使用一般的输出putchar(),puts()和printf()在屏幕上输出相应的文本。但是在上文提到的C语言图形函数中,包括具有图形显示模式下文本输出功能的函数outtextxy()等等。 程序设计者可以使用setclor()这个函数来调节相应的文字的具体颜色,而且用户能够随意地设置文本字符的具体大小,一般来说是通过这两个函数来实现功能的: Setusercharsize()/*这个函数用来定义垂直以及水平的具体放大倍数*/ Settextstyle()/*这个函数的功能是以一样的倍数来放大垂直和水平方向*/ 3建设独立的图形模式 利用图形模式完成程序之后,在其它的计算机中运行发现这个程序无法运行。究其原因,是因为在图形模式的设置中,没有相应的BGI文件(如果想要使用initgraph()这个函数,那么在连接和编译的过程中需要特定的*.bgi驱动程序装入相应的执行程序中)。如果把在转移软件的过程中没有附带相应的BGI文件,那么这个用户就没有办法进到相应的图形模式里。 就算是把全部的*.bgi文件转移给相应的用户,还是存在出现路径问题的可能性。 所以在实际操作过程中,可以把整个图形驱动程序都置入程序里,这样能够完美地解决相应的问题。其实,如果没有驱动程序,可以单独使用可执行图形程序,具体的方法如下(在这个例子中使用的是EGA VGA显示器): 第一步,首先在相应的编译目录里上输入这样的命令: EGAVGA BGIOGJ 使用这个BGIOBJ命令的目的是把EGAVGA.BG驱动程序转变为目标文件EGAVGA.OBJ。 第二步,在相应的编译目录里输入这样的命令: TLIBkEGAVGA+GRAPHICS.LIB 在这个命令中,目的是把相应的EGABGA.OBJ的模块,置入到特定的GRAPHICS.LIB库文件里。 第三步,如果要使用initgraph()函数,则需要加入特定的命令,目的是把相应的EGAVGA驱动程序置入到特定的GRAPHICS.LIB文件里。 4实现动画的具体思路 如果在特定的位置划出一条红颜色的直线,那么如果再次画一个红线,原本的红线不会发生变化,还是在那里。但是如果最开始的红线是使用异或方式画的,那么在画第二条线之后,就会发现原本的红线不存在了,从屏幕上消失不见了。可以使用这样的方法实现这个过程: #include #include #include #inlude Main(){ setcolor(blue);//把前景的颜色设置成蓝色 setwritemode(PUT-XOR);//异或模式设置 Initgraph(&gmode,&gdriver,””);//图形模式的初始化 line(200,500,200,100);//画出相应的线段 Closegraph();//把图形模式关闭,然后进入到文本模式中 return(); } 在这个程序中使用了异或模式,可以利用二次完全重画的方式抹掉原来的图形。根据以上的分析,异或可以说是绘制动画的良好选择。 5结论 本文探讨了C语言图形模式,使用了亦或的方式和图形函数,成功地制作了可视化的人机界面。这种操作思路容易理解而且方便操作,能够解决人机可视化问题。
|
随便看 |
|
科学优质学术资源、百科知识分享平台,免费提供知识科普、生活经验分享、中外学术论文、各类范文、学术文献、教学资料、学术期刊、会议、报纸、杂志、工具书等各类资源检索、在线阅读和软件app下载服务。