收藏 分享(赏)

TC图形函数.ppt

上传人:wspkg9802 文档编号:5308126 上传时间:2019-02-20 格式:PPT 页数:43 大小:204.50KB
下载 相关 举报
TC图形函数.ppt_第1页
第1页 / 共43页
TC图形函数.ppt_第2页
第2页 / 共43页
TC图形函数.ppt_第3页
第3页 / 共43页
TC图形函数.ppt_第4页
第4页 / 共43页
TC图形函数.ppt_第5页
第5页 / 共43页
点击查看更多>>
资源描述

1、Turbo C 2.0包含有460多个库函数,其中有 70 多个图形函数,这些函数包括了绘图、处理图象及图素、屏幕及视图区控制、颜色及线型设置、状态查询和出错处理等,这使得 Turbo具有很强的图形功能。,第部分 Turbo C绘图程序设计,教材P267,.图形显示器的工作方式,IBM PC 机的显示器可以在两种基本视频方式下工作:一种是文本方式;另一种是图形方式。,( 1 ) 文本方式,在文本方式下,屏幕上可以显示的最小单位是字符,字符在屏幕上以行、列排列,如2580个字符 。,( 2 ) 图形方式,在图形方式下,屏幕上可以控制的最小单元称作像素 ( pixel ) ,它是组成图形的基本元素

2、,一般叫作“点”。通常把屏幕上所包含像素的个数叫做分辨率。分辨率越高,显示的图形越细致、质量越好。,在图形方式下,屏幕上每个像素的显示位置用屏幕坐标系来描述。在该坐标系中,屏幕左上角为坐标系的原点,坐标值为 ( 0 , 0 ) ; 水平方向为轴,自左向右;垂直方向为轴,自上向下。见下图。,坐标值的范围决定于所用显示器的分辨率。分辨率不同,水平方向上和垂直方向上的点数也不同,即其 maxx 、maxy 的数值不同。就 VGA 显示器来说,它通常所用的分辨率为 640480 ,即它的 maxx 值为 639 , maxy 的值为 479。,. 图形函数及其用法Turbo C 的图形函数均在一个头文

3、件“ graphics.h” 中定义。所以,凡是在程序中要调用这些图形函数,都必须在源程序的开头写上文件包含命令:# include ,( 1 ) 图形系统管理进入Turbo C, 显示器处于文本方式下。在文本方式下,所有的图形函数均不能应用。因此在调用图形函数绘图之前,必须先将显示器设置为图形模式,即图形方式初始化。在图形工作完毕之后,又要使显示器回到文本方式,以便进行程序文件等的编辑工作。,TC绘图程序: 图形系统初始化 绘图 关闭图形模式,图形方式初始化图形方式初始化通过函数 initgraph 来实现,它的功能是通过从磁盘上装入一个图形驱动程序来初始化图形系统,并将系统设置为图形模式。

4、其调用格式为:initgraph ( ,gdriver用来指定要装入的图形驱动程序.若 gdriver = DETECT;则由系统自动检测图形适配器 的最高分辨率模式,并装入相应的图形驱动程序. (P269表A-1) gmode用来设置图形显示模式.不同的图形驱动程序有 不同的图形显示模式; 在同一个图形驱动程序下, 也可能有几种图形显示模式. 图形显示模式决定了显示的分辨率、颜色数等。 (P271表A-4) path是一个字符串,用来指明图形驱动程序所在的路径。 若图形驱动程序在用户当前目录下,则path为空串.,举例: int gdriver = DETECT , gmode ; init

5、graph (,关闭图形模式关闭图形模式用函数 closegraph , 其调用方法为:closegraph ( ) ;(该函数不需参数),( 2 ) 绘图函数Turbo C 提供了一些基本的绘图函数,以方便图形设计。所有绘图函数调用时的参数,其类型均为整型,因此填入参数表的参数,应为整数或整型变量。,LINE 函数:在指定两点之间画直线。如:line ( x1 , y1 , x2 , y2 ) ;LINETO 函数:从当前点画线到指定点。如:lineto ( x , y ) ;MOVETO 函数:移到指定点(不画线)。如:moveto ( x , y ) ;,CIRCLE 函数:指定圆心和半

6、径画圆。如: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

7、函数:画一条多边折线。如: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( /*关闭图形系统,返回文本方式 */ ,图形的属性指颜色和线型,颜色又分为背景色和前景色。背景色指的是屏幕的颜色,即底色;前景色指的是绘图用的颜色

8、。任何绘图函数都是在当前颜色(背景色和前景色)和线型的状态下作图的。系统的默认值为:背景色为黑色;前景色为白色;线型为实线。,setbkcolor(背景色);设置背景色 如: setbkcolor(BLUE);设置背景色为兰色 setbkcolor(12);设置背景色为12号色 setcolor(画笔色);设置画笔色 如: setcolor(YELLOW);设置画笔色为黄色 setcolor(5);设置画笔色为5号色 注意:背景色和画笔色可以是名字或数字。见下表。,P277表A-7,putpixel(x,y,color); 在(x,y)处以color色画一点 例: putpixel(10,20

9、,RED);在(10,20)处画一红点 getpixel(x,y); 得到(x,y)处的颜色值 例: if (getpixel(300,270)= =7) outtextxy(x,y,”字符串”); 从(x,y)处开始显示字符串 例:outtextxy(10,20,”ABCF”);在(10,20)处显示ABCF,setfillstyle ( p, color ); 设置填充模式p(取值为0-12)及填充色color。 填充模式的含义见P290表A-13。 floodfill (x,y,bcolor); 从(x,y)开始,用setfillstyle设置好的填充模式及填充色向四周填充,直到边界(边

10、界色为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设置的颜色画一个扇形,

11、并自动按setfillstyle设置的模式及颜色对扇形填充. 起始角度a1,终止角度a2,圆心(x,y),半径r,void 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

12、( /*关闭图形系统,返回文本方式 */ F9 编译并运行, F10 光标落在菜单项。,(3) 绘图程序例子,例2:# include main ( ) int gd = DETECT , gm ;initgraph ( ,例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);linet

13、o(480,120);lineto(480,360);lineto(160,360);lineto(160,120); ,initgraph( ,例3,例4: #include main()int gdriver=DETECT,gmode;initgraph(,setfillstyle(1,6);putpixel(320,240,6);floodfill(320,240,4);getch();closegraph(); ,例4,例5: #include main()int gdriver=DETECT,gmode;initgraph(,setfillstyle(1,6);fillellipse

14、(320,240,300,200);getch();closegraph(); ,例5,P296例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“ , setbkcolor(4),t=6.28314/n; for(i=0;in;i+)xi=r*cos(i*t)+x0;yi=r*sin(i*t)+y0;for(i

15、=0;in-2;i+)for(j=i+1;jn;j+)line(xi,yi,xj,yj);,getch();closegraph(); ,下面是与动画有关的几个函数: getimage(x1,y1,x2,y2,p); 将屏幕左上角(x1,y1),右下角(x2,y2)的矩形区域内的图象存到指针P所指向的内存区域中。 putimage(x,y,p,op); 将p所指向的内存区域的内容在屏幕上显示,左上角坐标(x,y)。 op= 0: 预先对屏幕不进行任何操作; 1: 预先对屏幕进行“异或”操作; 2: 预先对屏幕进行“或”操作; 3: 预先对屏幕进行“与”操作; 4: 预先对缓冲区内容进行求“反”

16、操作; imagesize(x1,y1,x2,y2) 返回保存位图象所需的字节数。,例:图形移动 (一个矩形块水平右移)。 #include”graphics.h” #include”stdlib.h” main( ) void *w; int driver=DETECT,mode,i; initgraph( ,屏幕管理: setviewport(x1,y1,x2,y2,c); 设置视图区。 (x1,y1)为视图区的左上角坐标;(x2,y2)为视图区的右下角坐标。 c为裁剪状态参数,当c=1时,则超出视图区的图形部分被自动裁剪掉;当c=0时,则对超出视图区的图形不作裁剪处理。 注意:视图区建立以后,所有的图形输出坐标都是相对于当前视图区的,即视图区左上角点为坐标(0,0)点,而与图形在屏幕上的位置无关。 clearviewport(); 清除视图区。 cleardevice(); 清除屏幕,并将当前点位置设置为原点(0,0)。但是其它的图形系统设置将保持不变,如线型、填充模式、视图区的设置等。,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 中等教育 > 小学课件

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报