C语言图形程序设计基础.pptx
《C语言图形程序设计基础.pptx》由会员分享,可在线阅读,更多相关《C语言图形程序设计基础.pptx(96页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、2023/3/231字符坐标系是以屏幕的左上角为坐标原点,水平方向为 X轴,垂直方向为Y轴,如下图-1所示:图-1 字符坐标系Max xMax y(1,1)注:字符坐标系的原点为(1,1),水平方向(X轴)分为若干列,垂直方向(Y轴)分为若干行,用一对坐标可以指定屏幕上一个位置。(8,20)表示字符位于屏幕的第8行第20列C语言图形程序设计基础第1页/共96页2023/3/232 (1)BW40:黑白40列方式。显示25行文本,其中每行40个字符,以黑白两色显示。(2)C40:彩色40列方式。可显示40列25行彩色字符。(3)BW80:黑白80列方式。可显示80列25行字符。(4)C80:彩色
2、80列25行显示方式。(5)MONO:单色80列25行显示方式。(6)C4350:一种特殊的彩色文本方式,适和EGA和VGA两种适配器。若用EGA适配器,显示80列43行;若用VGA适配器,则显示80列50行。C语言图形程序设计基础由于显示模式的不同,所显示的字符的列数和行数以及颜色也不相同。C支持以下6种不同的显示方式。第2页/共96页2023/3/233在不同的显示模式下,屏幕所显示的字符数量也不一样。X方向一般为40列或80列,Y方向一般为25行,但EGA和VGA适配器可达43行或50行。在文本模式下,屏幕最多可显示80X50=4000个字符,至少可显示40X25=1000个字符。显示字
3、符越多,每个字符尺寸越小,反之越大。显示模式不同,屏幕坐标的构成也不相同。比如:(1)在BW40方式下,最大坐标位置为(25,40);(2)在C4350方式下,最大坐标位置为(50,80);注:C语言图形程序设计基础第3页/共96页2023/3/2342.2.图形模式与点坐标系图形模式与点坐标系 在屏幕上显示图形的方式称为图形模式。在图形模式下,屏幕是由像素点组成的,像素点的多少决定了屏幕的分辨率。分辨率越高,显示图形越细致,质量越好。如右图所示1.屏幕由许多像素点组成;2.图形的显示效果取决于分辨率的高低;C语言图形程序设计基础第4页/共96页2023/3/235例如:CGA显示器的分辨率为
4、300X200,TVG显示器的分辨率为1024X768,TVGA比CGA分率高。图-2 点坐标系Max xMax y(0,0)注:点坐标系坐标值的范围取决于所用的适配器/显示分辨率C语言图形程序设计基础 在图形模式下,屏幕上每个像素的显示位置用点 坐标来描述的。点坐标系是以屏幕左上角为坐标原点(0,0),水平方向为X轴,自左向右;垂直方向为Y轴,自上向下。如下图所示:第5页/共96页2023/3/236由于屏幕的分辨率不同,水平方向和垂直方向的点数也不一样,从而点坐标系的Max x、Max y 数值也不同。在TurboC中,坐标数据可以用两种形式给出:一种是绝对坐标,另一种是相对坐标。(1)绝
5、对坐标的参考点是坐标的原点(0,0),x和y只能取规定范围(0,Max x)和(0,Max y)内的正整数;(2)相对坐标是相对“当前点”的坐标,其坐标的参考点是当前点。在相对坐标中,x和y的取值是相对当前点在x方向和y方向上的增量,故x和y可以为正整数,也可以为负整数。C语言图形程序设计基础第6页/共96页2023/3/2373.1.2、图形驱动程序与图形模式1.1.图形驱动程序图形驱动程序 对于不同的图形显示器,其控制方式各有差异,因此要显示图形就需要先装入相应的图形驱动程序。TurboC 支持以下几种图形驱动程序:符号常量符号常量 数值数值 符号常量符号常量 数值数值DETECT0IBM
6、85146CGA1HERCMONO7MCGA2ATT4008EGA3VGA9EGA644PC327010EGAMONO5C语言图形程序设计基础第7页/共96页2023/3/2382.2.图形模式图形模式 由于每种图形显示器都有几种不同的图形显示模式,所以要显示图形,不但要先装入相应的驱动程序,而且还要决定所用的显示模式。TurboC 常采用的几种图形驱动程序及相应的模式驱动程序驱动程序(driver)图形(图形(gmode)等价值等价值分辨(分辨(dpi)CGAC00320X200 CGACGACGAC11320X200CGAC22320X200CGAC33320X200CGAHI4640X2
7、00表2.2 图形驱动程序及相应的模式C语言图形程序设计基础第8页/共96页2023/3/239驱动程序驱动程序(driver)图形图形(gmode)等价值等价值分辨(分辨(dpi)EGAEGAHI0640X200EGALO1640X350VGALO0640X200VGAVGAMED1640X350VGAHI2640X480注:1.不同的图形驱动程序有不同的图形模式;2.同一图形驱动程序,也可能会有几种图形模式;C语言图形程序设计基础第9页/共96页2023/3/2310TurboC提供了十分丰富的图形库函数,共有70多个,所有图形函数的原型均在头文件“graphics.h”中定义。所以,在任
8、何使用图形函数的程序中,都要求其头部包含文件graphics.h,即在程序文件的开头写上文件包含命令:#include 同时将集成开发环境option/Linker中的graphics.lib选项设置为”on”。下面我们介绍:图形系统的初始化、图形系统的关闭、图形模式控制。3.1.3、图形系统初始化和模式控制C语言图形程序设计基础第10页/共96页2023/3/2311图形系统初始化首先要调用initgraph()函数,它通过从磁盘上装入一个图形驱动程序来初始化图形系统,并将系统设置为图形模式形模式。1.1.图形系统的初始化 图形模式是有别于文本模式的一种计算机屏幕显示模式。屏幕一般在默认情况
9、下为80列25行的文本模式,在文本模式下,所有的图形函数均不能操作,因此在使用图形函数绘图之前,必须将屏幕显示适配器设置为一种图形模式,即为图形初始化过程。C语言图形程序设计基础第11页/共96页2023/3/2312功能 将图形驱动软件装入内存,使屏幕显示适配器设置为图形模式,即图形系统初始化;说明 1.gdriver是一个整型值,用来指定要装入的图形驱动程序;该值在头文件graphics.h中定义;2.gmode是一个整型值,用来设置图形显示模式。图形显示模式决定了显示的分辨率和显示的颜色的多少等;3.path是一个字符串,用来指明图形驱动程序所在的路径.1.若驱动程序就在用户当前目录下,
10、则path可为空字符串,否则应给出具体路径名。一般情况下,TurboC安装在C盘的TC目录中,则该路径为:C:TC,若写在参数中则为“C:TC”;2.前两个参数实际上是整型指针,调用时应加上地址运算符“&”;注:initgraph()函数格式 void far initgraph(int*gdriver,int*gmode,char*path);C语言图形程序设计基础第12页/共96页2023/3/2313(1)已知显示器类型的图形系统初始化。如果已经知道所用图形显示器的种类和要使用的图形模式则图形系统的初始化可用下面程序,例如:例1 画一实心矩形#includegraphics.h main
11、()int gdriver,gmode;gdriver=CGA;/*设置显示模式CGA*/gmode=CGAC0;/*选用CGA图形模式*/initgraph(&gdriver,&gmode,“D:TC);/*初始化图形系统*/C语言图形程序设计基础第13页/共96页2023/3/2314 bar3d(10,20,50,80,0,0);/*画一条形图*/getch();/*等待按一键结束*/closegraph();/*关闭图形系统,回到文本模式*/程序注释程序注释:bar3d()函数 格式:void bar3d(int x1,int y1,int int x1,int y1,int x2,i
12、nt y2,x2,int y2,int depth,int topflag int depth,int topflag);功能:画一填充的三维条形图;说明:depth:depth为条形的深度;topflag=0;topflag=0则不加顶,否 则在条形图上加一个顶。C语言图形程序设计基础第14页/共96页2023/3/2315格式 void far detectgraph(int*gdriver,int*gmode);功能 在计算机有图形适配器的情况下,确定图形适配器的类型;说明 1.若系统有图形适配器,则把gdriver指的变量设置为适合于适配器的图形驱动程序的代码,并把gmode所指的变量
13、设置为适配器所能支持的最高分辨率。2.若系统无图形适配器,则gdriver所指的变量为-2.(2)不知显示器类型的图形系统初始化。若在编写程序过程中,不知道当前系统屏幕硬件的类型或编写的程序要用于不同的图形显示器,这就要求所编程序能知当前图形显示器的代码,Turbo C供了一个对图形显示器硬件测试的函数detectgraph()。detectgraph()函数C语言图形程序设计基础第15页/共96页2023/3/2316例2、测试硬件显示模式和绘制图形#include graphics.h main()int gdriver,gmode;detectgraph(&gdriver,&gmode)
14、;/*测试结果存放于 gdriver,gmode中*/if(gdriver0)printf(there is not graphics displayern);exit(1);/*无图形显示模式时,显示信息,停止程序*/printf(detect graphics driver is#%d,mode is#%d n,gdriver,gmode);/*显示硬件测试结果*/getch();/*等待按一键结束*/C语言图形程序设计基础第16页/共96页2023/3/2317 initgraph(&gdriver,&gmode,c:tc);/*初始化图形系统*/bar3d(10,20,50,80,10
15、,1);getch();/*等待按一键结束*/closegraph();/*关闭图形系统,回到文本模式*/return(0);C语言图形程序设计基础第17页/共96页2023/3/2318例3自动搜索显示类型和模式并初始化画图#includegraphics.h main()(3)自动初始化图形系统。一般在程序设计中,可以把对图形显示器的检测和初始化工作放在一起来自动完成,规定Gdriver=DETECT,则initgraph()函数会自动按照系统所配置的图形显示器来确定驱动程序,并把图形模式设置为检测到的驱动程序的最高分辨率,实现图形系统的初始化.C语言图形程序设计基础第18页/共96页20
16、23/3/2319 int gdriver=DETECT,gmode;/*自动搜索显示器类型和显示模式*/initgraph(&gdriver,&gmode,“C:TC);/*初始化图形系统*/bar3d(10,20,50,80,10,1);/*画一三维立体有顶矩形*/getch();/*等待按一键结束*/closegraph();/*关闭图形系统,回到文本模式*/return(0);C语言图形程序设计基础第19页/共96页2023/3/23202.2.图形系统的关闭 在图形编程中,我们均用函数initgraph()对图形系统进行初始化,即启动图形系统,进入绘图状态,在程序结束时都用函数clo
17、segraph()关闭图形系统。closegraph()函数格式 void far closegraph();功能 关闭图形模式。说明 函数closegraph()用来关闭图形模式,释放用于保存图形驱动程序和字体所占用的内存空间。当一个程序需要从图形模式下退出,且回到文本模式下继续运行时可调用该函数。注:所有有关图形显示的程序一定是在initgraph()和closegraph()之间。C语言图形程序设计基础第20页/共96页2023/3/23213.3.图形模式的控制 为了对图形模式进行控制,即 1.从图形模式转换成文本模式,或从文本模式转换成图 形模式;2.设置驱动器有效模式或读取当前图形
18、模式和范围。TurboC都提供了相关的函数来实现其控制。1.getgraphmode()函数格式 void far getgraphmode(void);功能 返回当前图形模式值,其返回值如前表所示。C语言图形程序设计基础第21页/共96页2023/3/2322功能 恢复屏幕在图形初始化前的模式。说明 该函数使initgraph()函数所选定图形模式关闭,返回到调用initgraph()前的状态。注意它与closegraph()函数的区别。3.setgraphmode()函数格式 void far setgraphmode(int gmode);功能 设置系统图形模式并清屏幕。说明 该函数把当
19、前的图形模式设置为gmode所指定的模式。C语言图形程序设计基础2.restorecrtmode()函数格式 void far restorecrtmode(void);第22页/共96页2023/3/2323注:通过调用以上函数,可实现使显示器暂时离开图形模式进入文本模式,进行文本输出,然后不经过initgraph()函数再返回图形模式的功能.4.getmoderange()函数格式 void far getmoderange(int driver,int*lomode,int *himode);功能 获取图形驱动器可使用的模式范围。说明 该函数可以确定由driver所指定图形驱动器能够支持
20、的最低和最高模式,并将这些值放在由lomode和himode所指向的变量中.C语言图形程序设计基础第23页/共96页2023/3/2324例例4 4 图形模式控制函数应用程序图形模式控制函数应用程序#include graphics.h#include stdio.h#include stdlib.hmain()int gdriver,gmode,lo,hi;gdriver=CGA;/*设置显示模式为CGA*/getmoderange(CGA,&lo,&hi);/*获得CGA的图形模式范围*/printf(CGA surpporting modes range from%d to%d.n,lo
21、,hi);/*显示CGA的显示模式范围/initgraph(&gdriver,&lo,c:tc);/*初始化CGAC0图形系统*/bar3d(100,30,130,150,0,0);C语言图形程序设计基础第24页/共96页2023/3/2325 getch();/*等待按一键结束*/gmode=getgraphmode();/*获得现行图形模式*/restorecrtmode();/*返回图形初始化前的现实模式*/printf(NOW in text mode,press any key back to graphics mode.n);getch();setgraphmode(gmode);
22、/*再回到图形模式*/rectangle(50,30,100,130);/*画一矩形*/getch();closegraph();/*关闭图形系统,回到文本模式*/return(0);C语言图形程序设计基础第25页/共96页2023/3/2326我们在画图时需要运用光标定点,即确定坐标位置。当屏幕处于文本状态时,左上角坐标原点为(1,1);而在图形模式下,以左上角为坐标原点(0,0),水平方向向右为X轴,垂直方向向下为Y轴。由于图形显示器和显示模式的不同,x、y坐标的最大值也就不同,可利用TurboC提供的函数来设定坐标(定点),读取当前光标的位置以及x、y轴的最大值。3.1.4、图形坐标的设
23、置moveto()函数格式 void far moveto(int x,int y);功能 把当前光标移到所需的位置(x,y)。1.1.定点定点C语言图形程序设计基础第26页/共96页2023/3/2327说明 该函数把当前窗口中的当前光标位置(CP)移到所需的(x,y)位置。注:不是画线。例如:moveto(100,100)表示把当前光标移到点(100,100)位置上。moverel()函数格式 void far moverel(int deltax,int deltay);功能 以增量方式移动当前光标。说明 此函数把光标从当前位置(CP)开始,在x,y方向分别移动deltax和 delta
24、y,即由(x,y)(x+deltax,y+deltay).例如:若当前光标在(10,10)位置,执行moverel(10,20)后即移到(20,30)的位置上.C语言图形程序设计基础第27页/共96页2023/3/2328n注:moveto(10,20)表示把当前光标移到点(10,20)位置上。n moverel(10,20)后即移到(20,30)的位置上.Max xMax y(0,0)(10,10)(10,20)(20,30)当前光标movetomoverel图形模式图形模式C语言图形程序设计基础第28页/共96页2023/3/2329例如:语句printf(“cps loc:%d%d”,g
25、etx(),gety();显示光标当前位置的x值2.2.读取当前光标位置读取当前光标位置getx()函数格式 int far getx(void);功能 读取当前光标在x轴的位置。gety()函数格式 int far gety(void);功能 读取当前光标在y轴的位置。C语言图形程序设计基础第29页/共96页2023/3/2330例例5 5、显示系统中图形硬件支持的最大的、显示系统中图形硬件支持的最大的x,yx,y值值程序:#include stdio.h#include conio.h3.3.读取读取x,yx,y轴的最大值轴的最大值getmaxx()函数格式 int far getmaxx
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 图形 程序设计 基础
限制150内