常用C语言图形函数[上课教学]_第1页
常用C语言图形函数[上课教学]_第2页
常用C语言图形函数[上课教学]_第3页
常用C语言图形函数[上课教学]_第4页
常用C语言图形函数[上课教学]_第5页
已阅读5页,还剩22页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、 Turbo C绘图程序设计绘图程序设计 1上课材料 .图形显示器的工作方式图形显示器的工作方式 IBM PC IBM PC 机的显示器可以在两种基机的显示器可以在两种基 本视频方式下工作:文本方式;图本视频方式下工作:文本方式;图 形方式。形方式。 2上课材料 ( 1 )文本方式文本方式 屏幕上可以显示的最小单位屏幕上可以显示的最小单位 是字符,字符在屏幕上以行、是字符,字符在屏幕上以行、 列排列,如列排列,如2580个字符个字符 。 3上课材料 ( 2 )图形方式图形方式 屏幕上可以控制的最小单元称作屏幕上可以控制的最小单元称作 像素像素 ( pixel ) ,它是组成图形的,它是组成图形

2、的 基本元素。基本元素。 4上课材料 在图形方式下,屏幕上每个像素的显在图形方式下,屏幕上每个像素的显 示位置用屏幕坐标系来描述。在该坐示位置用屏幕坐标系来描述。在该坐 标系中,屏幕左上角为坐标系的原点,标系中,屏幕左上角为坐标系的原点, 坐标值为坐标值为 ( 0 , 0 ) 。 5上课材料 屏幕坐标系屏幕坐标系 6上课材料 坐标值的范围决定于所用显示器的坐标值的范围决定于所用显示器的 分辨率。分辨率。 7上课材料 . 图形函数及其用法图形函数及其用法 Turbo C 的图形函数均在一个头文件的图形函数均在一个头文件 “ graphics.h” 中定义。所以,凡是在中定义。所以,凡是在 程序中

3、要调用这些图形函数,都必须程序中要调用这些图形函数,都必须 在源程序的开头写上文件包含命令:在源程序的开头写上文件包含命令: # include 8上课材料 TC绘图程序:绘图程序: 图形系统初始化图形系统初始化 绘图绘图 关闭图形模式关闭图形模式 9上课材料 图形方式初始化图形方式初始化 通过从磁盘上装入一个图形驱动程序通过从磁盘上装入一个图形驱动程序 来初始化图形系统,并将系统设置为来初始化图形系统,并将系统设置为 图形模式。其调用格式为:图形模式。其调用格式为: initgraph ( 10上课材料 若若 gdriver = DETECT;则由系统自动检测图形适配器则由系统自动检测图形适

4、配器 的最高分辨率模式的最高分辨率模式,并装入相应的图形驱动程序并装入相应的图形驱动程序. path是一个字符串,用来指明图形驱动程序所在的路径。是一个字符串,用来指明图形驱动程序所在的路径。 若图形驱动程序在用户当前目录下,则若图形驱动程序在用户当前目录下,则path为空串为空串. 11上课材料 举例:举例: int gdriver = DETECT , gmode ; initgraph ( 12上课材料 关闭图形模式关闭图形模式 closegraph ( ) ; 13上课材料 LINE 函数:函数: 在指定两点之间画直线。在指定两点之间画直线。 如:如:line ( x1 , y1 ,

5、x2 , y2 ) ; MOVETO 函数:函数: 移到指定点(不画线)。移到指定点(不画线)。 如:如:moveto ( x , y ) ; 14上课材料 CIRCLE 函数:函数: 指定圆心和半径画圆。指定圆心和半径画圆。 如:如:circle ( xc , yc , r ) ; ARC 函数:函数: 画一段圆弧。要求指定圆弧所在圆的画一段圆弧。要求指定圆弧所在圆的 圆心、半径,以及圆弧的起始角度和终圆心、半径,以及圆弧的起始角度和终 止角度。止角度。 如:如:arc ( xc , yc , angs , ange , r ) ; 15上课材料 RECTANGLE 函数:函数: 指定矩形的

6、左上角和右下角画一个矩形。指定矩形的左上角和右下角画一个矩形。 如:如:rectangle ( x1 , y1 , x2 , y2 ) ; DRAWPOLY 函数:函数: 画一条多边折线。画一条多边折线。 如:如:drawpoly ( n,p ) ; 其中,其中,n 为多边折线的顶点数;为多边折线的顶点数;p 为存放为存放 顶点坐标值的数组名。数组元素个数为顶点坐标值的数组名。数组元素个数为2*n . 如果首尾两点重合,则可以绘制一个多边形如果首尾两点重合,则可以绘制一个多边形。 16上课材料 例如:例如: #include “graphics.h ” main( ) int gdriver

7、,gmode ; static int p 8 = 10,20,150,150,200,30,10,20 ; gdriver = DETECT; initgraph( /* 图形系统初始化图形系统初始化 */ drawpoly( 4,p ); /* 画一个三角形画一个三角形 */ getch ( ); closegraph ( ); /*关闭图形系统,返回文本方式关闭图形系统,返回文本方式 */ 17上课材料 图形的属性指颜色和线型,颜色又分图形的属性指颜色和线型,颜色又分 为背景色和前景色。为背景色和前景色。 系统的默认值为:背景色为黑色;前系统的默认值为:背景色为黑色;前 景色为白色;线型

8、为实线。景色为白色;线型为实线。 18上课材料 setbkcolor(背景色);设置背景色(背景色);设置背景色 如:如: setbkcolor(BLUE);设置背景色为兰色);设置背景色为兰色 setbkcolor(12);设置背景色为);设置背景色为12号色号色 setcolor(画笔色);设置画笔色(画笔色);设置画笔色 如:如: setcolor(YELLOW);设置画笔色为黄色);设置画笔色为黄色 setcolor(5);设置画笔色为);设置画笔色为5号色号色 注意:背景色和画笔色可以是名字或数字。见下表。注意:背景色和画笔色可以是名字或数字。见下表。 19上课材料 符号名数值颜色

9、BLACK BLUE GREEN CYAN RED MAGENTA BROWN LIGHTGRAY DARKGRAY LIGHTBLUE 0 1 2 3 4 5 6 7 8 9 黑色 蓝色 绿色 青色 红色 紫红色 棕色 浅灰色 深灰色 浅蓝色 表表 20上课材料 符号名数值颜色 LIGHTGREEN LIGHTCYAN LIGHTRED LIGHTMAGENTA YELLOW WHITE 10 11 12 13 14 15 浅绿色 浅青色 浅红色 浅紫色 黄色 白色 21上课材料 putpixel(x,y,color);); 在(在(x,y)处以)处以color色画一点色画一点 例:例: p

10、utpixel(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) 处显示处显示ABCF 22上课材料 setfillstyle ( p, color ); 设置填充模式设置填充模式p(取值为(取值为0-12)及填充色)及填充色 color。 floodfil

11、l (x,y,bcolor); 从从(x,y)开始,用开始,用 setfillstyle设置好的填充模式及填充色向四设置好的填充模式及填充色向四 周填充,直到边界(边界色为周填充,直到边界(边界色为bcolor)为)为 止。止。 例例: setcolor(RED); circle(300,200,50); setfillstyle(2,GREEN); floodfill(300,200,RED); 从(从(300,200)开始,按)开始,按setfillstyle设置的模式及颜色开始设置的模式及颜色开始 填充,一直到红色边界填充,一直到红色边界(圆周边界圆周边界)才停止。才停止。 23上课材料

12、 bar(x1,y1,x2,y2); 由由setcolor设置的颜色画一个矩形,设置的颜色画一个矩形,并自并自 动动按按setfillstyle设置的模式及颜色对矩形设置的模式及颜色对矩形 填充填充. 矩形的左上角坐标矩形的左上角坐标(x1,y1),矩形的右下角坐标矩形的右下角坐标(x2,y2) pieslice(x,y,a1,a2,r); 由由setcolor设置的颜色画一个扇形,并设置的颜色画一个扇形,并自自 动动按按setfillstyle设置的模式及颜色对扇形设置的模式及颜色对扇形 填充填充. 起始角度起始角度a1,终止角度,终止角度a2,圆心(,圆心(x,y),半径),半径r 24上

13、课材料 下面是与动画有关的几个函数:下面是与动画有关的几个函数: getimage(x1,y1,x2,y2,p); 将屏幕左上角将屏幕左上角(x1,y1),右下角右下角(x2,y2)的矩形区域内的图象存的矩形区域内的图象存 到指针到指针P所指向的内存区域中。所指向的内存区域中。 putimage(x,y,p,op); 将将p所指向的内存区域的内容在屏幕上显示所指向的内存区域的内容在屏幕上显示,左上角坐标左上角坐标 (x,y)。 op= 0: 预先对屏幕不进行任何操作预先对屏幕不进行任何操作; 1: 预先对屏幕进行预先对屏幕进行“异或异或”操作操作; 2: 预先对屏幕进行预先对屏幕进行“或或”操

14、作操作; 3: 预先对屏幕进行预先对屏幕进行“与与”操作操作; 4: 预先对缓冲区内容进行求预先对缓冲区内容进行求“反反”操作操作; i m a g e s i z e ( x 1 , y 1 , x 2 , y 2 ) 返回保存位图象所需的字节数。返回保存位图象所需的字节数。 25上课材料 例:图形移动例:图形移动 (一个矩形块水平右移一个矩形块水平右移)。 #include”graphics.h” #include”stdlib.h” main( ) void *w; int driver=DETECT,mode,i; initgraph( rectangle(20,150,70,200)

15、; w=malloc(imagesize(20,150,70,200); getimage(20,150,70,200,w); for(i=1;i500;i+) putimage(i+20,150,w ,0); /*清除当前矩形清除当前矩形*/ putimage(i+20 ,150,w ,1); /*在新位置显示矩形在新位置显示矩形*/ free(w); getch(); closegraph( ); 26上课材料 屏幕管理屏幕管理: setviewport(x1,y1,x2,y2,c); 设置视图区。设置视图区。 (x1,y1)为视图区的左上角坐标;为视图区的左上角坐标;(x2,y2)为视图区的右下角坐为视图区的右下角坐 标。标。 c为裁剪状态参数,当为裁剪状态参数,当c=1时,则超出视图区的图形部分被自时,则超出视图区的图形部分被自 动裁剪掉;当动裁剪掉;当c=0时,则对超出视图区的图形不作裁剪处理。时,则对超出视图区的图形不作裁剪处理。 注意:视图区建立以后,所有的图形输出坐标都是相对于当注意:视图区建立以后,所有的图形输出坐标

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论