版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
图形程序设计第1页,共65页,2023年,2月20日,星期四TurboC为用户提供了一个功能很强的画图软件库,它又称为Borland图形接口(BGI),它包括图形库文件(graphics.lib),图形头文件(graphics.h)和许多图形显示器(图形终端)的驱动程序(如CGA.BGI、EGAVGA.BGI等)。及一些字符集的字体驱动程序(如goth.chr黑体字符集等)。编写图形程序时用到的一些图形库函数均在graphics.lib中,执行这些函数时,所需的有关信息(如宏定义等)则包含在graphics.h头文件中。第2页,共65页,2023年,2月20日,星期四图形显示的坐标显示器的屏幕如同一张坐标纸,在其上显示图形时,图形上任一点的位置均有确定的坐标,即可用x,y坐标值来表示。第3页,共65页,2023年,2月20日,星期四图形显示的坐标--象素显示器显示的图形均由一些圆点组成(其亮度、颜色不同),这些点称为象素(或称象点),它们是组成图形的最小单位。象素的大小可以通过设置不同的显示方式来改变。象素在屏幕上的位置则可由其所在的x,y坐标来决定。第4页,共65页,2023年,2月20日,星期四图形显示器与适配器计算机中要显示的字符和图形均以数字形式存储在存储器中,而显示器接收的应是模拟信号。常用的显示器有三条模拟红绿兰颜色的模拟信号输入线,每条输入线的电压决定了颜色的亮度,只要能产生出可区分的电压来,它们不同的组合,便可使显示器显示出不同的颜色来。第5页,共65页,2023年,2月20日,星期四图形显示器与适配器插在PC微机插槽中的图形卡(即适配器),其作用就是将要显示的字符和图形以数字形式存储在卡上的视频存储器VRAM中,再将其变成视频模拟信号送往相应适配的显示器进行显示,也即适配器在计算机主机和显示器之间起到了信息转换和视频发送作用。由于计算机配有的显示器种类不同,因而适配器种类不同第6页,共65页,2023年,2月20日,星期四常用的几种适配器1.单色显示适配器(MDA);仅显示一种颜色,仅支持80×25行的字符显示。2.彩色图形适配器(CGA);这是PC/XT等微机配用的显示器图形卡,它可以产生单色或彩色字符和图形。3.增强型图形适配器〔EGA);除支持CGA的四种显示模式外,还增加了分辨率为640×200的16色显示方式,(EGAHI),也可显示16色。第7页,共65页,2023年,2月20日,星期四常用的几种适配器4.视频图形阵列适配器(VGA);它是目前流行的PC微机显示标准,它支持CGA,EGA的所有显示方式,但自己还有640×480的高分辨显示方式(VGAHI)、640×350的中分辨显示方式(VGAMED)和640×200的低分辨显示方式(VGALO),它们均可有16种显示颜色可供选择。第8页,共65页,2023年,2月20日,星期四常用的几种适配器5.TVGA;它是目前市面上最流行的PC486,586微机配的显示器标准,在图形方式下,它可有640×400,640×480,800×600,1024×768及768×1024等分辨率,可选颜色达256种,在文本方式下,可支持25、30、43、60行,132列的字符显示。它也兼容CGA、EGA、VGA的显示方式,由于TurboC早于该产品出现,因而上述增强了的显示方式均不支持,但对于高级编程者,可通过对TVGA各专用寄存器直接编程来实现这些功能。第9页,共65页,2023年,2月20日,星期四常用的几种适配器6.PVGA;它是paradiseVGA的缩写,它由WesternDigital公司生产,有的叫SVGA(香港Surperking公司生产的386微机上使用)。还有称为EVGA(ExtendedVGA),它们和PVGA在软硬件上均是兼容的。PVGA完全兼容CGA、EGA、VGA的所有工作方式,它还有自己一些特有的工作模式,与TVGA类似。7.XGA;XGA是IBM公司新推出的一种增强性图形适配器,它是VGA的换代产品,具有更高的分辨率和性能,它有和CGA,EGA,VGA全兼容的工作方式,但显示速度却比VGA快一倍。第10页,共65页,2023年,2月20日,星期四常用的几种适配器8.CVGA;这是国内研制的带有显示汉字功能的VGA图形适配器,它带有汉字字库,该适配器提供了和CGA、EGA、VGA全兼容的工作方式,还提供了在文本工作方式下的高分辨图形显示功能。在它的ROMBIOS中提供了INT10H的功能号为30H-38H的功能调用,因而提供了方便的汉字处理功能。第11页,共65页,2023年,2月20日,星期四显示器工作方式文本方式或称字符显示方式图形显示方式它们的主要差别是显示存储器(VRAM)中存的信息不同。字符方式时,VRAM存放要显示字符的ASCII码,用它作为地址,取出字符发生器ROM(固定存储器)中存放的相应字符的图象(又称字模),变成视频信号在显示器屏上进行显示。图形方式时,则要显示的图形的图象直接存在VRAM中,VRAM中某地址单元存放的数就表示了相应屏幕上某行和列上的象素及颜色。第12页,共65页,2023年,2月20日,星期四TurboC支持的适配器和图形模式1.MCGA(多色图形阵列);它和VGA是PS/2系列微机的主要适配器,MCGA功能上同CGA相似,它和CGA是部分兼容的,但有些功能又和VGA类似,可有640×480的二色模式。2.IBM8514;该适配器可插入PS/2微机中,它有较强的图形功能,最高分辨率可达1024×768,可有256种颜色。3.HERC;大力神公司生产的一种单色适配器,是PC系列微机早期的第三种显示标准(其它两种MDA和CGA),它采用720×348高分辨单色显示模式。4.EGAMONO;EGA单色适配器,它只有一种640×350单色显示模式。第13页,共65页,2023年,2月20日,星期四图形系统的初始化即要用什么类型的图形显示适配器的驱动程序,采用什么模式的图形方式(也就是相应程序的入口地址),适配器驱动程序的寻找路径名。注意:所用系统的显示适配器一定要支持所选用的显示模式,否则将出错。第14页,共65页,2023年,2月20日,星期四图形系统的初始化
图形系统的初始化函数voidfarinitgraph(intfar*driver,intfar*mode,charfar*path_for_driver);其中gdriver和gmode分别表示图形驱动器和模式,path是指图形驱动程序所在的目录路径。图形驱动程序由TurboC出版商提供,文件扩展名为.BGI。根据不同的图形适配器有不同的图形驱动程序。例如对于EGA、VGA图形适配器的图形驱动程序为EGAVGA.BGI。
第15页,共65页,2023年,2月20日,星期四图形系统的初始化
图形系统检测函数voidfardetectgraph(intfar*graphdriver,intfar*graphmode);
有时编程者并不知道所用的图形显示器适配器种类,而且我们为了将编写的程序可以用于不同图形驱动器,增强程序的通用性,我们通常不指定图形显示器适配器种类,而使用TurboC提供了一个自动检测显示器硬件的函数,其中gdriver和gmode意义同上。
第16页,共65页,2023年,2月20日,星期四例1:自动进行硬件测试后进行图形初始化
#include"graphics.h"main(){intgdriver,gmode;detectgraph(&gdriver,&gmode);/*自动测试硬件*/printf("driveris%d,modeis%d\n",gdriver,gmode);/*输出结果*/getch();initgraph(&gdriver,&gmode,"");/*根据测试结果初始化图形*/circle(320,240,50);circle(320,240,80);circle(320,240,110);getch();closegraph();}
第17页,共65页,2023年,2月20日,星期四上例程序中先对图形显示器自动检测,然后再用图形初始化函数进行初始化设置。其中,closegraph()为退出图形状态的函数,其调用格式为:voidfarclosegraph(void);调用该函数后可退出图形状态而进入文本方式,并释放用于保存图形驱动程序和字体的系统内存。同时TurboC提供了一种更简单的初始化图形的方法,即用gdriver=DETECT语句后再跟initgraph()函数就行了。比如,上例可改为例2的样子。
第18页,共65页,2023年,2月20日,星期四例2:自动进行硬件测试后进行图形初始化
#include"graphics.h"main(){intgdriver=DETECT,gmode;initgraph(&gdriver,&gmode,"");circle(320,240,50);circle(320,240,80);circle(320,240,110);getch();closegraph();}第19页,共65页,2023年,2月20日,星期四屏幕颜色的设置对于图形模式的屏幕颜色设置,同样分为背景色的设置和前景色的设置。在Turboc中分别使用以下两个函数:
voidfarsetbkcolor(intcolor);设置背景色
voidfarsetcolor(intcolor);设置作图色其中color为图形方式下颜色的规定数值,符号常数及数值如下所示。第20页,共65页,2023年,2月20日,星期四屏幕颜色的设置符号常数数值含义字符或背景BLACK0黑两者均可BLUE1兰两者均可GREEN2绿两者均可CYAN3青两者均可RED4红两者均可MAGENTA5洋红两者均可BROWN6棕两者均可LIGHTGRAY7淡灰两者均可DARKGRAY8深灰只用于字符LIGHTBLUE9淡兰只用于字符LIGHTGREEN10淡绿只用于字符LIGHTCYAN11淡青只用于字符LIGHTRED12淡红只用于字符LIGHTMAGENTA13淡洋红只用于字符YELLOW14黄只用于字符WHITE15白只用于字符BLINK128闪烁只用于字符第21页,共65页,2023年,2月20日,星期四清除图形屏幕内容使用清屏函数,其调用格式如下
voidfarcleardevice(void);
有关颜色设置、清屏函数的使用请看例3。
例3:
#include"stdio.h"#include"graphics.h"main(){intgdriver,gmode,i,j;gdriver=DETECT;initgraph(&gdriver,&gmode,"");/*图形初始化*/setbkcolor(0);/*设置图形背景*/cleardevice();for(i=0;i<=15;i++){setcolor(i);/*设置不同作图色*/circle(319,239,20+i*15);/*画半径不同的圆*/delay(3000);/*延迟3000毫秒*/}
第22页,共65页,2023年,2月20日,星期四for(i=0;i<=15;i++){setbkcolor(i);/*设置不同背景色*/cleardevice();for(j=0;j<=15;j++){setcolor(j);/*设置不同作图色*/circle(319,239,20+j*15);/*画半径不同的圆*/delay(3000);}}getch();closegraph();}第23页,共65页,2023年,2月20日,星期四另外,TURBOC也提供了几个获得现行颜色设置情况的函数。
intfargetbkcolor(void);返回现行背景颜色值。
intfargetcolor(void);返回现行作图颜色值。
intfargetmaxcolor(void);返回最高可用的颜色值。基本图形函数基本图形函数包括画点,线以及其它一些基本图形的函数。第24页,共65页,2023年,2月20日,星期四画点1.画点函数voidfarputpixel(intx,inty,intcolor);该函数表示有指定的象元画一个按color所确定颜色的点。对于颜色color的值可从上表中获得而对x,y是指图形象元的坐标。在图形模式下,是按象元来定义坐标的。对VGA适配器,它的最高分辨率为640x480,其中640为整个屏幕从左到右所有象元的个数,480为整个屏幕从上到下所有象元的个数。屏幕的左上角坐标为(0,0),右下角坐标为(639,479),水平方向从左到右为x轴正向,垂直方向从上到下为y轴正向。TURBOC的图形函数都是相对于图形屏幕坐标,即象元来说的。关于点的另外一个函数是:intfargetpixel(intx,inty);它获得当前点(x,y)的颜色值。
第25页,共65页,2023年,2月20日,星期四画点
2.有关坐标位置的函数
intfargetmaxx(void);返回x轴的最大值。
intfargetmaxy(void);返回y轴的最大值。
intfargetx(void);返回游标在x轴的位置。
voidfargety(void);返回游标有y轴的位置。
voidfarmoveto(intx,inty);移动游标到(x,y)点,不是画点,在移动过程中亦画点。
voidfarmoverel(intdx,intdy);移动游标从现行位置(x,y)移动到(x+dx,y+dy)的位置,移动过程中不画点。第26页,共65页,2023年,2月20日,星期四画线与线型设定1.画线函数
TURBOC提供了一系列画线函数,下面分别叙述:
voidfarline(intx0,inty0,intx1,inty1);画一条从点(x0,y0)到(x1,y1)的直线。
voidfarlineto(intx,inty);画一作从现行游标到点(x,y)的直线。
voidfarlinerel(intdx,intdy);画一条从现行游标(x,y)到按相对增量确定的点(x+dx,y+dy)的直线。第27页,共65页,2023年,2月20日,星期四画线与线型设定voidfarcircle(intx,inty,intradius);以(x,y)为圆心,radius为半径,画一个圆。
voidfararc(intx,inty,intstangle,intendangle,intradius);以(x,y)为圆心,radius为半径,从stangle开始到endangle结束(用度表示)画一段圆弧线。在TURBOC中规定x轴正向为0度,逆时针方向旋转一周,依次为90,180,270和360度(其它有关函数也按此规定不再重述)。第28页,共65页,2023年,2月20日,星期四画线与线型设定voidellipse(intx,inty,intstangle,intendangle,intxradius,intyradius);以(x,y)为中心,xradius,yradius为x轴和y轴半径,从角stangle开始到endangle结束画一段椭圆线,当stangle=0,endangle=360时,画出一个完整的椭圆。第29页,共65页,2023年,2月20日,星期四画线与线型设定voidfarrectangle(intx1,inty1,intx2,inty2);以(x1,y1)为左上角,(x2,y2)为右下角画一个矩形框。
voidfardrawpoly(intnumpoints,intfar*polypoints);画一个顶点数为numpoints,各顶点坐标由polypoints给出的多边形。polypoints整型数组必须至少有2倍顶点数个无素。每一个顶点的坐标都定义为x,y,并且x在前。值得注意的是当画一个封闭的多边形时,numpoints的值取实际多边形的顶点数加一,并且数组polypoints中第一个和最后一个点的坐标相同。第30页,共65页,2023年,2月20日,星期四画线与线型设定2.设定线型函数在没有对线的特性进行设定之前,TURBOC用其默认值,即一点宽的实线,但TURBOC也提供了可以改变线型的函数。线型包括:宽度和形状。其中宽度只有两种选择:一点宽和三点宽。而线的形状则有五种。下面介绍有关线型的设置函数。第31页,共65页,2023年,2月20日,星期四画线与线型设定voidfarsetlinestyle(intlinestyle,unsignedupattern,intthickness);该函数用来设置线的有关信息,其中linestyle是线形状的规定,见下表:有关线的形状(linestyle)━━━━━━━━━━━━━━━━━━━━━━━━━符号常数数值含义─────────────────────────SOLID_LINE0实线DOTTED_LINE1点线CENTER_LINE2中心线DASHED_LINE3点画线USERBIT_LINE4用户定义线━━━━━━━━━━━━━━━━━━━━━━━━━第32页,共65页,2023年,2月20日,星期四画线与线型设定有关线宽(thickness)thickness是线的宽度,见下表。━━━━━━━━━━━━━━━━━━━━━符号常数数值含义─────────────────────NORM_WIDTH1一点宽THIC_WIDTH3三点宽━━━━━━━━━━━━━━━━━━━━━第33页,共65页,2023年,2月20日,星期四画线与线型设定对于upattern,只有linestyle选USERBIT_LINE时才有意义(选其它线型,uppattern取0即可)。此进uppattern的16位二进制数的每一位代表一个象元,如果那位为1,则该象元打开,否则该象元关闭。voidfargetlinesettings(structlinesettingstypefar*lineinfo);该函数将有关线的信息存放到由lineinfo指向的结构中,表中linesettingstype的结构如下:
structlinesettingstype
{
intlinestyle;
unsignedupattern;
intthickness;
}第34页,共65页,2023年,2月20日,星期四画线与线型设定例如下面两句程序可以读出当前线的特性structlinesettingstype*info;getlinesettings(info);voidfarsetwritemode(intmode);该函数规定画线的方式。如果mode=0,则表示画线时将所画位置的原来信息覆盖了(这是TURBOC的默认方式)。如果mode=1,则表示画线时用现在特性的线与所画之处原有的线进行异或(XOR)操作,实际上画出的线是原有线与现在规定的线进行异或后的结果。因此,当线的特性不变,进行两次画线操作相当于没有画线。
第35页,共65页,2023年,2月20日,星期四封闭图形的填充1.先画轮廓再填充
TURBOC提供了一些先画出基本图形轮廓,再按规定图模和颜色填充整个封闭图形的函数。在没有改变填充方式时,TURBOC以默认方式填充。下面介绍这些函数。voidfarbar(intx1,inty1,intx2,inty2);确定一个以(x1,y1)为左上角,(x2,y2)为右下角的矩形窗口,再按规定图模和颜色填充。说明:此函数不画出边框,所以填充色为边框。voidfarbar3d(intx1,inty1,intx2,inty2,intdepthinttopflag);当topflag为非0时,画出一个三维的长方体。当topflag为0时,三维图形不封顶,实际上很少这样使用。说明:bar3d()函数中,长方体第三维的方向不随任何参数而变,即始终为45度的方向。
第36页,共65页,2023年,2月20日,星期四封闭图形的填充voidfarpieslice(intx,inty,intstangle,intendangle,intradius);画一个以(x,y)为圆心,radius为半径,stangle为起始角度,endangle为终止角度的扇形,再按规定方式填充。当stangle=0,endangle=360时变成一个实心圆,并在圆内从圆点沿X轴正向画一条半径。
voidfarsector(intx,inty,intstanle,intendangle,intxradius,intyradius);画一个以(x,y)为圆心分别以xradius,yradius为x轴和y轴半径,stangle为起始角,endangle为终止角的椭圆扇形,再按规定方式填充。第37页,共65页,2023年,2月20日,星期四封闭图形的填充2.设定填充方式TURBOC有四个与填充方式有关的函数。下面分别介绍:
voidfarsetfillstyle(intpattern,intcolor);color的值是当前屏幕图形模式时颜色的有效值。pattern的值及与其等价的符号常数如下表所示。关于填充式样pattern的规定:第38页,共65页,2023年,2月20日,星期四封闭图形的填充━━━━━━━━━━━━━━━━━━━━━━━━━━━符号常数数值含义───────────────────────────EMPTY_FILL0以背景颜色填充SOLID_FILL1以实填充LINE_FILL2以直线填充LTSLASH_FILL3以斜线填充(阴影线)SLASH_FILL4以粗斜线填充(粗阴影线)BKSLASH_FILL5以粗反斜线填充(粗阴影线)LTBKSLASH_FILL6以反斜线填充(阴影线)HATCH_FILL7以直方网格填充XHATCH_FILL8以斜网格填充INTTERLEAVE_FILL9以间隔点填充WIDE_DOT_FILL10以稀疏点填充CLOSE_DOS_FILL11以密集点填充USER_FILL12以用户定义式样填充━━━━━━━━━━━━━━━━━━━━━━━━━━━第39页,共65页,2023年,2月20日,星期四封闭图形的填充除USER_FILL(用户定义填充式样)以外,其它填充式样均可由setfillstyle()函数设置。当选用USER_FILL时,该函数对填充图模和颜色不作任何改变。之所以定义USER_FILL主要因为在获得有关填充信息时用到此项。voidfarsetfillpattern(char*upattern,intcolor);设置用户定义的填充图模的颜色以供对封闭图形填充。其中upattern是一个指向8个字节的指针。这8个字节定义了8x8点阵的图形。每个字节的8位二进制数表示水平8点,8个字节表示8行,然后以此为模型向个封闭区域填充。第40页,共65页,2023年,2月20日,星期四封闭图形的填充voidfargetfillpattern(char*upattern);该函数将用户定义的填充图模存入upattern指针指向的内存区域。
voidfargetfillsetings(structfillsettingstypefar*fillinfo);获得现行图模的颜色并将存入结构指针变量fillinfo中。其中fillsettingstype结构定义如下:structfillsettingstype{intpattern;/*现行填充模式*/intcolor;/*现行填充模式*/};
第41页,共65页,2023年,2月20日,星期四封闭图形的填充3.任意封闭图形的填充截止目前为止,我们只能对一些特定形状的封闭图形进行填充,但还不能对任意封闭图形进行填充。为此,TURBOC提供了一个可对任意封闭图形填充的函数,其调用格式如下:voidfarfloodfill(intx,inty,intborder);其中:x,y为封闭图形内的任意一点。border为边界的颜色,也就是封闭图形轮廓的颜色。调用了该函数后,将用规定的颜色和图模填满整个封闭图形。第42页,共65页,2023年,2月20日,星期四封闭图形的填充注意:
1.如果x或y取在边界上,则不进行填充。
2.如果不是封闭图形则填充会从没有封闭的地方溢出去,填满其它地方。
3.如果x或y在图形外面,则填充封闭图形外的屏幕区域。
4.由border指定的颜色值必须与图形轮廓的颜色值相同,但填充色可选任意颜色。下例是有关floodfill()函数的用法,该程序填充了bar3d()所画长方体中其它两个未填充的面。第43页,共65页,2023年,2月20日,星期四有关图形窗口和图形屏幕操作函数
1、图形窗口操作象文本方式下可以设定屏幕窗口一样,图形方式下也可以在屏幕上某一区域设定窗口,只是设定的为图形窗口而已,其后的有关图形操作都将以这个窗口的左上角(0,0)作为坐标原点,而且可为通过设置使窗口之外的区域为不可接触。这样,所有的图形操作就被限定在窗口内进行。第44页,共65页,2023年,2月20日,星期四有关图形窗口和图形屏幕操作函数
voidfarsetviewport(intxl,intyl,intx2,inty2,intclipflag);设定一个以(xl,yl)象元点为左上角,(x2,y2)象元为右下角的图形窗口,其中x1,y1,x2,y2是相对于整个屏幕的坐标。若clipflag为非0,则设定的图形以外部分不可接触,若clipflag为0,则图形窗口以外可以接触。
voidfarclearviewport(void);清除现行图形窗口的内容。
voidfargetviewsettings(structviewporttypefar*viewport);获得关于现行窗口的信息,并将其存于viewporttype定义的结构变量viewport中,其中viewporttype的结构说明如下:第45页,共65页,2023年,2月20日,星期四有关图形窗口和图形屏幕操作函数
structviewporttype{intleft,top,right,bottom;intcliplag;};第46页,共65页,2023年,2月20日,星期四有关图形窗口和图形屏幕操作函数注明:①窗口颜色的设置与前面讲过的屏幕颜色设置相同,但屏幕背景色和窗口背景色只能是一种颜色,如果窗口背景色改变,整个屏幕的背景色也将改变这与文本窗口不同。②可以在同一个屏幕上设置多个窗口,但只能有一个现行窗口工作,要对其它窗口操作,通过将定义那个窗口的setviewport()函数再用一次即可。③前面讲过图形屏幕操作的函数均适合于对窗口的操作。
第47页,共65页,2023年,2月20日,星期四有关图形窗口和图形屏幕操作函数2、屏幕操作除了清屏函数以外,关于屏幕操作还有以下函数:
voidfarsetactivepage(intpagenum);voidfarsetvisualpage(intpagenum);这两个函数只用于EGA,VGA以及HERCULES图形适配器。setctivepage()函数是为图形输出选择激活页。所谓激活页是指后续图形的输出被写到函数选定的pagenum页面,该页面并不一定可见。setvisualpage()函数才使pagenum所指定的页面变成可见页。页面从0开始(TurboC默认页)。如果先用setactivepage()函数在不同页面上画出一幅幅图像,再用setvisualpage()函数交替显示,就可以实现一些动画的效果。第48页,共65页,2023年,2月20日,星期四有关图形窗口和图形屏幕操作函数voidfargetimage(intxl,intyl,intx2,inty2,voidfar*mapbuf);voidfarputimge(intx,int,y,void*mapbuf,intop);unsinedfarimagesize(intxl,intyl,intx2,inty2);这三个函数用于将屏幕上的图像复制到内存,然后再将内存中的图像送回到屏幕上。首先通过函数imagesize()测试要保存左上角为(xl,yl),右上角为(x2,y2)的图形屏幕区域内的全部内容需多少个字节,然后再给mapbuf分配一个所测数字节内存空间的指针。通过调用getimage()函数就可将该区域内的图像保存在内存中,需要时可用putimage()函数将该图像输出到左上角为点(x,y)的位置上,其中getimage()函数中的参数op规定如何释放内存中图像。关于这个参数的定义参见下表:第49页,共65页,2023年,2月20日,星期四有关图形窗口和图形屏幕操作函数putimage()函数中的op值━━━━━━━━━━━━━━━━━━━━━━━━━━符号常数数值含义──────────────────────────COPY_PUT0复制XOR_PUT1与屏幕图像异或的复制OR_PUT2与屏幕图像或后复制AND_PUT3与屏幕图像与后复制NOT_PUT4复制反像的图形━━━━━━━━━━━━━━━━━━━━━━━━━━对于imagesize()函数,只能返回字节数小于64K字节的图像区域,否则将会出错,出错时返回-1。这在图像动画处理、菜单设计技巧中非常有用。第50页,共65页,2023年,2月20日,星期四图形模式下的文本输出在图形模式下,只能用标准输出函数,如printf(),puts(),putchar()函数输出文本到屏幕。除此之外,其它输出函数(如窗口输出函数)不能使用,即是可以输出的标准函数,也只以前景色为白色,按80列,25行的文本方式输出。
TurboC2.0也提供了一些专门用于在图形显示模式下的文本输出函数。下面将分别进行介绍。第51页,共65页,2023年,2月20日,星期四图形模式下的文本输出1.文本输出函数voidfarouttext(charfar*textstring);该函数输出字符串指针textstring所指的文本在现行位置。voidfarouttextxy(intx,inty,charfar*textstring);该函数输出字符串指针textstring所指的文本在规定的(x,y)位置。其中x和y为象元坐标。第52页,共65页,2023年,2月20日,星期四图形模式下的文本输出说明:这两个函数都是输出字符串,但经常会遇到输出数值或其它类型的数据,此时就必须使用格式化输出函数sprintf()。sprintf()函数的调用格式为:intsprintf(char*str,char*format,variable-list);它与printf()函数不同之处是将按格式化规定的内容写入str指向的字符串中,返回值等于写入的字符个数。例如:
'C110F1sprintf(s,"yourTOEFLscoreis%d",mark);这里s应是字符串指针或数组,mark为整型变量。第53页,共65页,2023年,2月20日,星期四图形模式下的文本输出2.有关文本字体、字型和输出方式的设置有关图形方式下的文本输出函数,可以通过setcolor()函数设置输出文本的颜色。另外,也可以改变文本字体大小以及选择是水平方向输出还是垂直方向输出。
voidfarsettexjustify(inthoriz,intvert);该函数用于定位输出字符串。第54页,共65页,2023年,2月20日,星期四图形模式下的文本输出对使用outtextxy(intx,inty,charfar*strtextstring)函数所输出的字符串,其中哪个点对应于定位坐标(x,y)在TurboC2.0中是有规定的。如果把一个字符串看成一个长方形的图形,在水平方向显示时,字符串长方形按垂直方向可分为顶部,中部和底部三个位置,水平方向可分为左,中,右三个位置,两者结合就有9个位置。第55页,共65页,2023年,2月20日,星期四图形模式下的文本输出
settextjustify()函数的第一个参数horiz指出水平方向三个位置中的一个,第二个参数vert指出垂直方向三个位置中的一个,二者就确定了其中一个位置。当规定了这个位置后,用outtextxy()函数输出字符串时,字符串长方形的这个规定位置就对准函数中的(x,y)位置。而对用outtext()函数输出字符串时,这个规定的位置就位于现行游标的位置。有关参数horiz和vert的取值参见下表:第56页,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 《平衡记分卡的应用》课件
- 《企业人力绩效管理》课件
- 2024-2025学年天津市红桥区高一上学期期中考试历史试卷(解析版)
- 单位管理制度分享汇编人事管理
- 单位管理制度分享大全人力资源管理十篇
- 单位管理制度范例选集人力资源管理篇
- 《磺达肝癸钠》课件
- 单位管理制度呈现大合集人力资源管理十篇
- 《市场营销学案例分》课件
- 《投资经济学》教学大纲
- 2021年新疆乌鲁木齐市中考化学一模试卷(附答案详解)
- 张家爷爷的小花狗2
- 高中思想政治-高三一轮复习讲评课教学课件设计
- 自动喷水灭火系统的设计计算
- 教师评职称个人综述
- LSI-阵列卡操作手册
- 汉字文化解密(华中师范大学)超星尔雅学习通网课章节测试答案
- 黑龙江省哈尔滨市八年级上学期物理期末考试试卷及答案
- 商业综合体设计说明书
- GB/T 19587-2017气体吸附BET法测定固态物质比表面积
- 比赛车门凹陷修复
评论
0/150
提交评论