资源描述:
《c语言实现可视化人机界面的有效方法》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、C语言实现可视化人机界面的有效方法引言 C语言中要实现可视化人机界面,就必须要绘制图像,而printf()函数只能用来输出文本,显然不能满足绘图的要求。但是,C语言标准函数库提供了一个较为强大的图形函数库,所有图形函数都在头文件graph程序包括了Graphics.h头文件以后,所有图形函数的使用都必须在图形模式下进行。而默认模式都是文本模式,在这种模式下所有图形函数都是无法正常工作的。所以必须先使用一个图形模式初始化函数将计算机设置为图形模式。本文利用这些图形函数提出了实现可视化人机界面的有效方
2、法。1设置图形模式 要使用C语言绘制图形通常首先要提供一个graphics.h头文件,它包含了大量的图形绘制函数。无法立即使用这些函数,必须首先设置屏幕为图形模式。要将原来屏幕默认的文本模式(80列,25行字符模式)设置为图形模式,必须对显示卡进行操作。显示卡实际上就是显示适配器的通称,不同的显示适配器有着不同的色彩种数和图形分辨率。因此,在使用图形函数作图之前,必须使用一个Graphics.h图形函数库提供的初始化图形模式的initgraph()函数根据显示适配器种类设置成为某种确定的图形模式。
3、 另外,尽管在程序最开始加了#include ,但如果在初始化图形语句中没有将驱动程序的路径写对,会导致程序无法找到图形驱动文件,从而无法在图形模式下进行工作。在屏幕上总是出现如下出错信息: BGIError:Graphicsnotinitialized(useinitagraph)下面给出一个最简化的初始化图形模式的例程以清楚地说明问题: #include /*声明标准图形函数头文件*/ intmain() { intgdriver,gmode;/*定义图形驱动器变量*
4、/ gdriver=DETECT;/*设定图形驱动器为自动监测*/ initgraph(&gdriver,&gmode,c:tc); /*初始化图形模式*/ line(100,100,200,200);/*画线*/ getch(); closegraph();/*关闭图形模式*/ return0; } 程序的几点说明: (1)对于gdriver,是原本要求设置所希望的并且计算机提供的图形驱动器,而gmode则是对应于这种驱动器的使用模式。将gdriver设
5、置为DETECT,让硬件自动监测图形驱动器和模式,这将非常省力。 (2)如果发现bgi文件在c:tc目录下,而当前目录在c:\下,path可以使用绝对路径,如:c:\tc;也可以使用相对路径,如:\tc。 (3)一旦初始化了图形模式便可以作图了,在程序中line(100,100,200,200)语句就是在图形模式下画一条从点(100,100)到点(200,200)的直线。(4)使用closegraph()函数来退出图形状态回到默认的文本状态。2在图形模式下写字 在图形模式下,仍
6、然可以使用标准输出printf(),puts(),putchar()将文本输出到屏幕。不过C语言图形函数提供了一些专门用于在图形显示模式下的文本输出函数outtextxy()等。 还可以利用setcolor()函数设置输出文字的颜色。用户还可以对文本字符大小进行设置,具体实现方法有如下两个函数: settextstyle()/*水平和垂直方向以相同倍数放大*/ setusercharsize()/*分别定义水平和垂直放大倍数*/3独立图形程序的建立 当在图形模式下写好程序,然后放在别的
7、用户的计算机中却发现对方根本无法使用。这是因为在设置图形模式的时候,要求有对应的BGI文件(对于用initgraph()函数直接进行图形初始化程序,在编译和连接时并没有将相应的驱动程序*.bgi装入到执行程序)。而将软件复制给用户的时候并没有将BGI文件复制给用户,于是用户根本无法进入图形模式(当程序进行到initgraph()语句时,从该函数中第三个形式参数char*path所规定的路径中去找相应的驱动程序,若没有,将出现错误: BGIEorro:Graphicsnotinitialize(us
8、einitgraph))即便将所有*.bgi文件复制给用户,还是可能存在一个路径错误问题。 因此只能将BGI文件(图形驱动程序)也一起装到程序中,这样问题就解决了。这里提供了建立一个不需要驱动程序就能独立运行的可执行图形程序的方法,以下是具体步骤(这里以VGAEGA显示器为例): (1)在C语言编译器目录下输入命令: BGIOBJEGAVGA BGIOBJ命令将驱动程序EGAVGA.BGI转化成EGAVGA.OBJ的目标文件。 (2)