您好,欢迎访问三七文档
当前位置:首页 > 临时分类 > c语言开发综合项目C语言实现图形界面输出
图形函数图形函数TurboC提供了非常丰富图形函数,所有图形函数原型均在graphics.h中,本节重要简介图形模式初始化、独立图形程序建立、基本图形功能、图形窗口以及图形模式下文本输出等函数。此外,使用图形函数时要保证有显示器图形驱动程序*BGI,同步将集成开发环境Options/Linker中Graphicslib选为on,只有这样才干保证对的使用图形函数。1.图形模式初始化不同显示屏适配器有不同图形辨别率。即是同一显示屏适配器,在不同模式下也有不同辨别率。因而,在屏幕作图之前,必要依照显示屏适配器种类将显示屏设立成为某种图形模式,在未设立图形模式之前,微机系统默认屏幕为文本模式(80列,25行字符模式),此时所有图形函数均不能工作。设立屏幕为图形模式,可用下列图形初始化函数:voidfarinitgraph(intfar*gdriver,intfar*gmode,char*path);其中gdriver和gmode分别表达图形驱动器和模式,path是指图形驱动程序所在目录途径。关于图形驱动器、图形模式符号常数及相应辨别率见表2。图形驱动程序由TurboC出版商提供,文献扩展名为.BGI。依照不同图形适配器有不同图形驱动程序。例如对于EGA、VGA图形适配器就调用驱动程序EGAVGA.BGI。表2.图形驱动器、模式符号常数及数值━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━图形驱动器(gdriver)图形模式(gmode)──────────────────────色调辨别率符号常数数值符号常数数值━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━CGA1CGAC00C0320*200CGAC11C1320*200CGAC22C2320*200CGAC33C3320*200CGAHI42色640*200───────────────────────────────────MCGA2MCGAC00C0320*200MCGAC11C1320*200MCGAC22C2320*200MCGAC33C3320*200MCGAMED42色640*200MCGAHI52色640*480───────────────────────────────────EGA3EGALO016色640*200EGAHI116色640*350───────────────────────────────────EGA644EGA64LO016色640*200EGA64HI14色640*350───────────────────────────────────EGAMON5EGAMONHI02色640*350───────────────────────────────────IBM85146IBM8514LO0256色640*480IBM8514HI1256色1024*768───────────────────────────────────HERC7HERCMONOHI02色720*348───────────────────────────────────ATT4008ATT400C00C0320*200ATT400C11C1320*200ATT400C22C2320*200ATT400C33C3320*200ATT400MED42色320*200ATT400HI52色320*200───────────────────────────────────VGA9VGALO016色640*200VGAMED116色640*350VGAHI216色640*480───────────────────────────────────PC327010PC3270HI02色720*350───────────────────────────────────DETECT0用于硬件测试━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━例4.使用图形初始化函数设立VGA高辨别率图形模式#includegraphics.hintmain(){intgdriver,gmode;gdriver=VGA;gmode=VGAHI;initgraph(&gdriver,&gmode,c:\\tc);bar3d(100,100,300,250,50,1);/*画一长方体*/getch();closegraph();return0;}有时编程者并不懂得所用图形显示屏适配器种类,或者需要将编写程序用于不同图形驱动器,TurboC提供了一种自动检测显示屏硬件函数,其调用格式为:voidfardetectgraph(int*gdriver,*gmode);其中gdriver和gmode意义与上面相似。例5.自动进行硬件测试后进行图形初始化#includegraphics.hintmain(){intgdriver,gmode;detectgraph(&gdriver,&gmode);/*自动测试硬件*/printf(thegraphicsdriveris%d,modeis%d\n,gdriver,gmode);/*输出测试成果*/getch();initgraph(&gdriver,&gmode,c:\\tc);/*依照测试成果初始化图形*/bar3d(10,10,130,250,20,1);getch();closegraph();return0;}上例程序中先对图形显示屏自动检测,然后再用图形初始化函数进行初始化设立,但TurboC提供了一种更简朴办法,即用gdriver=DETECT语句后再跟initgraph()函数就行了。采用这种办法后,上例可改为:例6.#includegraphics.hintmain(){intgdriver=DETECT,gmode;initgraph(&gdriver,&gmode,c:\\tc);bar3d(50,50,150,30,1);getch();closegraph();return0;}此外,TurboC提供了退出图形状态函数closegraph(),其调用格式为:voidfarclosegraph(void);调用该函数后可退出图形状态而进入文本方式(TurboC默认方式),并释放用于保存图形驱动程序和字体系统内存。2.独立图形运营程序建立TurboC对于用initgraph()函数直接进行图形初始化程序,在编译和链接时并没有将相应驱动程序(*.BGI)装入到执行程序,当程序进行到intitgraph()语句时,再从该函数中第三个形式参数char*path中所规定途径中去找相应驱动程序。若没有驱动程序,则在C:\TC中去找,如C:\TC中仍没有或TC不存在,将会浮现错误:BGIError:Graphicsnotinitialized(use'initgraph')因而,为了使用以便,应当建立一种不需要驱动程序就能独立运营可执行图形程序,TurboC中规定用下述环节(这里以EGA、VGA显示屏为例):1.在C:\TC子目录下输入命令:BGIOBJEGAVGA此命令将驱动程序EGAVGA.BGI转换成EGAVGA.OBJ目的文献。2.在C:\TC子目录下输入命令:TLIBLIB\GRAPHICS.LIB+EGAVGA此命令意思是将EGAVGA.OBJ目的模块装到GRAPHICS.LIB库文献中。3.在程序中initgraph()函数调用之前加上一句:registerbgidriver(EGAVGA_driver):该函数告诉连接程序在连接时把EGAVGA驱动程序装入到顾客执行程序中。通过上面解决,编译链接后执行程序可在任何目录或其他兼容机上运营。假设已作了前两个环节,若再向例6中加registerbgidriver()函数则变成:例7:#includestdio.h#includegraphics.hintmain(){intgdriver=DETECT,gmode;registerbgidriver(EGAVGA_driver):/*建立独立图形运营程序*/initgraph(gdriver,gmode,c:\\tc);bar3d(50,50,250,150,20,1);getch();closegraph();return0;}上例编译链接后产生执行程序可独立运营。如不初始化成EGA或CGA辨别率,而想初始化为CGA辨别率,则只需要将上述环节中有EGAVGA地方用CGA代替即可。3.屏幕颜色设立和清屏函数对于图形模式屏幕颜色设立,同样分为背景色设立和前景色设立。在TurboC中分别用下面两个函数。设立背景色:voidfarsetbkcolor(intcolor);设立作图色:voidfarsetcolor(intcolor);其中color为图形方式下颜色规定数值,对EGA,VGA显示屏适配器,关于颜色符号常数及数值见下表所示。表3关于屏幕颜色符号常数表━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━符号常数数值含义符号常数数值含义───────────────────────────────────BLACK0黑色DARKGRAY8深灰BLUE1兰色LIGHTBLUE9深兰GREEN2绿色LIGHTGREEN10淡绿CYAN3青色LIGHTCYAN11淡青RED4红色LIGHTRED12淡红MAGENTA5洋红LIGHTMAGENTA13淡洋红BROWN6棕色YELLOW14黄色LIGHTGRAY7淡灰WHITE15白色━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━对于CGA适配器,背景色可觉得表3中16种颜色一种,但前景色依赖于不同调色板。共有四种调色板,每种调色板上有四种颜色可供选取。不同调色板所相应原色见表4。表4CGA调色板与颜色值表━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━调色板颜色值─────────────────────────────符号常数数值0123━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━C00背景绿红黄C11背景青洋红白C22背景淡绿淡红黄C33背景淡青淡洋红白━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━清除图形屏幕内容使用清屏函数,其调用格式如下:voidefarcleardevice(void);关于颜色设立、清屏函数使用请看例8。例8:#includestdio.h#includegraphics.hintmain(){intgdriver,gmode,i;gdriver=DETECT;registerbgidriver(EGAVGA_DRIVER);/*建立独立图形运营程序*/initgraph(&gdriver,&gmode,);/*图形初始化*/setbkcolor(0);/*设立图形背景*/cleardevice();for(i=0;i=15;i++){setcolor(i);/*设立不同作图色*/circle(320,240,20+i*10);/*画半径不同圆*/delay(100);/*延迟100毫秒*/}for(i=0;i=15;i++){setbkcolor(i);/*设立不同背景色*/cleardevice();circle(320,240,20+i*10);delay(100);}closegraph();return0;}此外,TURBOC也提供了几种获得现行颜色设立状况函数。intfargetbkcolor(void);返回现行背景颜色值。intfargetcolor(void);返回现行作图颜色值。intfargetmaxcolor(void);返回最高可用颜色值。4.基本图形函数基本图形函数涉及画点,线以及其他某些基本图形函数。本节对这些函数作一全面简介。一、画点1.画点函数voidfarputpixel(intx,inty,intco
本文标题:c语言开发综合项目C语言实现图形界面输出
链接地址:https://www.777doc.com/doc-8767245 .html