C语言程序设计ppt课件 第7章.ppt
《C语言程序设计ppt课件 第7章.ppt》由会员分享,可在线阅读,更多相关《C语言程序设计ppt课件 第7章.ppt(57页珍藏版)》请在三一办公上搜索。
1、2022/11/16,华中科技大学计算机学院,1,C语言程序设计,The C Programming Language,华中科技大学计算机学院曹计昌,2022/11/16,华中科技大学计算机学院,2,C语言程序设计,第7章 标准库及用户自定义库 接口的概念、与头文件的关系()C标准库的使用,以及图形库函数的应用和动画的设计方法 自定义库的创建,2022/11/16,华中科技大学计算机学院,3,7.3 C图形库及其基本的图形操作,基本输出函数printf 将信息以数字和字符串方式输出在显示屏上用户希望结果更形象、更生动、更逼真例如,windows操作系统取代Dos操作系统C编译系统 为了方便用户
2、设计图形程序 提供了画图函数库(graphics.h ),2022/11/16,华中科技大学计算机学院,4,7.3.1 图形显示的窗口和坐标,图形的窗口 可由用户定义它的位置和大小,大可到整个屏幕,小可到几个字符 屏幕上常常可同时有几个活动窗口 所有图形输出都是与当前窗口有关系,超出边界部分将被裁剪掉,2022/11/16,华中科技大学计算机学院,5,7.3.1 图形显示的窗口和坐标,图形的坐标 显示器的整个屏幕就像一张坐标纸图形上任一点位置用坐标值(x, y)来表示坐标值 (x, y)以像素为单位绝对坐标指相对于屏幕原点的坐标A和B的绝对坐标分别为(20,20)和(420,130)如定义一个
3、以A为左上角、B为右下角的图形窗口则用相对坐标表示,A为相对坐标原点,B的相对坐标是(400,110),2022/11/16,华中科技大学计算机学院,6,7.3.2 图形模式的初始化,原因微机系统默认屏幕为文本模式(80列,25行字符模式)此时所有图形函数均不能工作 方法void initgraph( int far *gdriver, int far *gmode, char far *path) gdriver所指的图形驱动软件装入到内存 参数gmode是图形函数用来确定显示模式的整型指针,2022/11/16,华中科技大学计算机学院,7,7.3.2 图形模式的初始化,初始化前的问题不知道
4、所用的图形显示器适配器类型,因为图形显示器适配器种类很多需要将编写的程序用于不同图形驱动器 解决方法初始化前用Turbo C的自动检测显示器硬件函数void far detectgraph(int far *gdriver, int far *gmode) 完成对适配器的检查,得到显示器类型号和相应的最高分辨率模式,2022/11/16,华中科技大学计算机学院,8,图形模式初始化例子,#include void main(void) int gdriver,gmode; detectgraph( /* 根据测试结果初始化图形模式 */,#includevoid main(void) int g
5、driver = DETECT; int gmode; initgraph( ,将driver设置为DETECT,它会自动检测所用显示器的类型,装入相应的图形驱动软件,并选用最高分辨率的显示模式,改进,2022/11/16,华中科技大学计算机学院,9,图形模式初始化的关闭,void far closegraph(void);用于关闭图形系统,回到文本方式(Turbo C 默认方式) 并释放用于保存图形驱动程序和字体的系统内存。void far restorecrtmode(void);用于返回到文本方式,但不关闭图形系统即图形函数所占用的内存不被释放和setgraphmode交互使用,在图形和
6、文本之间来回切换。,2022/11/16,华中科技大学计算机学院,10,例7.1 一个能独立运行的简单C图形程序,#include#includevoid main(void) int gdriver=DETECT,gmode; int i, xradius=130,yradius=130; initgraph( /* 关闭图形系统 */,2022/11/16,华中科技大学计算机学院,11,7.3.3 基本图形函数,画点函数 void putpixel(int x, int y, int color);用color颜色在(x,y)位置画一点 坐标位置函数int getmaxx(void); i
7、nt getmaxy(void); 分别得到x轴、 y轴的最大int getx(void); int gety(void); 分别得到当前画笔的x坐标、y坐标。void moveto(int x,int y);把画笔从当前位置移到点(x,y),移动过程不画。void moverel(int dx,int dy)把画笔从当前位置(x0,y0)移动到点(x0+dx,y0+dy),2022/11/16,华中科技大学计算机学院,12,补充: 点, 线,面的画法,点: 屏幕上(x,y)坐标处的像素(pixel)画点: 指在指定(x,y)坐标处输出一个像素.画点函数(像素输出函数) putpixel原型:
8、 void far _Cdecl putpixel(int x, int y, int color);功能: 指在指定(x,y)坐标处画一个color颜色的点.调用: putpixel(x,y,YELLOW);,2022/11/16,华中科技大学计算机学院,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 and number please!n);scanf(%d%d,例1. 按照输入点之间的间
9、隔和点的数目画点.,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();,2022/11/16,华中科技大学计算机学院,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,
10、x1,y1,please!n);scanf(%d%d%d%d,例2. 按照输入的起点,终点画线.,initgraph(,2022/11/16,华中科技大学计算机学院,15,画线函数(ppt15-ppt29自学),void line(int x1,int y1,int x2,int y2);从点(x1,y1)到(x2, y2)之间画一直线void far lineto(int x,int y);从画笔当前位置到点(x,y)之间画一直线void far linerel(int dx,int dy);函数linerel从画笔当前位置(x,y)到其相对位置(x+dx,y+dy)之间画一直线,2022/
11、11/16,华中科技大学计算机学院,16,画圆、圆弧和椭圆函数,void far circle(int x,int y,int radius)画一个以(x,y)为圆心,radius为半径的圆void arc(int x,int y,int stangle,int endangle,radius)画一个以点(x,y)为圆心,radius为半径起始角为stangle,终止角为endangle的圆弧ellipse(int x,int y,int stangle,int endangle, int xradius, yradius )画一个以点(x,y)为中心,stangle为起始角,endangle
12、为终止角,xradius为x轴半径,yradius为y轴半径的椭圆角度以度为单位,屏幕的水平方向为0度,逆时钟方向为正,2022/11/16,华中科技大学计算机学院,17,画矩形函数,void rectangle(int x1,int y1,int x2,int y2);画一个矩形其左上角坐标是(x1,y1)右下角坐标是(x2,y2),2022/11/16,华中科技大学计算机学院,18,7.3.4 颜色及线型的设置,设置背景色和前景色void setbkcolor(int color);color值必须是表7.1所列setcolor(4); /*等价于setcolor(RED);*/,void
13、 setcolor(int color);对EGA、VEA显示器,只有一个调色板(表7.1) 对CGA显示器,有4个调色板调色板号x通过设置图形初始化中参数mode为CGACx如mode为CGAC1,setcolor(2) 为洋红色,2022/11/16,华中科技大学计算机学院,19,有关调色板的函数,void setpalette(int index, int color) 将调色板寄存器index中寄存的颜色设置为color色 对EGA / VGA显示器有效对CGA无效因为它的4个调色板的颜色值是固定不变的index只能取015,而color(6位bit)可取063,2022/11/16,
14、华中科技大学计算机学院,20,调色板的例子,setcolor(4); /*缺省值红色 */circle(100,100,50);getch();setpalette(4,EGA_YELLOW); /*等价于setpalette(4, 62);*/,调色板寄存器所装的颜色一旦改变,之前用setcolor (寄存器号)设置的图形颜色也随之改变 此例调用setpalette(4,EGA_YELLOW)将4号调色板寄存器中的颜色改变为黄色圆的颜色也立即改变为黄色,2022/11/16,华中科技大学计算机学院,21,有关调色板的函数,void setallpalette(struct palettety
15、pe far *palette);来设置EGA/VEA调色板上的16种颜色结构palettetype在头文件graphics.h中定义为:struct palettetype unsigned char size; signed char colors16;;,2022/11/16,华中科技大学计算机学院,22,画线的线型函数,线型参数linestyle取值如表7.4所示,缺省值是实线线宽参数thickNORM_WIDTH(1)表示一个像素宽 (缺省值)THICK_WIDTH(3)表示三个像素宽参数upattern只有在参数linestyle取4或USERBIT_LINE(用户自定义线型)时,
16、 才有意义,setlinestyle( int linestyle,unsigned upattern, int thick);,2022/11/16,华中科技大学计算机学院,23,7.3.5 封闭图形的填充,填充前模式和颜色的设置调用函数setfillstyleTurbo C 提供两种方法 调用函数floodfill实现任意封闭图形的填充一些特定画图函数会产生封闭轮廓图的自动填充,2022/11/16,华中科技大学计算机学院,24,填充模式和颜色的设置,void setfillstyle(int pattern,int color);参数color是调色板寄存器号参数pattern如下表值为
17、USER_FILL(用户自定义填充模式)时,需调用函数setfillpattern,2022/11/16,华中科技大学计算机学院,25,用户自定义填充方式,void setfillpattern(char * upattern, int color);参数color用颜色填充后面的轮廓图和指定区域参数upattern指针指向一个88像素点阵组成的填充图模(占8个字节存储区)每个字节代表一行,每个bit位对应列上的像素1则该像素用color显示,0则不显示例 :char upattern=0 x8a,0 x8a,0 x41, 0 x3,0 x8a, 0 x8a,0 x41,0 x3;,2022/
18、11/16,华中科技大学计算机学院,26,填充任意封闭图形的函数,void floodfill(int x,int y,int bordercolor);参数x和y为封闭图形内任意一点的坐标参数bordercolor是封闭图形边框的颜色 注意所要填充的图形必须是完全封闭的点(x,y)要在封闭图形之内bordercolor的值必须与封闭图形边线的颜色一致,2022/11/16,华中科技大学计算机学院,27,填充例子,先用红色画一个圆,然后用黄色按如图7.3的图案填充该圆。char upattern=0 x8a,0 x8a,0 x41,0 x3, 0 x8a,0 x8a, 0 x41, 0 x3;
19、setcolor(RED); /* 设置前景色为红色 */setfillpattern(upattern,YELLOW); /* 自定义填充模式 */circle( 100,100,100); /* 画圆 */floodfill(50,60,RED); /* 填充圆 */,2022/11/16,华中科技大学计算机学院,28,画封闭轮廓图的函数,特点首先画出一个的封闭轮廓图然后用设定的或缺省的模式和颜色进行填充 例void bar(int x1,int y1,int x2,int y2);画一个已填充的条形图,没有边框 void pieslice(int x,int y,int stangle,
20、int endangle,int radius);画一个已填充的扇形 void fillellipse(int x,int y,int xradius,int yradius);画一个已填充椭圆,2022/11/16,华中科技大学计算机学院,29,7.3.6 图形方式下的字符输出,rintf 的不足无法选择字符的大小、字型、方向和颜色输出指定位置的字符串void outtext(char *str);在当前位置上输出由str所指的字符串void outtextxy(int x,int y,char *str);在窗口中(x,y)位置输出字符串不足只能输出字符串,不能直接输出变量的值,2022/
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C语言程序设计ppt课件 第7章 语言程序设计 ppt 课件

链接地址:https://www.31ppt.com/p-1375821.html