C语言程序设计ppt课件-第7章.ppt
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《C语言程序设计ppt课件-第7章.ppt》由会员分享,可在线阅读,更多相关《C语言程序设计ppt课件-第7章.ppt(57页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、2022-8-8华中科技大学计算机学院1C C语言程序设计语言程序设计The C Programming Language华中科技大学计算机学院华中科技大学计算机学院曹计昌曹计昌2022-8-8华中科技大学计算机学院2C语言程序设计第7章 标准库及用户自定义库 n接口的概念、与头文件的关系()nC标准库的使用,以及图形库函数的应用和动画的设计方法 n自定义库的创建2022-8-8华中科技大学计算机学院37.3 C7.3 C图形库及其基本的图形操作图形库及其基本的图形操作 n基本输出函数基本输出函数printf n将信息以数字和字符串方式输出在显示屏上将信息以数字和字符串方式输出在显示屏上n用户
2、用户n希望结果更形象、更生动、更逼真希望结果更形象、更生动、更逼真n例如,例如,windows操作系统取代操作系统取代Dos操作系统操作系统nC编译系统编译系统 n为了方便用户设计图形程序为了方便用户设计图形程序 n提供了画图函数库提供了画图函数库(graphics.h ) 2022-8-8华中科技大学计算机学院47.3.1 7.3.1 图形显示的窗口和坐标图形显示的窗口和坐标n图形的窗口图形的窗口 n可由用户定义它的位置和大小,大可到整个可由用户定义它的位置和大小,大可到整个屏幕,小可到几个字符屏幕,小可到几个字符 n屏幕上常常可同时有几个活动窗口屏幕上常常可同时有几个活动窗口 n所有图形输
3、出都是与当前窗口有关系,超出所有图形输出都是与当前窗口有关系,超出边界部分将被裁剪掉边界部分将被裁剪掉 2022-8-8华中科技大学计算机学院57.3.1 7.3.1 图形显示的窗口和坐标图形显示的窗口和坐标n图形的坐标图形的坐标 n显示器的整个屏幕就像一张坐标纸显示器的整个屏幕就像一张坐标纸n图形上任一点位置用坐标值图形上任一点位置用坐标值(x, y)来表示来表示n坐标值坐标值 n(x, y)以像素为单位以像素为单位n绝对坐标绝对坐标指相对于屏幕原点的坐标指相对于屏幕原点的坐标nA和和B的绝对坐标分别为(的绝对坐标分别为(20,20)和()和(420,130)n如定义一个以如定义一个以A为左
4、上角、为左上角、B为右下角的图形窗口为右下角的图形窗口n则用则用相对坐标相对坐标表示,表示,A为相对坐标原点,为相对坐标原点,B的相对坐的相对坐标是(标是(400,110)ABxy (0,0) 2022-8-8华中科技大学计算机学院67.3.2 7.3.2 图形模式的初始化图形模式的初始化n原因原因n微机系统默认屏幕为文本模式(微机系统默认屏幕为文本模式(80列,列,25行字符行字符模式)模式)n此时所有图形函数均不能工作此时所有图形函数均不能工作 n方法方法nvoid initgraph( int far *gdriver, int far *gmode, char far *path) n
5、gdriver所指的图形驱动软件装入到内存所指的图形驱动软件装入到内存 n参数参数gmode是图形函数用来确定显示模式的整型是图形函数用来确定显示模式的整型指针指针2022-8-8华中科技大学计算机学院77.3.2 7.3.2 图形模式的初始化图形模式的初始化n初始化前的问题初始化前的问题n不知道所用的图形显示器适配器类型,因为图形显示不知道所用的图形显示器适配器类型,因为图形显示器适配器种类很多器适配器种类很多n需要将编写的程序用于不同图形驱动器需要将编写的程序用于不同图形驱动器 n解决方法解决方法n初始化前用初始化前用Turbo C的自动检测显示器硬件函数的自动检测显示器硬件函数nvoid
6、 far detectgraph(int far *gdriver, int far *gmode) n完成对适配器的检查,完成对适配器的检查,n得到显示器类型号和相应的最高分辨率模式得到显示器类型号和相应的最高分辨率模式 2022-8-8华中科技大学计算机学院8图形模式初始化例子图形模式初始化例子1.#include 2.void main(void)3.4. int gdriver,gmode;5. detectgraph(&gdriver,&gmode); /* 自动测试硬件自动测试硬件 */6. initgraph(&gdriver,&gmode,bgi); /* 根据测试结根据测试结
7、果初始化图形模式果初始化图形模式 */7.8.#includevoid main(void) int gdriver = DETECT; int gmode; initgraph(&gdriver,&gmode, d:tcbgi); 将将driver设置为设置为DETECT,它会自动检测,它会自动检测所用显示器的类型,装入相应的图形驱所用显示器的类型,装入相应的图形驱动软件,并选用最高分辨率的显示模式动软件,并选用最高分辨率的显示模式 改进改进2022-8-8华中科技大学计算机学院9图形模式初始化的关闭图形模式初始化的关闭nvoid far closegraph(void);n用于关闭图形系统
8、,回到文本方式用于关闭图形系统,回到文本方式(Turbo C 默认方默认方式式) n并释放用于保存图形驱动程序和字体的系统内存。并释放用于保存图形驱动程序和字体的系统内存。nvoid far restorecrtmode(void);n用于返回到文本方式,但不关闭图形系统用于返回到文本方式,但不关闭图形系统n即图形函数所占用的内存不被释放即图形函数所占用的内存不被释放n和和setgraphmode交互使用,在图形和文本之间来回交互使用,在图形和文本之间来回切换。切换。 2022-8-8华中科技大学计算机学院10例例7.1 7.1 一个能独立运行的简单一个能独立运行的简单C C图形程序图形程序
9、1.#include2.#include3.void main(void)4. int gdriver=DETECT,gmode;5. int i, xradius=130,yradius=130;6. initgraph( &gdriver,&gmode, “c:tc20bgi”); /* 初始初始化图形模式化图形模式 注意注意: bgi不一定需要不一定需要! */7. for(i=0;i20;i+) /* 绘制绘制20个椭圆个椭圆, */8. ellipse(320,240,0,360,xradius,yradius);9. xradius-=5; yradius+=5;10. getch
10、(); /* 按任意键结束按任意键结束 */11. closegraph(); /* 关闭图形系统关闭图形系统 */2022-8-8华中科技大学计算机学院117.3.3 7.3.3 基本图形函数基本图形函数n画点函数画点函数 nvoid putpixel(int x, int y, int color);n用用color颜色在(颜色在(x,y)位置画一点)位置画一点 n坐标位置函数坐标位置函数nint getmaxx(void); int getmaxy(void); n分别得到分别得到x轴、轴、 y轴的最大轴的最大nint getx(void); int gety(void); n分别得到当
11、前画笔的分别得到当前画笔的x坐标、坐标、y坐标。坐标。nvoid moveto(int x,int y);n把画笔从当前位置移到点(把画笔从当前位置移到点(x,y),移动过程不画。),移动过程不画。nvoid moverel(int dx,int dy)n把画笔从当前位置(把画笔从当前位置(x0,y0)移动到点)移动到点(x0+dx,y0+dy) 2022-8-8华中科技大学计算机学院12补充补充: : 点点, , 线线, ,面的画法面的画法n点点: 屏幕上屏幕上(x,y)坐标处的像素坐标处的像素(pixel)n画点画点: 指在指定指在指定(x,y)坐标处输出一个像素坐标处输出一个像素.n画点
12、函数画点函数(像素输出函数像素输出函数) putpixel原型原型: void far _Cdecl putpixel(int x, int y, int color);功能功能: 指在指定指在指定(x,y)坐标处画一个坐标处画一个color颜色颜色的点的点.调用调用: putpixel(x,y,YELLOW);2022-8-8华中科技大学计算机学院13#include graphics.h#include math.h#include dos.hvoid main(void)int x=150,y=250,step, num,i,gdriver,gmode;printf(input step
13、 and number please!n);scanf(%d%d,&step,&num); gdriver=DETECT; initgraph(&gdriver,&gmode, c:tc20); setcolor(3); setbkcolor(GREEN); 例例1. 1. 按照输入点之间的间隔和点的数目画点按照输入点之间的间隔和点的数目画点. . for(i=0;inum;i+) putpixel(x,y,RED); x+=step; getch(); y+=2; x=150; for(i=0;inum;i+) putpixel(x,y,RED); x+=step; getch(); clo
14、segraph();2022-8-8华中科技大学计算机学院14#include graphics.h#include math.h#include dos.hvoid main(void) int x0,y0,x1,y1,x,y, gdriver,gmode; float k; printf(input x0,y0, x1,y1,please!n);scanf(%d%d%d%d,&x0,&y0,&x1,&y1); k=1.0*(y1-y0)/(x1-x0); gdriver=DETECT; 例例2. 2. 按照输入的起点按照输入的起点, ,终点画线终点画线. .initgraph(&gdriv
15、er,&gmode, c:tc20); setcolor(3); setbkcolor(GREEN); for(x=x0;xx1;x+) y=y0+k*x; putpixel(x,y,RED); getch(); closegraph();思考思考:将画线程序改为函数将画线程序改为函数:void myline(int int int int);2022-8-8华中科技大学计算机学院15画线函数画线函数(ppt15-ppt29(ppt15-ppt29自学自学) )nvoid line(int x1,int y1,int x2,int y2);n从点(从点(x1,y1)到)到(x2, y2)之间画
16、一直线之间画一直线nvoid far lineto(int x,int y);n从画笔当前位置到点从画笔当前位置到点(x,y)之间画一直线之间画一直线nvoid far linerel(int dx,int dy);n函数函数linerel从画笔当前位置从画笔当前位置(x,y)到其相对位置到其相对位置(x+dx,y+dy)之间画一直线之间画一直线 2022-8-8华中科技大学计算机学院16画圆、圆弧和椭圆函数画圆、圆弧和椭圆函数nvoid far circle(int x,int y,int radius)n画一个以画一个以(x,y)为圆心,为圆心,radius为半径的圆为半径的圆nvoid
17、arc(int x,int y,int stangle,int endangle,radius)n画一个以点画一个以点(x,y)为圆心,为圆心,radius为半径为半径n起始角为起始角为stangle,终止角为,终止角为endangle的圆弧的圆弧nellipse(int x,int y,int stangle,int endangle, int xradius, yradius )n画一个以点画一个以点(x,y)为中心,为中心,stangle为起始角,为起始角,endangle为终止角,为终止角,xradius为为x轴半径,轴半径,yradius为为y轴半径的椭圆轴半径的椭圆n角度以度为单位
18、,屏幕的水平方向为角度以度为单位,屏幕的水平方向为0度,逆时钟方向为正度,逆时钟方向为正2022-8-8华中科技大学计算机学院17画矩形函数画矩形函数 nvoid rectangle(int x1,int y1,int x2,int y2);n画一个矩形画一个矩形n其左上角坐标是其左上角坐标是(x1,y1)n右下角坐标是右下角坐标是(x2,y2) 2022-8-8华中科技大学计算机学院187.3.4 7.3.4 颜色及线型的设置颜色及线型的设置n设置背景色和前景色设置背景色和前景色nvoid setbkcolor(int color);ncolor值必须是表值必须是表7.1所列所列nsetco
19、lor(4);); /*等价于等价于setcolor(RED););*/调色板颜色值01230123背景色背景色背景色背景色绿青浅绿浅青红洋红浅红浅洋红黄白黄白nvoid setcolor(int color);n对对EGA、VEA显示器,只有一个调色显示器,只有一个调色板板(表表7.1) n对对CGA显示器,有显示器,有4个调色板个调色板n调色板号调色板号x通过设置图形初始化中参通过设置图形初始化中参数数mode为为CGACxn如如mode为为CGAC1,setcolor(2) 为为洋红色洋红色 2022-8-8华中科技大学计算机学院19有关调色板的函数有关调色板的函数 nvoid setp
20、alette(int index, int color) n将调色板寄存器将调色板寄存器index中寄存的颜色设置为中寄存的颜色设置为color色色 n对对EGA / VGA显示器有效显示器有效n对对CGA无效无效n因为它的因为它的4个调色板的颜色值是固定不变的个调色板的颜色值是固定不变的nindex只能取只能取015,而,而color(6位位bit)可取可取063 2022-8-8华中科技大学计算机学院20调色板的例子调色板的例子1.setcolor(4); /*缺省值红色缺省值红色 */2.circle(100,100,50);3.getch();4.setpalette(4,EGA_YE
21、LLOW); /*等价于等价于setpalette(4, 62);*/ n调色板寄存器所装的颜色一旦改变,之前用调色板寄存器所装的颜色一旦改变,之前用setcolor (寄寄存器号存器号)设置的图形颜色也随之改变设置的图形颜色也随之改变 n此例调用此例调用setpalette(4,EGA_YELLOW)将将4号调色板寄号调色板寄存器中的颜色改变为黄色存器中的颜色改变为黄色n圆的颜色也立即改变为黄色圆的颜色也立即改变为黄色2022-8-8华中科技大学计算机学院21有关调色板的函数有关调色板的函数nvoid setallpalette(struct palettetype far *palette
22、);n来设置来设置EGA/VEA调色板上的调色板上的16种颜色种颜色n结构结构palettetypen在头文件在头文件graphics.h中定义为:中定义为:nstruct palettetype n unsigned char size;n signed char colors16;n; 2022-8-8华中科技大学计算机学院22画线的线型函数画线的线型函数 符号名值 含义SOLID_LINEDOTTED_LINECENTER_LINEDASHED_LINEUSERBIT_LINE01234实线(缺省值)点线中心线虚线用户自定义线型n线型参数线型参数linestylen取值如表取值如表7.4
23、所示,缺省值是实线所示,缺省值是实线n线宽参数线宽参数thicknNORM_WIDTH(1)表示一个像素)表示一个像素宽宽 (缺省值缺省值)nTHICK_WIDTH(3)表示三个像素)表示三个像素宽宽n参数参数upatternn只有在参数只有在参数linestyle取取4或或USERBIT_LINE(用户自定义线型用户自定义线型)时时, 才有意义才有意义setlinestyle( int linestyle,unsigned upattern, int thick);2022-8-8华中科技大学计算机学院237.3.5 7.3.5 封闭图形的填充封闭图形的填充n填充前模式和颜色的设置填充前模式
24、和颜色的设置n调用函数调用函数setfillstylenTurbo C 提供两种方法提供两种方法 n调用函数调用函数floodfill实现任意封闭图形的填充实现任意封闭图形的填充n一些特定画图函数会产生封闭轮廓图的自动一些特定画图函数会产生封闭轮廓图的自动填充填充 2022-8-8华中科技大学计算机学院24填充模式和颜色的设置填充模式和颜色的设置nvoid setfillstyle(int pattern,int color);n参数参数color是调色板寄存器号是调色板寄存器号n参数参数pattern如下表如下表n值为值为USER_FILL(用户自定义填充模式用户自定义填充模式)时,需调用时
25、,需调用函数函数setfillpattern 符号常量值 含 义符号常量值 含 义EMPTY_FILLSOLID_FILLLINE_FILLLTSLASH_FILLSLASH_FILLBKSLASH_FILLLTBKSLASH_FILL0123456用背景色填充全部填充填水平线填左斜线填粗左斜线填粗右斜线填右斜线HATCH_FILLXHATCH_FILLINTTERLEAVE_FILLWIDE_DOT_FILLCLOSE_DOT_FILLUSER_FILL789101112填网格线填斜交叉线填间隔线填稀疏点填密集点用户定义2022-8-8华中科技大学计算机学院25用户自定义填充方式用户自定义填
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言程序设计 ppt 课件
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内