当前位置:首页 期刊杂志

C语言实现可视化人机界面的有效方法研究

时间:2024-04-25

孙炼

摘要: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语言图形模式,使用了亦或的方式和图形函数,成功地制作了可视化的人机界面。这种操作思路容易理解而且方便操作,能够解决人机可视化问题。

免责声明

我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自各大过期杂志,内容仅供学习参考,不准确地方联系删除处理!