资源预览内容
第1页 / 共43页
第2页 / 共43页
第3页 / 共43页
第4页 / 共43页
第5页 / 共43页
第6页 / 共43页
第7页 / 共43页
第8页 / 共43页
第9页 / 共43页
第10页 / 共43页
亲,该文档总共43页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
Turbo C 2.0包含有460多个库函数,其中有 70 多个图形函数,这些函数包括了绘图、处理图象及图素、屏幕及视图区控制、颜色及线型设置、状态查询和出错处理等,这使得 Turbo具有很强的图形功能。第部分 Turbo C绘图程序设计教材P267.图形显示器的工作方式IBM PC 机的显示器可以在两种基 本视频方式下工作:一种是文本方 式;另一种是图形方式。( 1 ) 文本方式在文本方式下,屏幕上可以 显示的最小单位是字符,字 符在屏幕上以行、列排列, 如2580个字符 。( 2 ) 图形方式在图形方式下,屏幕上可以控制 的最小单元称作像素 ( pixel ) , 它是组成图形的基本元素,一般 叫作“点”。通常把屏幕上所包含 像素的个数叫做分辨率。分辨率 越高,显示的图形越细致、质量 越好。在图形方式下,屏幕上每个像素的显示位置用屏幕坐标系来描述。在该坐标系中,屏幕左上角为坐标系的原点,坐标值为 ( 0 , 0 ) ; 水平方向为轴,自左向右;垂直方向为轴,自上向下。见下图。坐标值的范围决定于所用显示器的分辨率。分辨率不同,水平方向上和垂直方向上的点数也不同,即其 maxx 、maxy 的数值不同。就 VGA 显示器来说,它通常所用的分辨率为 640480 ,即它的 maxx 值为 639 , maxy 的值为 479。. 图形函数及其用法Turbo C 的图形函数均在一个头文件“ graphics.h” 中定义。所以,凡是在程序中要调用这些图形函数,都必须在源程序的开头写上文件包含命令:# include ( 1 ) 图形系统管理进入Turbo C, 显示器处于文本方式下。在文本方式下,所有的图形函数均不能应用。因此在调用图形函数绘图之前,必须先将显示器设置为图形模式,即图形方式初始化。在图形工作完毕之后,又要使显示器回到文本方式,以便进行程序文件等的编辑工作。TC绘图程序:图形系统初始化 绘图 关闭图形模式 图形方式初始化图形方式初始化通过函数 initgraph 来实现,它的功能是通过从磁盘上装入一个图形驱动程序来初始化图形系统,并将系统设置为图形模式。其调用格式为:initgraph ( gdriver用来指定要装入的图形驱动程序.若 gdriver = DETECT;则由系统自动检测图形适配器 的最高分辨率模式,并装入相应的图形驱动程序. (P269表A-1) gmode用来设置图形显示模式.不同的图形驱动程序有 不同的图形显示模式; 在同一个图形驱动程序下, 也可能有几种图形显示模式.图形显示模式决定了显示的分辨率、颜色数等。 (P271表A-4) path是一个字符串,用来指明图形驱动程序所在的路径。 若图形驱动程序在用户当前目录下,则path为空串.举例: int gdriver = DETECT , gmode ; initgraph ( 关闭图形模式关闭图形模式用函数 closegraph , 其调用方法为:closegraph ( ) ;(该函数不需参数)( 2 ) 绘图函数Turbo C 提供了一些基本的绘图函数,以方便图形设计。所有绘图函数调用时的参数,其类型均为整型,因此填入参数表的参数,应为整数或整型变量。 LINE 函数:在指定两点之间画直线。如:line ( x1 , y1 , x2 , y2 ) ; LINETO 函数:从当前点画线到指定点。如:lineto ( x , y ) ; MOVETO 函数:移到指定点(不画线)。如:moveto ( x , y ) ; CIRCLE 函数:指定圆心和半径画圆。如:circle ( xc , yc , r ) ; ARC 函数:画一段圆弧。要求指定圆弧所在圆的圆心、半径,以及圆弧的起始角度和终止角度。如:arc ( xc , yc , angs , ange , r ) ;ellipse(x,y,a1,a2,rx,ry);起始角度a1,终止角度a2,椭圆心(x,y ),x轴半径rx, y轴半径ry .例: ellipse(200,100,0,360, 50,20);画 一个椭圆周画一个椭圆弧 RECTANGLE 函数:指定矩形的左上角和右下角画一个矩形。如:rectangle ( x1 , y1 , x2 , y2 ) ; DRAWPOLY 函数:画一条多边折线。如:drawpoly ( n,p ) ;其中,n 为多边折线的顶点数;p 为存放 顶点坐标值的数组名。数组元素个数为2*n . 如果首尾两点重合,则可以绘制一个多边形。例如: #include “graphics.h “ main( ) int gdriver ,gmode ; static int p 8 = 10,20,150,150,200,30,10,20 ; gdriver = DETECT; initgraph( /* 图形系统初始化 */ drawpoly( 4,p ); /* 画一个三角形 */ getch ( ); closegraph ( ); /*关闭图形系统,返回文本方式 */图形的属性指颜色和线型,颜色又分为背景色和前景色。背景色指的是屏幕的颜色,即底色;前景色指的是绘图用的颜色。任何绘图函数都是在当前颜色(背景色和前景色)和线型的状态下作图的。系统的默认值为:背景色为黑色;前景色为白色;线型为实线。 setbkcolor(背景色);设置背景色如: setbkcolor(BLUE);设置背景色为兰色setbkcolor(12);设置背景色为12号色setcolor(画笔色);设置画笔色如: setcolor(YELLOW);设置画笔色为黄色setcolor(5);设置画笔色为5号色注意:背景色和画笔色可以是名字或数字。见下表。符号名数值颜色 BLACK BLUE GREEN CYAN RED MAGENTA BROWN LIGHTGRAY DARKGRAY LIGHTBLUE0 1 2 3 4 5 6 7 8 9黑 色 蓝 色 绿 色 青 色 红 色 紫红色 棕 色 浅灰色 深灰色 浅蓝色P277 表A-7符号名数值颜色LIGHTGREEN LIGHTCYAN LIGHTRED LIGHTMAGENTA YELLOW WHITE10 11 12 13 14 15浅绿色 浅青色 浅红色 浅紫色 黄 色 白 色putpixel(x,y,color); 在(x,y)处以color色画一点例: putpixel(10,20,RED);在(10,20)处 画一红点getpixel(x,y); 得到(x,y)处的颜色值例: if (getpixel(300,270)= =7)outtextxy(x,y,”字符串”); 从(x,y)处开始显示字符串 例:outtextxy(10,20,”ABCF”);在(10,20) 处显示ABCFsetfillstyle ( p, color ); 设置填充模式p(取值为0-12)及填充色 color。 填充模式的含义见P290表A-13。floodfill (x,y,bcolor); 从(x,y)开始,用 setfillstyle设置好的填充模式及填充色向四 周填充,直到边界(边界色为bcolor)为 止。例: setcolor(RED);circle(300,200,50);setfillstyle(2,GREEN);floodfill(300,200,RED);从(300,200)开始,按setfillstyle设置的模式及颜色开始 填充,一直到红色边界(圆周边界)才停止。bar(x1,y1,x2,y2); 由setcolor设置的颜色画一个矩形,并自 动按setfillstyle设置的模式及颜色对矩形 填充.矩形的左上角坐标(x1,y1),矩形的右下角坐标(x2,y2)pieslice(x,y,a1,a2,r); 由setcolor设置的颜色画一个扇形,并自 动按setfillstyle设置的模式及颜色对扇形 填充.起始角度a1,终止角度a2,圆心(x,y),半径rvoid fillellipse(int x,int y,int rx,int ry);画出一实心椭圆void sector(int x,int y,int angs,int ange,int rx,int ry);画出一实心椭圆扇区void fillpoly(int nps,int *pxy);画并填充一多边形。例1: #include “graphics.h ”main( ) int gdriver ,gmode ;gdriver = DETECT; initgraph( /*图形系统初始化 */ line(10, 20 , 120, 200 ); /* 从(10,20)到(120,200) 画一直线 */getch ( ); /*任击一个键便继续向下运行*/closegraph ( ); /*关闭图形系统,返回文本方式 */F9 编译并运行, F10 光标落在菜单项。(3) 绘图程序例子例2:# include main ( ) int gd = DETECT , gm ;initgraph ( setbkcolor ( LIGHTBLUE ) ;setcolor ( RED ) ;circle ( 320 , 240 , 100 ) ;getch ( ) ;closegraph ( ) ; 例3: #include void mydraw()line(160,120,480,120);line(480,120,480,360);line(480,360,160,360);line(160,360,160,120); main()int gdriver=DECTECT,gmode;等价于: void mydraw1()moveto(160,120);lineto(480,120);lineto(480,360);lineto(160,360);lineto(160,120); initgraph(cleardevice();mydraw();getch();closegraph(); 例3例4: #include main()int gdriver=DETECT,gmode;initgraph(setbkcolor(15);setcolor(4);ellipse(320,240,0,360,300,200);setfillstyle(1,6);putpixel(320,240,6);floodfill(320,240,4);getch();closegraph(); 例4例5: #include main()int gdriver=DETECT,gmode;initgraph(setbkcolor(15);setcolor(4);setfillstyle(1,6);fillellipse(320,240,300,200);getch();closegraph(); 例5P296例B-1 金刚石图案 #include #include void main()float t;int x0=320,y0=240;int n,i,j,r,x50,y50;int gdriver=DETECT,gmode; printf(“ input n(23-31) and r(100- 200)n“); scanf(“%d,%d“ , initgraph( cleardevice(); setcolor(9); setbkcolor(4)t=6.28314/n;for(i=0;in;i+)xi=r*cos(i*t)+x0;yi
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号