C语言图形程序设计(已排)课件

上传人:我*** 文档编号:143665949 上传时间:2020-09-01 格式:PPT 页数:21 大小:88KB
返回 下载 相关 举报
C语言图形程序设计(已排)课件_第1页
第1页 / 共21页
C语言图形程序设计(已排)课件_第2页
第2页 / 共21页
C语言图形程序设计(已排)课件_第3页
第3页 / 共21页
C语言图形程序设计(已排)课件_第4页
第4页 / 共21页
C语言图形程序设计(已排)课件_第5页
第5页 / 共21页
点击查看更多>>
资源描述

《C语言图形程序设计(已排)课件》由会员分享,可在线阅读,更多相关《C语言图形程序设计(已排)课件(21页珍藏版)》请在金锄头文库上搜索。

1、1,第2章C语言图形程序设计,预备知识: 1.C程序的基本结构 2.数据类型,运算符 3.流程控制语句 4.函数 5.标准I/O库函数 上机预备: C程序上机操作(TC,BC),2,一、概述,微机显示器的两种工作模式:,文本工作模式,图形工作模式,用户程序,图形库,驱动程序,显示卡,要在屏幕上显示和绘制图形,计算机必须配备图形显示卡,并有相应的驱动程序,用户程序通过Turbo C提供的图形库函数实现图形功能。,3,图形程序与一般C语言程序的差别,#include,/*包含头文件*/,#include,main(),int gdriver=DETECT,gmode;,initgraph(,lin

2、e(0,0,getmaxx(),getmaxy();,getch();,closegraph();,/*初始化图形模式*/,/*画线*/,/*按键*/,/*关闭图形模式*/,4,是一个图形软件包,图形功能极为丰富.,BGI 包括:,graphics.lib 图形库文件(所有图形函数),graphics.h头文件(图形函数的原型说明),*.chr 字符文件,*.BGI 图形设备驱动程序,其中图形函数包括:,6.图形模式下的文本 7.象素操作,1.图形系统管理2.屏幕管理3.绘图函数,4.图形属性控制 5.填充函数,BGI(Borland图形接口)介绍,5,二、图形系统管理,包括:,图形方式初始化

3、,关闭图形方式,参数含义: gdriver :计算机所用图形卡的类型,选择图形卡类型 CGA,EGA, VGA,常用DETECT,表示自动检测,取最高分辨率,1.图形初始化函数 initgraph() 原型: void far initgraph( int far *gdriver, int far *gmode, char far *driver_path),功能:从磁盘上装入一个图形驱动程序来初始化图形系统, 并设置为相应的图形方式。,6,2.关闭图形方式closegraph(),必须与initgraph()配对使用,即在绘图结束时,要关闭BGI系统,释放图形系统所占有的存储区,回到文本方

4、式,gmode: 显示模式 如: VGALO 0 640*200*16 1pages VGAMED 1 640*350*16 2pages VGAHI 2 640*480*16 4pages drive_path: 驱动程序(*.BGI)所在的目录 如: int gdriver,gmode; gdriver = VGA; gmode = VGAHI; initgraph(,7,3.基本的BGI程序,例: graph1.c #include /*包含头文件*/ main( ) int gdriver = DETECT, gmode; initgraph( ,8,三、屏幕管理,(0,0),x,y,

5、pixel,(maxX,maxY),1.图形方式的坐标系统,a. 用象素(pixel)坐标对图形进行定位 b. 屏幕左上角为起始点,右下角为坐标最大值, BGI提供两个函数获取最大值 int maxX = getmaxx(); int maxY = getmaxy(); 象素坐标,9,viewport,2.清屏 cleardevice() 3.设置视图区和清除视图区,x,y,(x1,y1),(x2,y2),视图区: 一个用于绘图的窗口,位置由屏幕绝对坐标定义 一旦建立视图区,则所有图形输出都是相对当前视图区,10,setviewport(x1,y1,x2,y2,c) 裁剪状态c : c=1 裁

6、剪 c=0 不裁剪 clearviewport() 两个象素级的屏幕命令 1.void far putpixel(int x, int y,int color) /把(x,y)处的象素点设置为color定义的颜色 2.unsigned far getpixel(int x,int y); /返回(x,y)处的象素点的颜色 例:putpixel(10,10,red);,四、象素函数,11,五、绘图函数,1.直线类 a.用绝对坐标画线 line(x1,y1,x2,y2); lineto(x,y); b.用相对坐标画线 linerel(dx,dy); c.移位函数moveto(x,y); mover

7、el(dx,dy); 注意: “当前点”的位置。图形总是从当前点开始画,画完之后,当前点的位置可能发生改变,也可能不发生改变。 2. 圆弧类 a. circle( x,y,r);画圆 b. arc( x,y,angs,arge,r);画弧 c. Ellipse( x,y, angs,arge,xr,yr);画椭圆,12,3.多边形类 a. 画矩形 rectangle(x1,y1,x2,y2) b. 画多边折线 drawpoly(int nps,int *pxy) 其中: nps 顶点数 pxy 数组名,该数组存放了nps个顶点的坐标值序列 int points8 = x1,y1,x2,y2,x

8、3,y3,x4,y4; drawpoly(4,points);,(x1,y1),(x2,y2),(x3,y3),(x4,y4),13,六、图形的属性控制,图形属性,前景色(图形线条的颜色),背景色(屏幕的颜色),颜色,线型,:实线,虚线,点线,点划线,用户自定义线型,属性缺省值: 背景-黑色 前景-白色 线型-实线,属性控制函数: 1.setbkcolor(int c) - 设置背景色 2.setcolor(int c) - 设置前景色 c=0,1,.15 共16色,14,七、填充类,填充:在一个封闭区域内画上有颜色的图案,3. setlinestyle(int sty,unsigned pa

9、t,int b) 设置线型 sty: 设置线型 0实线,1 点线,2 点划线,3 虚线 pat: 仅在用户自定义线型时使用,否则取0 b: 线宽 1 1点宽, 3 3点宽,15,BGI提供12种预先定义的填充模式 (见p21表2-3) 1.setfillstyle(int pattern, int color) pattern: 填充模式 color : 填充颜色 2.floodfill(int x,inty,int bcolor) (x,y): 填充区域内任意点的坐标 bcolor: 填充区域的边界颜色 3.其他填充函数: fillellipse(x,y,rx,ry) -画填充实椭圆 sec

10、tor( x,y,angs,ange,rx,ry) -画填充椭圆扇区 fillpoly(nps,*pxy) -画填充封闭多边形 填充模式和颜色先由setfillstyle( )指定图形边线用当前颜色,16,1.BGI字体: bgi*.chr 字体文件 提供以下字体 DEFAUT_FONT 缺省字体 TRIPLEX_FONT三倍字体 SMALL_FONT小号字体 SANS_SERIF_FONT无衬线字体 GOTHIC_FONT哥特字体,bar(left,top,right,bottom) -画填充长方条形图(无边线) bar3d(left,top,right,bottom,depth,topfl

11、ag) -画填充三维条形图,边线用当前线型和颜色, 条形深度depth,topflag布尔值决定是否放一个顶面,八.图形模式下的文本输出,17,b.outtext( char *text) c.outtextxy(x,y,*text)在指定点输出字符串,2. 文本输出 a .settextstyle( int font,int direction, int csize) font: 指定字体,取值04 direction: 文本输出的方向,0-从左到右 1-从上到下 csize: 放大系数,取值110,18,【例 CG2-3.C】 #include /* 包含头文件 */ main( ) in

12、t gdriver=DETECT, gmode; initgraph( /* 等待用户按键 */ closegraph() /* 关闭图形模式 */ notice:getmaxx( ) 返回X轴最大坐标 (639) getmaxy( ) 返回Y轴最大坐标 (479),19,鼠标的常用函数,int init_mouse(int need_mouse,int gd,int gm);,检查鼠标及驱动程序是否安装。,如已安装,函数,同时初始化有关的内部变量,打开鼠标的光标,need_mouse,表示是否一定要安装鼠标,1时,表示一定要安装鼠标,0时,表示不一定要安装鼠标,void move_mouse

13、(int x, int y);,void mouse_on(void);,void mouse_off(void);,void mouse_text_posn(int x, int *y);,void mouse_graph_posn(int x, int *y);,返回1,否则返回0。,20,void mouse_in_box(int graphflag, int left,int top.int right,int bottom);,graphflag=1 表示在图形模式下,graphflag=0 表示在文本模式下,int buttom_release(int b);,int buttom

14、_press(int b);,int buttom_state();,int mouse_trigger(int buttom_press_flag);,void setcur(void *shape),重新定义光标的形状,既可返回键盘值,又可返回鼠标的工作状态,返回鼠标的工作状态,0:各键都没有被按下,1:左键被按下,2:右键被按下,3:左右两个键同时被按下,检查鼠标的按钮是否被按下,检查鼠标的按钮是否备释放,21,作业:,4. 自学图形交互技术初步。,2. 谈谈怎样才能设计一个好的图形程序?,3. 你认为,图形程序设计在你的专业将会有何应用?,1. 读懂程序例2-2,并改变人造卫星几何形状,即修改draw_image函数中内容,将修改程序段及图案形状画出来,

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > PPT模板库 > PPT素材/模板

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号