您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > C语言程序设计案例教程李培金第13章TurboCV2.0综合应用
第13章TurboCV2.0综合应用第13章TurboCV2.0综合应用13.1简单的数据库管理举例13.2TurboCV2.0图形功能第13章TurboCV2.0综合应用13.1简单的数据库管理举例图形与计算机硬件有着密切的联系,其中最直接的是显示器和显示卡。显示器通过信号线与显示卡相连,显示卡也称显示适配器,两者必须配套使用。屏幕上显示的图形是由像素点组成的。像素点代表了显示器的分辨率。目前广泛使用的显示卡有CGA(分辨率一般为600*200)、EGA(640*350)、VGA(640*480)、TVGA(800*600)等。第13章TurboCV2.0综合应用调色板是图形设计与应用中经常使用的概念,可理解为硬件颜色调色池,它决定了在屏幕上显示图形的颜色。这里以当前使用较多的VGA显示卡为例来说明调色板的作用。假设VGA所能提供的颜色为64种,但最多只能同时显示其中任意的16种,这是因为VGA上有一组16个颜色寄存器,也称调色板。在显示存储器RAM中存放的是颜色寄存器的代号。显示时,先从显存中取出颜色寄存器代号,再由寄存器代号查到相应的寄存器,取出其中的颜色值加以显示。虽然显示RAM中固定使用的16个颜色寄存器的代号,但在这个寄存器中可存储不同的值,显示不同的颜色。因此,这16个颜色寄存器起到了调色的作用。第13章TurboCV2.0综合应用在VGA的640*480的16色方式下,VGA所能提供的64种颜色是物理颜色,是固定不变的。如:0表示黑色;1表示红色;2表示蓝色;3表示绿色;……;64表示白色。颜色寄存器表示的是一种逻辑颜色,可从64种颜色中随意取出16种放入颜色寄存器中,通过调用这些寄存器号显示所选中的颜色。另外需说明一点,0号寄存器中存放的颜色值为背景颜色,改变了0号寄存器中的值,则背景色随之改变。在TurboC中,还将数字0~15定义成符号常量,如表13-1所示。第13章TurboCV2.0综合应用表13-1颜色符号常量定义值符号常量值符号常量值BLACK0DARKGRAY8BLUE1LIGHTBLUE9GREEN2LIGHTGREEN10CYAN3LIGHTCYAN11RED4LIGHTRED12MAGENTA5LIGHTMAGENTA13BROWN6YELLOW14LIGHTGRAY7WHITE15第13章TurboCV2.0综合应用这些符号常量定义的值中,0~15表示的是颜色寄存器号。从符号常量的文字意义来看,它们又都表示的是指定颜色,若不改变调色板,按系统初始化时规定的值,则这些符号常量指定的颜色寄存器号正好与颜色寄存器中所表示的颜色意义相同。但如果改变了调色板,再用这些符号常量,可能意义就不准确了。因此,在使用符号常量时,一定要注意调色板是否改变了。第13章TurboCV2.0综合应用【例13.1】从键盘输入数据,建立一个有关学生信息的数据库。#defineNULL0#includedos.h#includestdlib.hstructdate{intmonth;intday;intyear;};第13章TurboCV2.0综合应用structstudent_node_type{intnum;charname[20];charsex[3];structdatebirthday;structdatematriculate_date;intscore;structstudent_node_type*next;};structstudent_node_type*create_link_table(){intI,n;structstudent_node_typehead,p,*q;第13章TurboCV2.0综合应用printf(请输入学生记录数:);printf(学号姓名性别出生时间入学时间成绩\n);for(I=0;In;I++){p=(structstudent_node_type*)malloc(sizeof(structstudent_node_type));p-next=NULL;if(head==NULL)head=p;if(q==NULL)q=p;else{q-next=p;q=p;}第13章TurboCV2.0综合应用scanf(%d%s%d%d%d%d%d%d%d,&p-num,&p-name,&p-sex,&p-birthday.month,&p-birthday.day,&p-birthday.year,&p-matriculate_date.month,&p-matriculate_date.day,&p-matriculate_date.year,&p-score);}return(head);};main(){structstudent_node_type*student_link_head;student_link_head=create_link_table();}第13章TurboCV2.0综合应用【例13.2】输出学生信息的数据库。print_link_table(head)structstudent_node_type*head;{structstudent_node_type*p;p=head;printf();while(p!=NULL)第13章TurboCV2.0综合应用{printf(%7s%6s%8d%d%d%6d%d%d%7d\n,p-num,p-name,p-sex,p-birthday.month,p-birthday.day,p-birthday.year,p-matriculate_date.month,p-matriculate_date.day,p-matriculate_date.year,p-score);p=p-next;}}第13章TurboCV2.0综合应用13.2TurboCV2.0图形功能13.2.1图形模式的设置在使用C图形系统进行画图时,一般先设置图形方式,然后使用图形函数进行绘图,最后关闭图形方式。initgraph()函数的形式为voidfarinitgraph(intfar*driver,intfar*mode,charfar*path);它用来初始化图形系统,并将系统设置为图形方式。第13章TurboCV2.0综合应用说明:(1)driver指定图表方式的驱动程序代码。在头文件graphics.h中定义了图形驱动程序的宏名及其代码值,如表13-2所示。(2)mode指向视屏模式,即设置分辨率。mode可以是表13-3中的值,这些值也是在graphics.h中定义的。(3)path指向图形驱动程序所在的路径,即指定(.BGI)所存入的路径。若没有指定,则在系统指定的路径和当前目录下寻找.BGI文件。第13章TurboCV2.0综合应用表13-2图表方式宏名与代码对照表宏名代码值宏名代码值DETECT0IBM85146CGA1HERCMONO7MCGA2ATT4008EGA3VGA9EAG644PC327010EGAMONO5第13章TurboCV2.0综合应用表13-3显示模式对照表图形显示卡方式(mode)代码值分辨率CGACGAC0CGAC1CGAC2CGAC3CGACI01234320*200320*200320*200320*200640*200MCGAMCGAC0MCGAC1MCGAC2MCGAC3MCGACMEDMCGAHI012345320*200320*200320*200320*200640*200640*480第13章TurboCV2.0综合应用EGAEGALOEGAHI01640*200640*350VGAVGALOVGAMEDVGAHI012640*200640*350640*4800IBM8514IBM8514LOIBM8514HI01640*4801024*768第13章TurboCV2.0综合应用【例13.3】在屏幕上画出一系列同心圆。#includegraphics.hmain(){intgdriver,gmode,i;gdriver=DETECT;initgraph(&gdriver,&gmode,c:\\tc);sebkcolor(0);cleardevice();for(i=0;i=15;i++)第13章TurboCV2.0综合应用{setcolor(i);circle(320,240,20+i*10);delay(100);}for(i=0;i=15;i++){setbkcolor(i);cleardevice();circle(320,240,20+I*10);delay(100);}closegraph();}第13章TurboCV2.0综合应用13.2.2基本图形函数1.屏幕和视口的管理函数setviewport()设置图形视口clearviewport()清除图形视口cleardevice()清除屏幕getviewsetting()返回关于当前视口的信息getimage()将指定区域的位图像存入内存putimage()将以前用getimage()函数保存的位图像放到屏幕上getpixel()取得(x,y)处的像素颜色putpixel()在(x,y)处画一像素第13章TurboCV2.0综合应用2.颜色函数setbkcolor()设置当前背景颜色setcolor()设置当前画线颜色getcolor()返回当前画线颜色getbkcolor()返回当前背景颜色第13章TurboCV2.0综合应用3.画图函数●voidfararc(intx,inty,intstrangle,intendangle,intradius)arc()函数的功能是以(x,y)为圆心,以radius为半径,按当前绘图颜色,从起始角stangle到终止角endangle画一圆弧。●voidfarcircle(intx,inty,intradius)circle()函数的功能是以(x,y)为圆心,以radius为半径,用当前颜色画一圆弧。第13章TurboCV2.0综合应用●voidfardrawploy(intnumpoints,intfar*polypoints)drawploy()函数的功能是用当前的线型和颜色画一顶点数为numpoints的多边形。*polypoints指向一整数序列。每一整数对给出多边形中一个点的坐标x和y。●voidfarline(intx1,inty1,intx2,inty2)line()函数的功能是从点(x1,y1)到点(x2,y2)之间画一条直线。第13章TurboCV2.0综合应用●voidfarlineto(intx,inty)lineto()函数的功能是从当前像素坐标位置开始到坐标(x,y)处结束,画一条直线。●rectangle(intleft,inttop,intright,intbottom)rectang()函数的功能是以左上角坐标为(left,top),右下角坐标为(right,bottom)画一矩形。第13章TurboCV2.0综合应用13.2.3填充函数setlinestyle设置当前画线宽度和式样bar3d()画并填充一个三维条形fillpoly()画并填充一个多边形floodfill()填充一个封闭区域getfillpattern()返回用户定义的填充图案getfillsettings()返回有关当前填充图案和填充颜色的信息pieslice()画出和填充一个扇形setfillpattern()选择一个用户定义的填充图案setfillstyle()设置填充图案和颜色第13章TurboCV2.0综合应用13.2.4图形方式下文本输出函数gettextsetting()返回当前字体、方向、大小和对齐方式outtext()在当前位置输出一个字符串outtextxy()在指定位置输出一个字符串registerbgifout()登录连接进来的或用户装入的字体文件(*.BGI)sette
本文标题:C语言程序设计案例教程李培金第13章TurboCV2.0综合应用
链接地址:https://www.777doc.com/doc-2908252 .html