C语言程序设计-第7章-标准库及用户自定义库.ppt
- 文档编号:1368725
- 上传时间:2022-10-21
- 格式:PPT
- 页数:56
- 大小:273KB
C语言程序设计-第7章-标准库及用户自定义库.ppt
《C语言程序设计-第7章-标准库及用户自定义库.ppt》由会员分享,可在线阅读,更多相关《C语言程序设计-第7章-标准库及用户自定义库.ppt(56页珍藏版)》请在冰豆网上搜索。
10/21/2022,华中科技大学计算机学院,1,C语言程序设计,第7章标准库及用户自定义库接口的概念、与头文件的关系()C标准库的使用,以及图形库函数的应用和动画的设计方法自定义库的创建,10/21/2022,华中科技大学计算机学院,2,7.3C图形库及其基本的图形操作,基本输出函数printf将信息以数字和字符串方式输出在显示屏上用户希望结果更形象、更生动、更逼真例如,windows操作系统取代Dos操作系统C编译系统为了方便用户设计图形程序提供了画图函数库(graphics.h),10/21/2022,华中科技大学计算机学院,3,7.3.1图形显示的窗口和坐标,图形的窗口可由用户定义它的位置和大小,大可到整个屏幕,小可到几个字符屏幕上常常可同时有几个活动窗口所有图形输出都是与当前窗口有关系,超出边界部分将被裁剪掉,10/21/2022,华中科技大学计算机学院,4,7.3.1图形显示的窗口和坐标,图形的坐标显示器的整个屏幕就像一张坐标纸图形上任一点位置用坐标值(x,y)来表示坐标值(x,y)以像素为单位绝对坐标指相对于屏幕原点的坐标A和B的绝对坐标分别为(20,20)和(420,130)如定义一个以A为左上角、B为右下角的图形窗口则用相对坐标表示,A为相对坐标原点,B的相对坐标是(400,110),10/21/2022,华中科技大学计算机学院,5,7.3.2图形模式的初始化,原因微机系统默认屏幕为文本模式(80列,25行字符模式)此时所有图形函数均不能工作方法voidinitgraph(intfar*gdriver,intfar*gmode,charfar*path)gdriver所指的图形驱动软件装入到内存参数gmode是图形函数用来确定显示模式的整型指针,10/21/2022,华中科技大学计算机学院,6,7.3.2图形模式的初始化,初始化前的问题不知道所用的图形显示器适配器类型,因为图形显示器适配器种类很多需要将编写的程序用于不同图形驱动器解决方法初始化前用TurboC的自动检测显示器硬件函数voidfardetectgraph(intfar*gdriver,intfar*gmode)完成对适配器的检查,得到显示器类型号和相应的最高分辨率模式,10/21/2022,华中科技大学计算机学院,7,图形模式初始化例子,#includevoidmain(void)intgdriver,gmode;detectgraph(/*根据测试结果初始化图形模式*/,#includevoidmain(void)intgdriver=DETECT;intgmode;initgraph(,将driver设置为DETECT,它会自动检测所用显示器的类型,装入相应的图形驱动软件,并选用最高分辨率的显示模式,改进,10/21/2022,华中科技大学计算机学院,8,图形模式初始化的关闭,voidfarclosegraph(void);用于关闭图形系统,回到文本方式(TurboC默认方式)并释放用于保存图形驱动程序和字体的系统内存。
voidfarrestorecrtmode(void);用于返回到文本方式,但不关闭图形系统即图形函数所占用的内存不被释放和setgraphmode交互使用,在图形和文本之间来回切换。
10/21/2022,华中科技大学计算机学院,9,例7.1一个能独立运行的简单C图形程序,#include#includevoidmain(void)intgdriver=DETECT,gmode;inti,xradius=130,yradius=130;initgraph(/*关闭图形系统*/,10/21/2022,华中科技大学计算机学院,10,7.3.3基本图形函数,画点函数voidputpixel(intx,inty,intcolor);用color颜色在(x,y)位置画一点坐标位置函数intgetmaxx(void);intgetmaxy(void);分别得到x轴、y轴的最大intgetx(void);intgety(void);分别得到当前画笔的x坐标、y坐标。
voidmoveto(intx,inty);把画笔从当前位置移到点(x,y),移动过程不画。
voidmoverel(intdx,intdy)把画笔从当前位置(x0,y0)移动到点(x0+dx,y0+dy),10/21/2022,华中科技大学计算机学院,11,补充:
点,线,面的画法,点:
屏幕上(x,y)坐标处的像素(pixel)画点:
指在指定(x,y)坐标处输出一个像素.画点函数(像素输出函数)putpixel原型:
voidfar_Cdeclputpixel(intx,inty,intcolor);功能:
指在指定(x,y)坐标处画一个color颜色的点.调用:
putpixel(x,y,YELLOW);,10/21/2022,华中科技大学计算机学院,12,#includegraphics.h#includemath.h#includedos.hvoidmain(void)intx=150,y=250,step,num,i,gdriver,gmode;printf(inputstepandnumberplease!
n);scanf(%d%d,例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();closegraph();,10/21/2022,华中科技大学计算机学院,13,#includegraphics.h#includemath.h#includedos.hvoidmain(void)intx0,y0,x1,y1,x,y,gdriver,gmode;floatk;printf(inputx0,y0,x1,y1,please!
n);scanf(%d%d%d%d,例2.按照输入的起点,终点画线.,initgraph(,10/21/2022,华中科技大学计算机学院,14,画线函数(ppt15-ppt29自学),voidline(intx1,inty1,intx2,inty2);从点(x1,y1)到(x2,y2)之间画一直线voidfarlineto(intx,inty);从画笔当前位置到点(x,y)之间画一直线voidfarlinerel(intdx,intdy);函数linerel从画笔当前位置(x,y)到其相对位置(x+dx,y+dy)之间画一直线,10/21/2022,华中科技大学计算机学院,15,画圆、圆弧和椭圆函数,voidfarcircle(intx,inty,intradius)画一个以(x,y)为圆心,radius为半径的圆voidarc(intx,inty,intstangle,intendangle,radius)画一个以点(x,y)为圆心,radius为半径起始角为stangle,终止角为endangle的圆弧ellipse(intx,inty,intstangle,intendangle,intxradius,yradius)画一个以点(x,y)为中心,stangle为起始角,endangle为终止角,xradius为x轴半径,yradius为y轴半径的椭圆角度以度为单位,屏幕的水平方向为0度,逆时钟方向为正,10/21/2022,华中科技大学计算机学院,16,画矩形函数,voidrectangle(intx1,inty1,intx2,inty2);画一个矩形其左上角坐标是(x1,y1)右下角坐标是(x2,y2),10/21/2022,华中科技大学计算机学院,17,7.3.4颜色及线型的设置,设置背景色和前景色voidsetbkcolor(intcolor);color值必须是表7.1所列setcolor(4);/*等价于setcolor(RED);*/,voidsetcolor(intcolor);对EGA、VEA显示器,只有一个调色板(表7.1)对CGA显示器,有4个调色板调色板号x通过设置图形初始化中参数mode为CGACx如mode为CGAC1,setcolor
(2)为洋红色,10/21/2022,华中科技大学计算机学院,18,有关调色板的函数,voidsetpalette(intindex,intcolor)将调色板寄存器index中寄存的颜色设置为color色对EGA/VGA显示器有效对CGA无效因为它的4个调色板的颜色值是固定不变的index只能取015,而color(6位bit)可取063,10/21/2022,华中科技大学计算机学院,19,调色板的例子,setcolor(4);/*缺省值红色*/circle(100,100,50);getch();setpalette(4,EGA_YELLOW);/*等价于setpalette(4,62);*/,调色板寄存器所装的颜色一旦改变,之前用setcolor(寄存器号)设置的图形颜色也随之改变此例调用setpalette(4,EGA_YELLOW)将4号调色板寄存器中的颜色改变为黄色圆的颜色也立即改变为黄色,10/21/2022,华中科技大学计算机学院,20,有关调色板的函数,voidsetallpalette(structpalettetypefar*palette);来设置EGA/VEA调色板上的16种颜色结构palettetype在头文件graphics.h中定义为:
structpalettetypeunsignedcharsize;signedcharcolors16;;,10/21/2022,华中科技大学计算机学院,21,画线的线型函数,线型参数linestyle取值如表7.4所示,缺省值是实线线宽参数thickNORM_WIDTH
(1)表示一个像素宽(缺省值)THICK_WIDTH(3)表示三个像素宽参数upattern只有在参数linestyle取4或USERBIT_LINE(用户自定义线型)时,才有意义,setlinestyle(intlinestyle,unsignedupattern,intthick);,10/21/2022,华中科技大学计算机学院,22,7.3.5封闭图形的填充,填充前模式和颜色的设置调用函数setfillstyleTurboC提供两种方法调用函数floodfill实现任意封闭图形的填充一些特定画图函数会产生封闭轮廓图的自动填充,10/21/2022,华中科技大学计算机学院,23,填充模式和颜色的设置,voidsetfillstyle(intpattern,intcolor);参数color是调色板寄存器号参数pattern如下表值为USER_FILL(用户自定义填充模式)时,需调用函数setfillpattern,10/21/2022,华中科技大学计算机学院,24,用户自定义填充方式,voidsetfillpattern(char*upattern,intcolor);参数color用颜色填充后面的轮廓图和指定区域参数upattern指针指向一个88像素点阵组成的填充图模(占8个字节存储区)每个字节代表一行,每个bit位对应列上的像素1则该像素用color显示,0则不显示例:
charupattern=0x8a,0x8a,0x41,0x3,0x8a,0x8a,0x41,0x3;,10/21/2022,华中科技大学计算机学院,25,填充任意封闭图形的函数,voidfloodfill(intx,inty,intbordercol
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言程序设计 标准 用户 自定义