C语言程序设计教程 教学课件 ppt 作者 郝玉秀 第7章

上传人:w****i 文档编号:94568040 上传时间:2019-08-08 格式:PPT 页数:52 大小:490.50KB
返回 下载 相关 举报
C语言程序设计教程 教学课件 ppt 作者 郝玉秀 第7章_第1页
第1页 / 共52页
C语言程序设计教程 教学课件 ppt 作者 郝玉秀 第7章_第2页
第2页 / 共52页
C语言程序设计教程 教学课件 ppt 作者 郝玉秀 第7章_第3页
第3页 / 共52页
C语言程序设计教程 教学课件 ppt 作者 郝玉秀 第7章_第4页
第4页 / 共52页
C语言程序设计教程 教学课件 ppt 作者 郝玉秀 第7章_第5页
第5页 / 共52页
点击查看更多>>
资源描述

《C语言程序设计教程 教学课件 ppt 作者 郝玉秀 第7章》由会员分享,可在线阅读,更多相关《C语言程序设计教程 教学课件 ppt 作者 郝玉秀 第7章(52页珍藏版)》请在金锄头文库上搜索。

1、C语言程序设计教程,中国铁道出版社,第7章 图形与动画设计,- 2 -,第7章 图形与动画设计,学习目标 熟悉常用绘图函数的使用方法; 了解动画的实现方法; 能设计图形程序和简单的动画程序。,- 3 -,主要内容 图形模式的初始化方法; 独立图形运行程序的建立; 屏幕颜色的设置和清屏函数; 绘图函数; 封闭图形的填充; 设置线性和线宽函数; 图形模式下文本的输出; 简单动画的设计,第7章 图形与动画设计,- 4 -,第7章 图形与动画设计,【思考题】如何利用C语言完成绘制图形和简单动画的设计。,分析过程 要完成图形设计和动画设计任务,首先要了解图形模式的加载方法,然后利用绘图函数绘制出相关图形

2、,再根据产生动画的方法实现动画设计。,- 5 -,7.1 图形设计,图形设计在计算机应用领域占有很重要的地位,广泛应用于计算机辅助设计和辅助制造等方面,即使软件本身也越来越多地以图形界面进行人机交互。Turbo C提供了非常丰富的实现图形处理功能的函数,所有图形函数的原型均在graphics.h函数库中。使用图形函数时要确保加载显示器图形驱动程序*.BGI,同时将集成开发环境Options/Linker中的graphics lib设置为on,只有这样才能保证正确使用图形函数。 下面介绍图形模式的初始化、独立图形程序的建立方法;绘制基本图形的函数;图形窗口以及图形模式下的文本输出等函数。,- 6

3、 -,7.1.1 图形模式的初始化,不同的显示器适配器具有不同的图形分辨率。即使是同一显示器适配器,在不同模式下其分辨率也不尽相同。因此,在屏幕作图之前,必须根据显示器适配器种类将显示器设置成某种图形模式, Turbo C在普通字符模式下规定:整个屏幕的左上角坐标为(1,1),右下角坐标为(80,25)。并规定沿水平方向为X轴,方向向右;沿垂直方向为Y轴,方向向下。 在图形模式下,是按像素来定义坐标的。对VGA适配器,它的最高分辨率为640*480,其中640为整个屏幕从左到右所有像素的个数,480为整个屏幕从上到下所有像素的个数。屏幕的左上角坐标为(0,0),右下角坐标为(639,479),

4、水平方向从左到右为X轴正向,垂直方向从上到下为Y轴正向。Turbo C的图形函数都是相对于图形屏幕坐标,以像素为度量单位。,- 7 -,7.1.1 图形模式的初始化,在未设置图形模式之前,计算机系统默认屏幕为字符模式(80列,25行字符模式),此时所有图形函数均不能工作。需用图形初始化函数设置屏幕为图形模式。 其一般格式为: Void far initgraph(int far *driver,int far *mode,char *path); 其中driver和mode分别表示图形驱动器和模式,path是指图形驱动程序所在的目录路径。有关图形驱动器、图形模式的符号常数及对应的分辨率如表7-

5、1所示。,- 8 -,7.1.1 图形模式的初始化,图形驱动程序由Turbo C出版商提供,文件扩展名为.BGI。根据不同的图形适配器有不同的图形驱动程序。例如对于EGA、VGA图形适配器就调用驱动程序EGAVGA.BGI。,- 9 -,7.1.1 图形模式的初始化,【例7-1】使用图形初始化函数设置VGA高分辨率图形模式 #include “graphics.h” int main( ) int driver,mode; driver=VGA; mode=VGAHI; initgraph( ,运行结果:是在屏幕上,以(100,100)点为左上角,以(300,250)为右下角画一个矩形。,-

6、10 -,7.1.1 图形模式的初始化,有时,如果不知道所用的显示器适配器种类,或者需要将编写的程序用于不同图形驱动器,如何获取显示器适配器的驱动和模式参数呢?Turbo C提供了一个自动检测显示器硬件的函数,其调用格式为: Void far detectgrap(int * driver,*mode); 其中driver和mode的意义与上面相同。,- 11 -,7.1.1 图形模式的初始化,【例7-2】 自动进行硬件测试后进行图形初始化 #include “graphics.h” int main( ) int driver,mode; detectgraph( ,- 12 -,7.1.1

7、 图形模式的初始化,上例程序中首先对图形显示器自动检测,然后再用图形初始化函数进行初始化设置,但Turbo C提供了一种更简单的方法,即用driver=DETECT语句后再跟initgraph()函数就行了。采用这种方法后,例7-2可改为例7-3。 【例7-3】自动进行硬件测试后进行图形初始化 #include “graphics.h” int main( ) int driver=DETECT,mode; initgraph( ,- 13 -,7.1.1 图形模式的初始化,若要退出图形模式可用Tuibo C提供的closegraph()函数。 其调用格式为: Void far closegr

8、aph(void); 调用该函数后可退出图形状态而进入文本方式(Turbo C默认方式),并释放用于保存图形驱动程序和字体的系统内存。,- 14 -,7.1.2 独立图形运行程序的建立,对于用initgraph()函数直接进行的图形初始化程序,在编译和链接时并没有将相应的驱动程序(*.BGI)装入到执行程序,当程序执行到initgraph()语句时,才从该函数中第三个形式参数char *path所规定的路径中去找相应的驱动程序。若没有驱动程序,则在C:TC中去找,如C:TC中仍没有或TC不存在,将会出现错误: BGI Error: Graphics not initialized(use “i

9、nitgraph“) 因此,为了使用方便,应该建立一个不需要驱动程序就能独立运行的可执行图形程序,Turbo C中规定用下述步骤(这里以EGA、VGA显示器为例):,- 15 -,7.1.2 独立图形运行程序的建立,在C:TC子目录下输入命令:BGIOBJ EGAVGA 此命令将驱动程序EGAVGA.BGI转换成EGAVGA.OBJ的目标文件。 在C:TC子目录下输入命令:TLIB LIBGRAPHICS.LIB+EGAVGA 此命令的意思是将EGAVGA.OBJ的目标模块装到GRAPHICS.LIB库文件中。 在程序中initgraph()函数调用之前加上一句: Registerbgidri

10、ver(EGAVGA_driver); 该函数告诉连接程序在连接时,把EGAVGA的驱动程序装入到用户的执行程序中。 经过上面处理,编译链接后的执行程序可在任何目录或其他兼容机上运行。假设已完成了前面两个步骤,再向例7-3中添加registerbgidriver( ) 函数语句,程序如例7-4。,- 16 -,7.1.2 独立图形运行程序的建立,【例7-4】建立图形的独立运行程序 #include “stdio.h” #include “graphics.h” int main( ) int driver=DETECT,mode; registerbgidriver(EGAVGA_driver

11、); initgraph( 上例程序编译链接后产生的执行程序可独立运行。,- 17 -,7.1.3 屏幕颜色的设置和清屏函数,屏幕颜色分为背景色和前景色。用下面两个函数来实现。 void far setbkcolor(int color); /*用于设置背景色*/ void far setcolor(int color); /*用于设置前景色*/ 其中color为图形方式下颜色的规定数值,有关颜色的符号常数及数值如表7-2所示。,- 18 -,7.1.4 绘图函数,画点函数putpixel() 格式:void far putpixel(int x,int y,int color) 功能:在坐标

12、(x,y)处以color指定的颜色绘制一个点。color的取值参见表7-2。 另外利用getpixel函数可用获取当前点的颜色。其格式为: int far getpixel (int x,int y); 该函数获取并返回当前点(x,y)的颜色值。 画线函数lineto()和linerel() lineto()函数的调用格式为: 调用格式1: void far lineto(int x0,int y0,int x1,int y1); 功能:从点(x0,y0)到(x1,y1)画一条直线。 调用格式2: Void far lineto(int x,int y); 功能:从现行游标到点(x,y)画一条

13、直线。 linerel()函数的调用格式为: Void far linerel(int dx,int dy); 功能:从现行游标(x,y)到按相对增量确定的点(x+dx,y+dy)画一条直线,- 19 -,7.1.4 绘图函数,【例7-5】 画线函数的应用,画一个三角形。 #include “conio.h“ #include“graphics.h“ main() int x,y; int gd=DETECT,gm=0; initgraph( ,- 20 -,7.1.4 绘图函数,运行结果:,- 21 -,7.1.4 绘图函数,画圆函数circle() 调用格式为: void far circ

14、le(int x,int y,int radius); 功能:以(x,y)为圆心,radius为半径,画一个圆。 画圆弧函数arc() 调用格式为: Void far arc(int x,int y,int stangle,int endangle,int radius); 功能:以(x,y)为圆心,radius为半径,从stangle开始到endangle结束(用度表示)画一段圆弧线。在Turbo C中规定x轴正向为0度,逆时针方向选择一周依次为90,180,270和360度(其它有关函数也按此规定)。 画椭圆ellipse() 调用格式为: void ellipse(int x,int y

15、,int stangle,int endangle,int xradius,int yradius);,- 22 -,7.1.4 绘图函数,功能:以(x,y)为中心,xradius,yradius为x轴和y轴半径,从角stangle开始到endangle结束画一段椭圆线,当stangle=0,endangle=360时,画出一个完整的椭圆。 画一个空心矩形函数rectangle() 调用格式为: void far rectangle(int x1,int y1,int x2,int y2); 功能:以(x1,y1)为左上角,(x2,y2)为右下角画一个空心矩形框。 画实心矩形bar() 调用格

16、式:void far bar(int x1,int y1,ing x2,int y2); 功能:以(x1,y1)为左上角,(x2,y2)为右下角画一个实心矩形。 画多边形函数drawpoly() 调用格式:void far (int numpoints,int far *polypoints); 功能:画一个顶点数为numpoints,各顶点坐标由polypoints给出的多边形。整型数组polypoints须至少有2倍顶点数个元素。每一个顶点的坐标都定义为x,y,并且x在前。值得注意的是当画一个封闭的多边形时,numpoints的值取实际多边形的顶点数加一,并且数组polypoints中第一个和最后一个点的坐标相同。,- 23 -,7.1.5 封闭图形的填充,默认情况下绘制出的封闭图形都是单白色实心填充,若需要设置填充样式和填充色,可以利用setfillstyle()和floodfill()函数来实现。 设定填充方式和颜色setfillstyle() 调用格式: void far set

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号