C语言程序设计ppt-第7章推荐
华中科技大学计算机学院 C语言程序设计 C语言程序设计 第7章 标准库及用户自定义库 接口的概念、与头文件的关系() C标准库的使用,以及图形库函数的应用和动画的设计方法 自定义库的创建 7.3 C图形库及其基本的图形操作 基本输出函数printf 将信息以数字和字符串方式输出在显示屏上 用户 希望结果更形象、更生动、更逼真 例如,windows操作系统取代Dos操作系统 C编译系统 为了方便用户设计图形程序 提供了画图函数库(graphics.h ) 7.3.1 图形显示的窗口和坐标 图形的窗口 可由用户定义它的位置和大小,大可到整个屏幕,小可到几个字符 屏幕上常常可同时有几个活动窗口 所有图形输出都是与当前窗口有关系,超出边界部分将被裁剪掉 7.3.1 图形显示的窗口和坐标 图形的坐标 显示器的整个屏幕就像一张坐标纸 图形上任一点位置用坐标值(x, y)来表示 坐标值 (x, y)以像素为单位 绝对坐标指相对于屏幕原点的坐标 A和B的绝对坐标分别为(20,20)和(420,130) 如定义一个以A为左上角、B为右下角的图形窗口 则用相对坐标表示,A为相对坐标原点,B的相对坐标是(400,110) 7.3.2 图形模式的初始化 原因 微机系统默认屏幕为文本模式(80列,25行字符模式) 此时所有图形函数均不能工作 方法 void initgraph( int far *gdriver, int far *gmode, char far *path) gdriver所指的图形驱动软件装入到内存 参数gmode是图形函数用来确定显示模式的整型指针 7.3.2 图形模式的初始化 初始化前的问题 不知道所用的图形显示器适配器类型,因为图形显示器适配器种类很多 需要将编写的程序用于不同图形驱动器 解决方法 初始化前用Turbo C的自动检测显示器硬件函数 void far detectgraph(int far *gdriver, int far *gmode) 完成对适配器的检查, 得到显示器类型号和相应的最高分辨率模式 图形模式初始化例子 #include void main(void) { int gdriver,gmode; detectgraph(&gdriver,&gmode); /* 自动测试硬件 */ initgraph(&gdriver,&gmode,"bgi"); /* 根据测试结果初始化图形模式 */ … } 图形模式初始化的关闭 void far closegraph(void); 用于关闭图形系统,回到文本方式(Turbo C 默认方式) 并释放用于保存图形驱动程序和字体的系统内存。 void far restorecrtmode(void); 用于返回到文本方式,但不关闭图形系统 即图形函数所占用的内存不被释放 和setgraphmode交互使用,在图形和文本之间来回切换。 例7.1 一个能独立运行的简单C图形程序 #include #include void main(void) { int gdriver=DETECT,gmode; int i, xradius=130,yradius=130; initgraph( &gdriver,&gmode, “c:\\tc20\\bgi”); /* 初始化图形模式 注意: bgi不一定需要! */ for(i=0;i<20;i++) { /* 绘制20个椭圆, */ ellipse(320,240,0,360,xradius,yradius); xradius-=5; yradius+=5;} getch(); /* 按任意键结束 */ closegraph(); } /* 关闭图形系统 */ 7.3.3 基本图形函数 画点函数 void putpixel(int x, int y, int color); 用color颜色在(x,y)位置画一点 坐标位置函数 int getmaxx(void); int getmaxy(void); 分别得到x轴、 y轴的最大 int getx(void); int gety(void); 分别得到当前画笔的x坐标、y坐标。 void moveto(int x,int y); 把画笔从当前位置移到点(x,y),移动过