欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > PPT文档下载  

    C语言图形程序设计基础.ppt

    • 资源ID:5426268       资源大小:574KB        全文页数:97页
    • 资源格式: PPT        下载积分:15金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要15金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    C语言图形程序设计基础.ppt

    第三章 C语言图形程序设计基础,3.1、屏幕设置,我们在屏幕上进行绘制图形,一般要按以下几个步骤执行:(1)把屏幕设置为图形模式;(2)选择背景与显示实体的颜色;(3)计算图形显示坐标;(4)调用绘图语句绘制实体,3.1.1、屏幕显示模式与坐标系,1.文本模式与字符坐标系 在屏幕上只能显示字符的方式称为文本模式。在文本模式下,屏幕上可以显示的最小单位是字符。为了能在指定的位置显示每个字符,C语言提供了字符坐标系。,C语言图形程序设计基础,字符坐标系是以屏幕的左上角为坐标原点,水平方向为 X轴,垂直方向为Y轴,如下图-1所示:,注:字符坐标系的原点为(1,1),水平方向(X轴)分为若干列,垂直方向(Y轴)分为若干行,用一对坐标可以指定屏幕上一个位置。,(8,20),表示字符位于屏幕的第8行第20列,C语言图形程序设计基础,(1)BW40:黑白40列方式。显示25行文本,其中每行40个字符,以黑白两色显示。(2)C40:彩色40列方式。可显示40列25行彩色字符。(3)BW80:黑白80列方式。可显示80列25行字符。(4)C80:彩色80列25行显示方式。(5)MONO:单色80列25行显示方式。(6)C4350:一种特殊的彩色文本方式,适和EGA和VGA两种适配器。若用EGA适配器,显示80列43行;若用VGA适配器,则显示80列50行。,C语言图形程序设计基础,由于显示模式的不同,所显示的字符的列数和行数以及颜色也不相同。C支持以下6种不同的显示方式。,在不同的显示模式下,屏幕所显示的字符数量也不一样。X方向一般为40列或80列,Y方向一般为25行,但EGA和VGA适配器可达43行或50行。在文本模式下,屏幕最多可显示80X50=4000个字符,至少可显示40X25=1000个字符。显示字符越多,每个字符尺寸越小,反之越大。显示模式不同,屏幕坐标的构成也不相同。比如:(1)在BW40方式下,最大坐标位置为(25,40);(2)在C4350方式下,最大坐标位置为(50,80);,注:,C语言图形程序设计基础,2.图形模式与点坐标系 在屏幕上显示图形的方式称为图形模式。在图形模式下,屏幕是由像素点组成的,像素点的多少决定了屏幕的分辨率。分辨率越高,显示图形越细致,质量越好。,如右图所示1.屏幕由许多像素点组成;2.图形的显示效果取决于分辨率的高低;,C语言图形程序设计基础,例如:CGA显示器的分辨率为300X200,TVG显示器的分辨率为1024X768,TVGA比CGA分率高。,图-2 点坐标系,注:点坐标系坐标值的范围取决于所用的适配器/显示分辨率,C语言图形程序设计基础,在图形模式下,屏幕上每个像素的显示位置用点 坐标来描述的。点坐标系是以屏幕左上角为坐标原点(0,0),水平方向为X轴,自左向右;垂直方向为Y轴,自上向下。如下图所示:,由于屏幕的分辨率不同,水平方向和垂直方向的点数也不一样,从而点坐标系的Max x、Max y 数值也不同。在TurboC中,坐标数据可以用两种形式给出:一种是绝对坐标,另一种是相对坐标。(1)绝对坐标的参考点是坐标的原点(0,0),x和y只能取规定范围(0,Max x)和(0,Max y)内的正整数;(2)相对坐标是相对“当前点”的坐标,其坐标的参考点是当前点。在相对坐标中,x和y的取值是相对当前点在x方向和y方向上的增量,故x和y可以为正整数,也可以为负整数。,C语言图形程序设计基础,、图形驱动程序与图形模式,1.图形驱动程序 对于不同的图形显示器,其控制方式各有差异,因此要显示图形就需要先装入相应的图形驱动程序。TurboC 支持以下几种图形驱动程序:,C语言图形程序设计基础,2.图形模式 由于每种图形显示器都有几种不同的图形显示模式,所以要显示图形,不但要先装入相应的驱动程序,而且还要决定所用的显示模式。TurboC 常采用的几种图形驱动程序及相应的模式,表2.2 图形驱动程序及相应的模式,C语言图形程序设计基础,注:1.不同的图形驱动程序有不同的图形模式;2.同一图形驱动程序,也可能会有几种图形模式;,C语言图形程序设计基础,TurboC提供了十分丰富的图形库函数,共有70多个,所有图形函数的原型均在头文件“graphics.h”中定义。所以,在任何使用图形函数的程序中,都要求其头部包含文件graphics.h,即在程序文件的开头写上文件包含命令:#include 同时将集成开发环境option/Linker中的graphics.lib选项设置为”on”。下面我们介绍:图形系统的初始化、图形系统的关闭、图形模式控制。,、图形系统初始化和模式控制,C语言图形程序设计基础,图形系统初始化首先要调用initgraph()函数,它通过从磁盘上装入一个图形驱动程序来初始化图形系统,并将系统设置为图形模式。,1.图形系统的初始化 图形模式是有别于文本模式的一种计算机屏幕显示模式。屏幕一般在默认情况下为80列25行的文本模式,在文本模式下,所有的图形函数均不能操作,因此在使用图形函数绘图之前,必须将屏幕显示适配器设置为一种图形模式,即为图形初始化过程。,C语言图形程序设计基础,功能 将图形驱动软件装入内存,使屏幕显示适配器设置为图形模式,即图形系统初始化;说明 1.gdriver是一个整型值,用来指定要装入的图形驱动程序;该值在头文件graphics.h中定义;2.gmode是一个整型值,用来设置图形显示模式。图形显示模式决定了显示的分辨率和显示的颜色的多少等;3.path是一个字符串,用来指明图形驱动程序所在的路径.,1.若驱动程序就在用户当前目录下,则path可为空字符串,否则应给出具体路径名。一般情况下,TurboC安装在C盘的TC目录中,则该路径为:C:TC,若写在参数中则为“C:TC”;2.前两个参数实际上是整型指针,调用时应加上地址运算符“,注:,initgraph()函数,格式 void far initgraph(int*gdriver,int*gmode,char*path);,C语言图形程序设计基础,(1)已知显示器类型的图形系统初始化。如果已经知道所用图形显示器的种类和要使用的图形模式则图形系统的初始化可用下面程序,例如:,例1 画一实心矩形#includegraphics.h main()int gdriver,gmode;gdriver=CGA;/*设置显示模式CGA*/gmode=CGAC0;/*选用CGA图形模式*/initgraph(/*初始化图形系统*/,C语言图形程序设计基础,bar3d(10,20,50,80,0,0);/*画一条形图*/getch();/*等待按一键结束*/closegraph();/*关闭图形系统,回到文本模式*/程序注释:bar3d()函数 格式:void bar3d(int x1,int y1,int x2,int y2,int depth,int topflag);功能:画一填充的三维条形图;说明:depth为条形的深度;topflag=0则不加顶,否 则在条形图上加一个顶。,C语言图形程序设计基础,格式 void far detectgraph(int*gdriver,int*gmode);功能 在计算机有图形适配器的情况下,确定图形适配器的类型;说明 1.若系统有图形适配器,则把gdriver指的变量设置为适合于适配器的图形驱动程序的代码,并把gmode所指的变量设置为适配器所能支持的最高分辨率。2.若系统无图形适配器,则gdriver所指的变量为-2.,(2)不知显示器类型的图形系统初始化。若在编写程序过程中,不知道当前系统屏幕硬件的类型或编写的程序要用于不同的图形显示器,这就要求所编程序能知当前图形显示器的代码,Turbo C供了一个对图形显示器硬件测试的函数detectgraph()。,detectgraph()函数,C语言图形程序设计基础,例2、测试硬件显示模式和绘制图形#include graphics.h main()int gdriver,gmode;detectgraph(/*等待按一键结束*/,C语言图形程序设计基础,initgraph(,C语言图形程序设计基础,例3自动搜索显示类型和模式并初始化画图#includegraphics.h main(),(3)自动初始化图形系统。一般在程序设计中,可以把对图形显示器的检测和初始化工作放在一起来自动完成,规定Gdriver=DETECT,则initgraph()函数会自动按照系统所配置的图形显示器来确定驱动程序,并把图形模式设置为检测到的驱动程序的最高分辨率,实现图形系统的初始化.,C语言图形程序设计基础,int gdriver=DETECT,gmode;/*自动搜索显示器类型和显示模式*/initgraph(,C语言图形程序设计基础,2.图形系统的关闭 在图形编程中,我们均用函数initgraph()对图形系统进行初始化,即启动图形系统,进入绘图状态,在程序结束时都用函数closegraph()关闭图形系统。,closegraph()函数,格式 void far closegraph();功能 关闭图形模式。说明 函数closegraph()用来关闭图形模式,释放用于保存图形驱动程序和字体所占用的内存空间。当一个程序需要从图形模式下退出,且回到文本模式下继续运行时可调用该函数。,注:所有有关图形显示的程序一定是在initgraph()和closegraph()之间。,C语言图形程序设计基础,3.图形模式的控制 为了对图形模式进行控制,即 1.从图形模式转换成文本模式,或从文本模式转换成图 形模式;2.设置驱动器有效模式或读取当前图形模式和范围。TurboC都提供了相关的函数来实现其控制。,1.getgraphmode()函数格式 void far getgraphmode(void);功能 返回当前图形模式值,其返回值如前表所示。,C语言图形程序设计基础,功能 恢复屏幕在图形初始化前的模式。说明 该函数使initgraph()函数所选定图形模式关闭,返回到调用initgraph()前的状态。注意它与closegraph()函数的区别。,3.setgraphmode()函数格式 void far setgraphmode(int gmode);功能 设置系统图形模式并清屏幕。说明 该函数把当前的图形模式设置为gmode所指定的模式。,C语言图形程序设计基础,2.restorecrtmode()函数格式 void far restorecrtmode(void);,注:通过调用以上函数,可实现使显示器暂时离开图形模式进入文本模式,进行文本输出,然后不经过initgraph()函数再返回图形模式的功能.,4.getmoderange()函数格式 void far getmoderange(int driver,int*lomode,int*himode);功能 获取图形驱动器可使用的模式范围。说明 该函数可以确定由driver所指定图形驱动器能够支持的最低和最高模式,并将这些值放在由lomode和himode所指向的变量中.,C语言图形程序设计基础,例4 图形模式控制函数应用程序#include graphics.h#include stdio.h#include stdlib.hmain()int gdriver,gmode,lo,hi;gdriver=CGA;/*设置显示模式为CGA*/getmoderange(CGA,C语言图形程序设计基础,getch();/*等待按一键结束*/gmode=getgraphmode();/*获得现行图形模式*/restorecrtmode();/*返回图形初始化前的现实模式*/printf(NOW in text mode,press any key back to graphics mode.n);getch();setgraphmode(gmode);/*再回到图形模式*/rectangle(50,30,100,130);/*画一矩形*/getch();closegraph();/*关闭图形系统,回到文本模式*/return(0);,C语言图形程序设计基础,我们在画图时需要运用光标定点,即确定坐标位置。当屏幕处于文本状态时,左上角坐标原点为(1,1);而在图形模式下,以左上角为坐标原点(0,0),水平方向向右为X轴,垂直方向向下为Y轴。由于图形显示器和显示模式的不同,x、y坐标的最大值也就不同,可利用TurboC提供的函数来设定坐标(定点),读取当前光标的位置以及x、y轴的最大值。,3.1.4、图形坐标的设置,moveto()函数格式 void far moveto(int x,int y);功能 把当前光标移到所需的位置(x,y)。,1.定点,C语言图形程序设计基础,说明 该函数把当前窗口中的当前光标位置(CP)移到所需的(x,y)位置。注:不是画线。例如:moveto(100,100)表示把当前光标移到点(100,100)位置上。,moverel()函数格式 void far moverel(int deltax,int deltay);功能 以增量方式移动当前光标。说明 此函数把光标从当前位置(CP)开始,在x,y方向分别移动deltax和 deltay,即由(x,y)(x+deltax,y+deltay).例如:若当前光标在(10,10)位置,执行moverel(10,20)后即移到(20,30)的位置上.,C语言图形程序设计基础,注:moveto(10,20)表示把当前光标移到点(10,20)位置上。,moverel(10,20)后即移到(20,30)的位置上.,C语言图形程序设计基础,例如:语句printf(“cps loc:%d%d”,getx(),gety();显示光标当前位置的x值,2.读取当前光标位置,getx()函数格式 int far getx(void);功能 读取当前光标在x轴的位置。gety()函数格式 int far gety(void);功能 读取当前光标在y轴的位置。,C语言图形程序设计基础,例5、显示系统中图形硬件支持的最大的x,y值程序:#include stdio.h#include conio.h,3.读取x,y轴的最大值,getmaxx()函数格式 int far getmaxx(void);功能 读取当前光标在x轴的最大值。getmaxy()函数格式 int far getmaxy(void);功能 读取当前光标在y轴的最大值。,C语言图形程序设计基础,#include graphics.h void main()int gdriver,gmode;gdriver=CGA;gmode=CGAC0;initgraph(max x,y is 319,199,为什么?,C语言图形程序设计基础,3.2图形颜色设置,在绘图时,往往要求配置一定的颜色加以渲染在绘图系统中颜色分为前景色和背景色。前景色是指构成字符和图形点的颜色,而背景色是指整个显示屏幕的颜色。TurboC提供了多个颜色控制函数来设置前景色、背景色等。,C语言图形程序设计基础,.设置当前背景色,setbkcolor()函数格式 void far setbkcolor(int color);功能 设置当前背景颜色。说明该函数将背景色设置成color 所指定的颜色值。参数color可以用名字,也可以用数字,它们的对应关系在graphics.h 中定义。如下表:,Color取值可以由0到15,C语言图形程序设计基础,2.设置当前画图颜色,setcolor()函数格式 void far setcolor(int color);功能 设置当前画图颜色。说明该函数把当前画图颜色设置成color 所指定的颜色值,即画笔的颜色。参数color可以用名字,也可以用数字,但当缺省时,默认是白色。,C语言图形程序设计基础,3获取颜色信息,getbkcolor()函数格式 int far getbkcolor(void);功能 读取当前背景颜色。说明该函数返回当前背景颜色。,getcolor()函数格式 int far getcolor(void);功能 读取当前画图颜色。说明该函数返回当前画笔颜色。,C语言图形程序设计基础,3.3.画点,画线,putpixel()函数格式 void far putpixel(int x,int y,int color);功能 在点(x,y)处画一规定颜色的点。说明该函数把color 所指定的颜色写到(x,y)处的像素上。例如:语句putpixel(10,20,GREEN)使点(10,20)的像素成为绿色。,getpixel()函数格式 int far getpixel(int x,int y);功能 读取点(x,y)的颜色。说明该函数返回指定点(x,y)位置上的像素颜色值。,C语言图形程序设计基础,#include graphics.h#include conio.hvoid main()int gdriver=DETECT,gmode;int color,i,max;initgraph(,例6、在不同位置画点,C语言图形程序设计基础,line()函数格式 void far line(int x1,int y1,int x2,int y2);功能 指定两点间画一直线。说明 该函数用当前颜色从点(x1,y1)到点(x2,y2)画一条直线,当前位置(CP)不变。,直线类函数,lineto()函数格式 void far lineto(int x,int y);功能 从当前位置到点(x,y)画一条直线。说明 并把当前位置(CP)定位在点(x,y)处。,C语言图形程序设计基础,linerel()函数格式 void far linerel(int deltax,int deltay);功能 从当前位置相对CP位置在X方向增大deltax,在Y方向增大deltay处画一直线。,线的特性设定,我们在用画线函数画线时,其默认值均属于一个像素点宽度的实线。但往往有时需要改变线型和线的宽度,TurboC提供了一些可以改变线型和线宽的函数,具体如下:,C语言图形程序设计基础,setlinestyle()函数格式 void far setlinestyle(int linestyle,unsigned pattern,int width);功能 改变线型和线宽。说明该函数所用的3个参数具体含义为:,1linestyle为整型值,用来定义所画直线类型,如下表所示:,C语言图形程序设计基础,注:表中前4种为系统预定的类型,第5种为用户自定义类型,2pattern为无符号整型数。该参数在需要用户自定义线型时才使用,若是使用前四种系统预定义的线型,则该参数可取0值。,C语言图形程序设计基础,3 width为整型数。主要用来指定所画直线的粗细,以像素为单位,分两种情况,如下表所示:,注:通过上述3个参数的不同组合,可以根据需要画出不同类型、不用粗细的直线。,C语言图形程序设计基础,例如:从点(10,20)到(150,70)画一条红色的点划线可用下面的语句:setcolor(RED);setlinestyle(DASHED_LINE,0,THICK_WIDTH);line(10,20,150,70);注意:当函数setlinestyle的第一个参数为USERBIT_LINE(或4)时,用户可以自己定义直线类型。此时第三个参数意义不变而pattern才变得有意义,直线的类型由pattern来定义,该参数是一个16位二进制码,每一位(bit)表示一个像素。,C语言图形程序设计基础,若某一位置为1时表示直线上相应位置以当前颜色显示;若某一位置为0时,则其对应像素不显示或不改变原来的颜色;例如:1.1111 1111 1111 1111 表示16位全置1,因此可画一条16个像素的点实线。2.1010 1010 1010 1010 表示隔一位置1,因此可画一条16个像素的点虚线。,但:在实际编写程序时,一般要把16位二进制数转换为4位十六进制数,每4位二进制数转换为1位十六进制数。例如1111 1111 1111 1111 FFFF。函数调用方法为:setlinestyle(4,0 xFFFF,1);可定义各种线型。,C语言图形程序设计基础,在图形模式下主要是绘制图形,为了有效地对图形进行操作,TurboC提供了图形屏幕、图形窗口的处理功能,即在图形模式下开设“窗口”(又称为视图区),并对屏幕和图形进行处理。,屏幕窗口操作,.图形屏幕处理,cleardevice()函数格式 void far cleardevice(void);功能 清除整个图形屏幕(但保留底色),并把当前光标位置(CP)重新设置为(0,0)。,C语言图形程序设计基础,setactivepage()函数格式 void far setactivepage(int page);功能 设置图形输出活动页。说明该函数确定接受图形函数所输出的活动页,缺省值为屏幕显示页。保存显示在屏幕上信息的称为页(Page)。例如:语句setactivepage(1)表示设置第页为活动页。,setvisualpage()函数格式 void far setvisualpage(int page);功能 该函数显示Page所指定的可见图形页。例如:语句setvisualpage(1)表示选择显示第页。,C语言图形程序设计基础,#include graphics.h#include conio.hvoid main()int gdriver,gmode;gdriver=VGA;/*设置VGA图形设备器(驱动程序)*/gmode=VGAHI;/*设置VGA图形模式*/initgraph(/*清屏*/,例图形屏幕处理函数应用程序,C语言图形程序设计基础,setactivepage(1);/*设置图形输出活动页为1*/circle(150,130,80);/*画一个圆*/setactivepage(0);/*设置图形活动页为0*/rectangle(40,160,90,180);/*画一个矩形*/getch();setvisualpage(1);/*设置可见图形1页*/getch();setvisualpage(0);/*设置可见图形0页*/getch();closegraph();/*关闭图形系统*/,C语言图形程序设计基础,TurboC提供了图形窗口处理功能,并可以在屏幕某处设置一个图形窗口,以后有关图形的操作均相对于这个窗口的左上角为坐标原点(0,0)。可设置图形窗口之外的区域是不可接触的,这样所有的图形操作只在所指定图形窗口中进行,而不会出现在窗口之外。,2.屏幕窗口操作,clearviewport()函数格式 void far clearviewport(void);功能 清除当前图形窗口,并把当前光标位置(CP)重置为(0,0)。,C语言图形程序设计基础,若clipflag为1,则超出窗口的输出部分自动剪裁掉;若clipflag为0,则超出图形窗口之外的部分不被剪裁掉;,setviewport()函数格式 void far setviewport(int left,int top,int right,int bottom,int clipflag);功能 设置图形窗口。说明该函数建立一个新的图形窗口,窗口大小用左上角坐标(left,top)与右下角坐(right,bottom)来定义。,C语言图形程序设计基础,#include graphics.h#include conio.hvoid main()int gdriver=CGA,gmode=0;/*设置图形模式*/initgraph(/*画直线*/,例8、窗口设置与清除作用,C语言图形程序设计基础,getch();clearviewport();/*清除窗口*/getch();cleardevice();/*清屏*/getch();setviewport(20,15,80,80,1);/*重置窗口,窗口之外裁剪*/rectangle(0,0,60,65);/*画一矩形*/line(0,0,100,150);/*画直线*/getch();closegraph();/*关闭图形系统,回到文本模式*/,C语言图形程序设计基础,为了能按照一定的要求对图形进行填充,通常应规定填充的模式和颜色。图形填充时,使用的是当前模式和颜色;若没有设置填充模式和颜色,则填充时使用缺省值。缺省填充模式为SOLID_FILL,填充颜色为函数返回值(一般为白色)。,填充,1.填充模式和颜色设置,setfillstyle()函数格式 void far setfillstyle(int pattern,int color);功能 设置当前填充模式和填充颜色。,C语言图形程序设计基础,说明该函数用来设置当前填充模式和填充颜色,以便用于填充一个指定的封闭区域。其中参数1pattern用于指定填充模式,取值有12中,如下表:,C语言图形程序设计基础,2 color是用于指定填充用的颜色,取值必须是当前屏幕模式的有效值.,C语言图形程序设计基础,例9、画一个二维和三维条形并填图。#include graphics.h#include conio.hvoid main()int i,gdriver=DETECT,gmode;/*自动搜索显示器类型和显示模式*/initgraph(,C语言图形程序设计基础,setfillstyle(HATCH_FILL,RED);bar3d(300,100,350,200,10,1);setfillstyle(SLASH_FILL,GREEN);bar3d(400,100,450,200,10,1);setfillstyle(CLOSE_DOT_FILL,BLUE);bar3d(500,100,550,200,10,1);getch();closegraph();,C语言图形程序设计基础,C语言图形程序设计基础,setfillpattern()函数格式 void setfillpattern(char*upattern,int color)功能 设置用户自定义填充模式。说明 其中upattern指向用户定义的着色模式数据,即一指向8字节序列的指针。color代表用户定义的添充颜色。例如:我们来看下面这个例子。,若填充模式为用户定义USER_FILL,不能将setfillstyle的参数pattern的值取为12(USER_FILL),而用户必须用个字节定义一个点阵着色模式,再调用函数setfillpattern设置该模式,注:,C语言图形程序设计基础,例10设计如右图所示的填充图案。#include main()int gd=DETECT,gm;char p8=0 x00,0 x10,0 x20,0 x40,0 x7e,0 x40,0 x20,0 x10;initgraph(,注:每个字节与该模式下的8个像素相对应。一旦某模式字节中的一位被置为1,则对应的像素被画出来。,C语言图形程序设计基础,例11、演示预定义的种着色模式。#include main()int gd=DETECT,gm,h,w;initgraph(,C语言图形程序设计基础,运行结果效果图,C语言图形程序设计基础,2.漫延填充,floodfill()函数格式 void far floodfill(int x,int y,border);功能 填充一块有界的封闭区域。说明该函数用来填充一块有界的封闭区域,(x,y)是待填充的起点,border指定填充区域边界所使用颜色。1若起点在封闭区域内,则区域内部被填充;2若起点在封闭区域外,则区域外部被填充;注:用floodfill填充时,使用的是当前填充模式的填充颜色,也可以通过setfillstyle来改变设置。,C语言图形程序设计基础,例如下面三种情况:,.(x,y),填充情况(二),.(x,y),setfillstyle(SOLID_FILL,4);circle(100,100,80);,填充情况(三),circle(100,100,80);setfillstyle(SOLID_FILL,4);floodfill(100,100,0);,circle(100,100,80);setfillstyle(SOLID_FILL,4);floodfill(20,20,0);,填充情况(一),注意:上面三种填充程序的区别,C语言图形程序设计基础,例2.15 填充一个封闭圆。#include graphics.h#include conio.hvoid main()int i,gdriver=DETECT,gmode;/*自动搜索显示器类型和显示模式*/initgraph(/*定画笔色(红)*/,C语言图形程序设计基础,circle(100,100,30);/*画一个圆*/setcolor(2);/*定画笔色(绿)*/circle(200,200,80);/*画一个圆*/setfillstyle(SLASH_FILL,14);/*定填充模式和填充色*/floodfill(100,100,4);/*填充一个封闭圆*/getch();closegraph();,执行结果,C语言图形程序设计基础,为了在图形模式下对文本进行操作,Turbo C提供了对图形进行字符串输出,以及对输出字符的字型大小和方位进行控制等有关的文本输出函数。,图形模式下文本处理,2.4.1 文本输出函数,outtext()函数格式 void far outtext(char*textstring);功能 把一字符串输出至屏幕当前光标位置。说明 该函数在当前位置上输出一字符串。参数textstring 是一个文本字符串。注:若当前方向是水平的,则光标位置移动量为该字符串的 长度,否则光标位置不变。,C语言图形程序设计基础,例如:语句outtext(“this is a string”);将在当前位置输出字符串。,outtextxy()函数格式 void far outtextxy(int x,int y,char*textstring);功能 在屏幕指定位置上输出一字符串。说明该函数在指定位置(x,y)处输出字符串textstring。例如:语句outtextxy(70,100,“this is a string”);将在点(70,100)处输出字符串this is a string。,sprintf()函数格式 sprintf(*str,*format,variable_list);,C语言图形程序设计基础,功能 把要输出信息写入由str所指向的字符串中。说明由于前面两个函数只能输出字符串,若需要在图形模式下输出数值或其他类型数据,利用sprintf()函数就可以解决这个问题。其中str是字符串,format是格式字符串,variable_list是变量列表.例如:char str80;sprintf(str,”%s%d%c”,”one”,2,3);执行后,字符串的内容为one23.注:1.sprintf的原型在头文件stdio中,因此它并不是一个图形函数,只是一个格式化输出函数,它的作用是产生含有多种类型数据的字符串。,C语言图形程序设计基础,2.在图形模式下并不直接使用该函数,而是使用由它产生的结果,即字符串值,这个字符串中可以含有多种类型数据,有了这样的字符串,再用outtext和outtextxy输出其内容就能满足各种需要.例 2.16画直线,并标注起始点坐标。#include stdio.h#include graphics.h#include conio.h void main()char msg80,str80;int i,gdriver=DETECT,gmode;initgraph(,C语言图形程序设计基础,moveto(20,30);sprintf(msg,%d,%d,getx(),gety();outtextxy(20,30,msg);linerel(100,100);sprintf(msg,%d,%d,getx(),gety();outtext(msg);sprintf(str,%s%s%s%c%s,who,=,I,3,you);outtextxy(200,200,str);getch();closegraph();,注:“%s%s%s%c%s”改为“%s,%s,%s,%c,%s”结果会如何?,C语言图形程序设计基础,1.设置输出文本字体、方向与字符大小 在图形模式下,提供了两种向屏幕上写字符的方法:1位映像字符,也称点阵字符。位映像字符由8X8像素组成,每一位对应一个像素,如果某一位为1,则相应的像素将以当前颜色显示;若为0则相应的像素被置为背景色.例如下图为位映像字符A的展开图。,输出文本的设置,注:位映像字符是缺省方式,即在一般情况下,用C语言编写的程序将自动建立位映像字符。用C语言函数向屏幕输出文本时,都以位映像字符显示。,C语言图形程序设计基础,2笔画字符,也称矢量字符。笔画字符不是以位模式存储的,每个字符被定义成一系列的线段或笔画组合。笔画字符可以灵活地改变其大小,而且不会降低其分辨率。C语言提供了4种不同笔画字体,即小号字体、三倍字体、无衬线字体和黑体。每种笔画字体都放在独立字体文件中,如下表所示:,注:使用笔画字体,必须装入字体文件,可通过settextstyle()函数来实现。,C语言图形程序设计基础,settextstyle()函数格式 settextstyle(int font,int diretion,int charsize);功能 设置当前输出文本字体、显示方向和字符大小。说明 函数共有3个参数,其含义如下:1:font是一个整型数,用来指定所用的字体,取值如下表。,C语言图形程序设计基础,2direction 是一个整型数,用来指定文本输出方向。其取值如下表:,3charsize 是一个整型数,该参数实际上是一个因子,它表示8X8点阵字符的放大倍数,即影响点阵字符,也影响笔画字符(注:settextstyle()函数来规定字符大小,但对笔画字符,字体只能在x,y方向上以相同倍数放大)。其取值如下表:,C语言图形程序设计基础,参数charsize的取值,C语言图形程序设计基础,例2.17 画AAA,并放大。#include graphics.h#include conio.hvoid main()char str80;int i,gdriver=DETECT,gmode;initgraph(,C语言图形程序设计基础,settextstyle(TRIPLEX_FONT,HORIZ_DIR,7);setcolor(2);outtextxy(30,30,AAAA);settextstyle(TRIPLEX_FONT,HORIZ_DIR,12);setcolor(3);outtextxy(120,120,AAAA);settextstyle(TRIPLEX_FONT,HORIZ_DIR,1);sprintf(str,%s,-printf:AAAA-hugang2004.4.8);outtextxy(300,300,str);getch();closegraph();,C语言图形程序设计基础,2.设置文本对齐方式,settextjustify()函数格式 void far settextjustify(int horiz,int vert);功能 设置文本输出在水平和垂直方向的输出方式。说明参数horiz和vert是整型数,其取值如下表:,C语言图形程序设计基础,注:其中参数horiz 确定水平方向的对齐位置;参数vert确定垂直方向的对齐位置。例如:settextjustify(LEFT_TEXT,TOP_TEXT);所确定位置在文本字符串的左上角。在这以后,当用函数outtextxy()输出字符串时,这个位置就对准函数中的(x,y)位置,如下图所示:,C语言图形程序

    注意事项

    本文(C语言图形程序设计基础.ppt)为本站会员(牧羊曲112)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开