



版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
C语言图形编程(一、字符屏幕)日期:2004-12-25作者:未知来源:未知、屏幕操作函数clrscr()清除字符窗口函数window。字符窗口函数gotoxy()光标定位函数clreol()清除光标行尾字符函数inslineO插入空行函数delline()删除一行函数gettext()拷进文字函数puttext()拷出文字函数movetext()移动文字函数二、字符属性函数textmode()文本模式函数highvideo。高亮度函数Iowvideo()低亮度函数normvideo(void);textcolor()文本颜色函数textattr()文本属性函数textbackground()文本背景函数三、屏显状态函数wherex()光标处x坐标函数wherey()光标处y坐标函数gettextinfo()获取文本窗口信息函数在Borland0+里面提供了字符屏幕和图形函数。字符屏幕的核心是窗n(Window),它是
屏幕的活动部分,字符输出或显示在活动窗口中进行。窗口在缺省时,就是整个屏幕。窗口
可以根据需要指定其大小。同样,对图形函数的操作,也提供了(Viewport)。也就是说图形函
数的操作都是在视口上进行。图形视口与字符窗口具有相同的特性,用户可以在屏幕上定义
大小不同的视ロ,若不定义视口大小,它就是整个屏幕。窗口是在字符屏幕下的概念,只有字符才能在窗口中显示出来,这时用户可以访问的最小
单位为ー个字符。视口是在图形屏幕状态下的概念,文本与图形都可以在视口上显示,用户
可访问的最小单位是ー个像素(像素这ー术语最初用来指显示器上最小的、单独的发光点单元。
然而现在,其含义拓宽为指图形显示器上的最小可访问点)。字符和图形状态下,屏幕上的位置都是由它们的行与列所决定的。有一点须指出:字符状态左上角坐标为(1,1),但图形左上角坐标为(0,0)。了解字符屏幕和图形函数与窗口和视口的关系是很重要的。例如,字符屏幕光标位置函数
gotoxy()将光标移到衡ロ的x,y位置上,这未必是相对于整个屏幕。下面介绍常用的几类字符
屏幕函数的功能用途、操作方法及其例行程序。ー、屏幕操作函数编写程序绘图经常要用到对字符屏幕进行操作。例如,在往屏幕上写字符之前,首先要将
屏幕清除干净。又如,有时需要在屏幕上多处写上肉中刺样的字符内容,这时最好用屏幕拷
贝来高效率地完成这一任务。对这些操作,Borland〇+提供了-系列字符屏幕操作函数来实
现。clrscr()清除字符窗口函数功能:函数clrscr()清除整个当前字符窗口,并且把光标定位于左上角(1,1)处。
用法:此函数调用方式为voidclrscr(void);说明:括号中void表示无参数。该函数相应的头文件为conio.h
返回值:无例:使用这个函数的例子见4.clreol()函数的实例中。window。字符窗口函数功能:函数window。用于在指定位置建立•个字符窗口。用法:此函数调用方式为voidwindow(right,intbottom);说明:函数中参数left,top为窗口左上角坐标;right,bottom为其右下角坐标。若有一个坐标是无效的,则window。函数不起作用。一旦该函数调用成功,那么所有定
位坐标都是相对于窗口的,而不是相对于整个屏幕。但是建立窗口所用的坐标总是相对整个
屏幕的绝对坐标,而不是相对当前窗口的相对坐标。这样用户就可以根据各种需要建立多个
互不嵌套的窗口。此函数的头文件为conio.h0返回值:无例:调用这个函数的实现例见3.gotoxy。函数的例子中。gotoxy()光标定位函数功能:函数gotoxy()将字屏幕上的光标移到当前窗口指定的位置上。用法:这个函数调用方式为voidgotoxy(intx,inty);说明:括号里x,y是,光标定位的坐标,如果其中一个坐标值无效(如坐标超界),那么光标
不会移动〇此函数在字符状态(有时称为文本状态)下经常用到,其相应的头文件为conio.h返回值:无例:下面程序建立两个窗口,然后在窗ロ里显示字符,字符的位置是调用该函数确定的。#include"conio.h>voidborder(intstartxjntstartyjntendxjntendy)(registerinti;gotoxy(1,1);for(i=0;i<=endx-startx;i++)putch(し’);gotoxy(1,endy-starty);for(i=O;i<=endx-startx;i++)putch('-');for(i=2;i<=endy-starty;i++){gotoxy(1,i);putch('l');gotoxy(endx-startx+1,i);putchCV);)
)main()(voidborder(int,int,int,int);clrscr();window(6,8,38,12);border(6,8,38,12);gotoxy(2,2);printf("window1");window(8,16,40,24);border(8,16,40,24);gotoxy(3,2);printf("window2");
getch();}clreol()清除光标行尾字符函数功能:函数clreol()在当前字符窗口中清除从光标位置到行尾的所有字符,而光标位置保持不
变。用法:它的调用方式为voidclreol(void);说明:此函数的相应头文件为conio.h
返回值:无例:程序中使用了函数clreol()和drscr()
#include"conio.h>voidmain()(registerinti;gotoxy(6,8);printf("Thisisatestoftheclreol()function.");getch();gotoxy(6,8);clreol();for(i=0;i<20;i++)
printf("Hello¥n");getch();clrscr();)insline()插入空行函数功能:函数insline。插入一空行到当前光标所在行上,同时光标以下的所有行都向下顺移ー
行。用法:此函数的调用方式为voidinsline(void);说明:该函数只用于文本方式,并且在当了符窗口才有效。这个函数的对应头文件是conio.h
返回值:无例:程序给出了insline()函数的用法。#include"conio.h"
voidmain()
(registserinti;clrscr();for(i=1;i<24;i++)
{gotoxy(1,i);printf("Thisisline%d¥n",i);)
getch();gotoxy(1,10);insline();getch();}delline()删除一行函数功能:函数delline()删除当前窗口内光标所在行,同时把该行下面所有行都上移一行。
用法:此函数调用方式为voiddelline(void);说明:注意,如果当前窗口小于整个屏幕,那么该函数只影响到窗口内的字符。这个函数相应的头部文件是conio.h
返回值:无例:先在屏幕上显示16行文字,然后删除第4行#include"conio.h"
voidmain()
(registerinti;clrscr();for(i=0;i<16;i++)printf("line%d¥n",i);getch();gotoxy(1,4);delline();getch();}gettext()拷进文字函数功能:函数gettext()用于文本状态下将屏幕上矩形域内的文字拷进内存。用法:该函数调用方式为intgettext(right,intbottom,void*buffer);说明:函数中参数left,top为矩形区域的左上角坐标,right,bottom为其右下角坐标,这些坐
标是屏幕的绝对坐标,不是窗口的相对坐标。buffer指针必须指向一个足够保存该矩形域内文
字的内存。所用内存大小按下式计算:点头用字节数=矩形哉内的行数x矩形域的列数x2这里将行数乘以列数再乘以2的原因是保存屏幕上每个字符要用两个字节存储单元,一个字
节存储单元存放字符本身,而另ー个存放其属性。此函数相应的头文件是conio.h返回值:若函数调用成功则返回1,否则返顺〇。例:把屏幕左上角点(1,1)和右下角点(10,10)的区域拷贝到buf指向的内存中去。buf=(char*)malloc(10*10*2);if(!buf)gettext(1,1,10,10,buf);puttext()拷出文字函数功能:函数puttext。把先前由gettext()保存到buffer指向的内存中的文字拷出到屏幕上一个
矩形区域中。用法:此函数调用方式为intputtext(intleftjnttop,intright,intbottom,void*buffer);说明:函数里left,top为给出的屏幕上矩形区域的左上角点,right,bottom为其右下角点,其
坐标是用屏幕的绝对坐标,而不是用窗口的相对坐标。该函数相应的头文件为conio.h返回值:函数调用成功返回值为1,否则返回〇。例:屏幕上某个区域内容拷进buf指向的内存中,然后又将这些文字拷出到屏幕上新位置。buf=(char*)malloc(10*10*2);gettext(1,1,10,10,buf);puttext(16,16,30,30,buf);movetext()移动文字函数功能:函数movetext。将屏幕上一个矩形区域的文字移到另一个区域上。用法:该函数调用方式为intmovetext(intleftjnttopjntrightjntbottom,intnewleftjnt
newtop);说明:上面left,top为矩形区域上角坐标,right,bottom为其右下角坐标,newleft,newright
为移动到区域左上角坐标。这些坐标是屏幕的绝对坐标,不是窗口的相对坐标。若要把屏幕上一段文字移到屏幕的另一位置,那么使用movetext。函数比用gettext。然后
再用puttext。效率更高。此函数相应的头文件是conio.h返回值:如果有一个以上坐标无效,那么函数返回值为〇,否则返回1。列:把屏幕左上角点(8,8),右下角点(20,20)的矩形区域文字移动到左上角点(10,10)的位置
上:movetext(8,8,20,20,10,10);textmode()文本模式函数功能:函数textmode。针屏幕设置为文本模式(或者说字符状态)。用法:函数调用方式为voidtextmode(intmode);说明:参数mode必须为表1-2中所示的模式之一⑴以用模式名(符号值),也可以用其等价
的整数值。表1-2文本模式模式名(符号值) 等价整数值说明BW40040列黑白C40140列彩色BW80280列黑白C80380列彩色MONO780列单色LASTMODE-1上次模式调用该函数后,屏幕复位,并且所有字符的属性恢复其缺省值
此函数对应的头文件是conio.h返回值:无例:把屏幕设置为80列彩色模式textmode(C80);二、字符属性函数用户可以设置字符显示的高亮度或低亮度的写的符闪烁及其背景颜色等。具有这些操作的函
数称为字符属性函数。除了仅支持单模式和单色的显示卡外,字符属性函数适用于其余所有
的显示卡。highvideo。高亮度函数功能:函数highvideo()设置屏幕为高亮度显示。用法:此函数调用方式为voidhighvideo(void);说明:调用该函数后,写到屏幕上的字符是高亮度的。此函数只适用于文本模式状态(或说字
符屏幕状态)。这个函数对应的头文件为conio.h返回值:无例:设置屏幕显示为高亮度的。highvideo();Iowvideo()低亮度函数功能:函数lowvideo。设置屏幕为低亮度显示。用法:该函数调用方式为voidlowvideo(void);说明:调用该函数后,此时写到屏幕上的字符是低亮度的。这个函数只适用于文本模式状态
(或说字符屏幕状态)。此函数相应的头文件是conio.h返回值:无例:设置屏幕显示为低亮度的lowvideo();normvideo(void);功能:函数normvideo。设置屏幕为正常亮度显示。用法:这个函数调用方式为voidnormvideo(void);说明:调用该函数后,此时写到屏幕上的字符是正常亮度的,该函数只适用于文本模式状态
(或说字符状屏幕状态)。此函数相应的头文件为conio.h返回值:无例:设置屏幕显示为正常亮度。normvideo();textcolor()文本颜色函数功能:函数textcolor()设置字符屏幕下文本颜色(或字符颜色),它也可以用于使字符闪烁。
用法:这个函数调用方式为voidtextcolor(intcolor);说明:函数中参数810r的有效值可取表レ3中的颜色名(即宏名)或等价值。表1-3颜色名与等价值名 等价值含义BLACK0黑BLUE1蓝GREEN2绿CYAN3青RED4红MAGENTA5洋红BROWN6棕LIGHTGRAY7淡灰DRAKGRAY8深灰LIGHTBLUE9淡蓝LIGHTGREEN10淡绿LIGHTCYAN11淡青LIGHTRED12淡红LIGHTMAGENTA13淡洋红YELLOW14黄WHITE15白BLINK128闪烁textcolor()函数执行后,只影响其后输出探险符颜色,而不改变已经在当前屏幕上的其它字符颜色。显然,如果需要输出的字符闪烁,只要将函数中参数color取为BLINK即可,如果要使字符带颜色闪烁,就必须将所选的颜色值与128作“或”运算。此函数相应的头文件是conio.h返回值:无例:下面程序段中第一条语句使输出的字符闪烁,第三条语句使字符输出为经色同时闪烁:textcolor(BLINK);printf("hello");textcolor(RED|BLINK);textattr()文本属性函数功能:函数textattr()用于设置文本属性,即字符背景颜色、字符本身颜色和字符闪烁与否。
用法:函数调用方式为voidtextattr(intattribute);说明:设置字符背景颜色属性字节的最简单方法是,用所选的背景颜色值乘以16再与字符
颜色值作按位或(〇R)运算。例如需要红色背景、绿色字符,就设置成RED*16|GREEN,若还
要字符闪烁,就把背景颜色值、字符颜色值与闪烁值一起按位作或运算。如蓝背景、黄字符且闪烁,就设置成为:YELLO|128|BLUE*16第〇位用于设置字符颜色。此函数相应的头文件为conio.h返回值:无例:设置背景为蓝色、字符为红色并且字符闪烁:textattr(RED|128|BLUE*16);textbackground()文本背景函数功能:函数textbackground。设置字符屏幕下文本背景颜色(或字符背景颜色)。用法:此函数调用方式为voidtextbackground(intbcolor);说明:参数bcolor的有效值取表1-4背景颜色(即宏名)或等价值。表1-4背景颜色与等价值背景颜色等价值含义BUXCK0黑BLUE1蓝GREBJ2绿C\7\N3青RED4红MAGENTA5洋红BROWN6棕调用该函数只影响后续写的字符背景颜色,而不改变当前显示在屏幕上的字符背景颜色。
这个函数对应的头文件是conio.h返回值:无例:设置文本背景颜色为蓝色:textbackground(BLUE));三、屏显状态函数这里提供三个在文本模式下屏幕显示状态的函数wherex()光标处x坐标函数功能:函数wherex()返回当前窗口中光标处横向坐标。用法:此函数调用方式为intwherex(void);说明:这个函数调用无参数,其对应的头文件是conio.h
返回值:函数调用成功,返回光标处x坐标值。例:调用这个函数的实例见18.wherey()函数的例中。wherey()光标处y坐标函数功能:函数wherey()返回当前窗口中光标处纵向坐标。用法:该函数调用方式为intwherey(void);说明:此函数调用无参数,其相应的头文件是snio.h
返回值:函数调用成功,返回光标处y坐标值。例:调作函数wherex()与wherey(),返回当前光标处x坐标与y坐标,并赋给整型变量xpos,ypos,intxpos,ypos;
xpos=wherex();
ypos=wherey();gettextinfo()获取文本窗口信息函数功能:函数gettextinfo()获取当前文本窗口信息、,并存放在实参结构中。用法:函数调用方式为voidgettextinfo(structtext-info*info);说明:函数中参数info为structtext-info结构型指针,structtext-info结构在此函数相应的
头文件中定义为:structtext-info{unsignedcharwinleft; /Z 窗口左上角x坐标unsignedcharwintop; /Z 窗口左上角y坐标unsignedcharwinright; /Z 窗口右下角x坐标unsignedcharwinbottom;/Z窗口右下角y坐标unsignedcharattribute;/Z文本属性
unsignedcharnormattr;//正常属性unsignedcharcurrmode;/Z当前屏显模式unsignedcharscreenhight//文本窗口高度(以行数计)
unsignedcharscreenwidth;//文本窗口宽度(以字符个数计)unsignedcharcurx; //光标处x坐标unsignedcharcury; //光标处y坐标};记住,调用函数gettextinfo。时,要传递structtext-info结构型指针或该结构的首地址,不
要传递结构变量本身。这个函数对应的头文件是conio.h返回值:返回文本窗口角点坐标、高宽度、文本属性等值,并存放在info所指向的结构变量
中。例:程序语句说明如何正确调用gettextinfo()函数:structtext-infowin-status;gettextinfo(&win-status);C语言图形编程(二、图形显示)日期:2004-12-25作者:未知来源:未知ー、确定显示卡二、选择显示模式三、图形显示detectgraph()显示卡检测函数initgraph()图形初始化函数getdrivername()获取图形驱动程序名的指针getgraphmode()获取图形模式函数getmoderange。获取模式值范围函数getmaxmode()获取最大显示模式函数getmodename。获取显示模式名函数graphdefaults()图形设置复位缺省值函数setgraphmode()设置图形模式函数restorecrtmode()恢复文本显示模式函数graphresult()图形操作结果函数
grpaherrormsg()图形错误信息函数setgraphbufsize。设置图形缓冲区大小函数setactivepage()设置可输出显示页函数setvisualpage()设置可见显示页数closegraph。关闭图形模式函数ー、确定显示卡微机系统显示部分由显示器(monitor)和显示卡(adapter)两部分组成。显示器是独立于主机
的・ー种外部设备,显示卡或称显示适配卡,也有的称图形卡,是插在主机上的・块电路板。
但也有的显示卡与主机板设计在ー起。显示卡包括寄存器组、存储器和控制电路三大部分。
其中存储器又包括显示RAM和ROMBIOS的部分,微机对显示屏幕的所有操作都是通过显示
卡来实现的。因此要进行图形显示,首先要确定计算机上安装的是何种显示卡。ー种方法是
询问计算机或终端使用者,确定将要使用的显示卡类型。这种方法很难,因为甚至专业程序
员也不总是能确定他正在使用什么样的硬件。另ー种方法是用软件査询硬件以识别当前的配
置。如果有・些识别硬件的标准,这就很简单了。在BorlandC中对现在所使用的各种显示卡
提供了支持,这只要调用detectgraph()函数就可以了,该函数为程序员确定计算机上使用的
显示卡类型。二、选择显木模式显示模式是指显示卡支持的分辨率与相应的颜色配置。每台计算机都配置了某种类型显示
卡,可以为该显示卡指定显示模式。三、图形显示进行图形显示首先要确定显示卡,然后选择其显示模式。这些工作都可以调用图形功能函
数来完成,其实就是把适合于显示卡的图形驱动程序装入内存。如果图形驱动程序未装入内
存,那么图形函数就不能操作。detectgraph()显示卡检测函数功能:函数detectgraph()在计算机上安装有显示卡的情况下,测定其显示卡的类型。用法:此函数调用方式为voiddetectgraph(int*driver,int*mode);说明:函数把driver所指向的整型变量设置为图形驱动程序的代码,把mode所指向的整型变量设置为显示卡支持的最高有效模式(即该显示卡能支持的最高分辨率)。该函数相应的头文件为graphics.h返回值:返回适合于该显示卡的图形驱动程序的代码(也称等价值),并存放在driver指向的
变量中。若计算机系统中无图形硬件,则由driver指向的变量设置为ー2。例:检测计算机是否装有显示卡:intdriver,mode;detectgraph(&driver,&mode);if(driver==-2){printf("nographicsadapterinthecomputer");exit(1);initgraph()图形初始化函数功能:函数initgraph。用于初始化图形系统,把适合的图形驱动程序装入内存,设置图形函
数所用的显示模式。用法:该函数调用方式为voidinitgraph(int*driver,int*mode,char*path);说明:1)函数中参数driver指向图形驱动程序(或者等价值)。在头部文件graphics.!!中定义了图形驱动程序的宏名与其等价,如下:宏名等价值DETECT0CGA1MCGA2EGA3EGA644EGAMONO5IBM85146HERCMONO7ATT4008VGA9PC327010注:在现在的计算机中,上表中的许多显示卡已经过时,不再使用。这样就不必担心图形驱动程序的准确名字,而只要用其等价值即可,若使用detect(即等价值〇)时,irHtgraph()函数自动检测当前计算机中装有的显示卡类型,并且选用最大分辨率的显示模式。2)参数mode指向显示模式或用等价值(风表1-5),mode所指的值必须是有效模式之一。3)参数path指向图形驱动程序所在的路径,例如path="C:\TOBG1".若没有指定路径,就在当前目录下寻找。一般图形驱动程序包含在.BGI文件中,这些文件是系统可以得到的。这个函数对应的头文件是graphics.ho返回值:无例:调用i川tgraph()自动检测硬件图形系统,并选用最大分辨率显示模式。initdrver,mode;driver=DETECT;mode=0;initgraph(&driver,&mode,"");getdrivername()获取图形驱动程序名的指针功能:函数getdrivername。返回指向当前图形驱动程序名的指针。用法:此函数调用方式为char*getdrivername(void);说明:本函数可以用来检测显示卡,但只能在initgraph。设置图形驱动程序和显示模式之后调用。该函数相应的头文件为graphics.h返回值:返回一指针,指向含有当前图形驱动程序名的字符串。例:显示当前图形驱动程序名:#include<graphics.h>
#include<stdio.h>
voidmain()
{intgraphdriver=DETECTgraphmode;char*s;initgraph(&graphdriver,&graphmode,"");s=getdrivername();outtext("Usingdriver:");outtext(s);getch();closegraph();getgraphmode()获取图形模式函数
功能:函数getgrapgmode()返回当前图形模式。
用法:该函数调用方式为intgetgraphmode(void);说明:getgraphmode。函数无参数调用。这个函数对应的头文件是graphics.!!返回值:返回irHtgraph。或setgraphmode。所设置的当前图形模式值。
例:显示当前图形模式的代码:printf("graphicsmodeis%d",getgraphmode());getmoderange()获取模式值范围函数功能:函数getmoderange。返回指定的图形驱动程序能够支持的最低和最高模式值。用法:函数调用方式为voidgetmoderange(intdriver,int*lowmode,inthimode);说明:参数driver是用来调用此函数时,指定图形驱动程序等价值或宏名。其有效值如下:宏名等价值DETECT0CGA1MOGA2EGA3EGA644EGAMONO5IBM85146HERCMONO7ATT4008VGA9PC327010注:上表中的许多显示卡在现在的计算机上已经过时,仅作参考。该函数想应的头文件为graphics.h
返回值:返回的最小和最大有效值存放在参数指针lowmode和himode分别指向的整型变量
中。例:显示当前图形硬件的显示模式的范围值:#include"graphics.h"
voidmain()(intdriver,mode;intlow,high;mode=0;initgraph(&driver,&mode,"");
getmoderange(driver,&low,&high);printf("moderange:%d-%d,low,high);getch();
rstorecrtmode();}getmaxmode〇获取最大显示模式函数功能:函数getmaxmode。返回当前加载的图形驱动程序所支持的最大有效显示模式。用法:函数调用方式为intgetmaxmode(void);说明:本函数无参数调用,返回图形驱动程序所支持的最大显示模式,所有图形驱动程序支
持从〇到getmaxmode。函数返回值中的任一一整数值(对应的显示模式)。这个函数对应的头文件是graphics.h返回值:返回图形驱动程序所支持的显示模式最大值。例:显示当前最大显示模式:printf("Themaxmodeofthisdriveris%d¥n",getmaxmode。);getmodename。获取显示模式名函数功能:函数getmodename。可获取当前图形驱动程序支持的指定显示模式的名字。用法:此函数调用方式为char*getmodename(intmodecode);说明:参数modecode为整型值。用以指定一显示模式值调用该函数。这个函数对应的头文件graphics.h返回值:返回指定模式值的显示模式名。例:显示当前最大显示模式名:#include<graphics.h>#include<stdio.h>voidmain()
intgraphdriver=DETECKgfaphmode;intmodecode;char*s;initgraph(&graphdriver,&graphmode,"");
modecode=getmaxmode();s=getmodename(modecode);outtext("Themaxmodenameis:");outtext(s);getch();closegraph();)graphdefaults。图形设置复位缺省值函数功能:函数grpahdefaults()把所有图形设置复位为它们的缺省值,这包括把图形视ロ复位为
全屏幕;当前位置定位在0,0;调色板、背景色和绘图色都被复位;填充颜色、填充图样、
文本文字和排齐方式都返回到它位的缺省值。用法:此函数调用方式为voidgraphdefaults(void);说明:该函数无参数调用。这个函数相应的头文件为graphics.h返回值:无例:将图形系统恢复为其缺省值:graphdefaults();setgraphmode()设置图形模式函数功能:函数setgraphmode。用当前图形驱动程序有效的图形模式调用,一旦被调用,
setgraphmode。选择ー个新的图形模式。注意,图形显示模式必须事先由initgraph。初始化。用法:该函数调用方式为voidsetgraphmode(intmode);说明:参数mode调用时为指定的模式值。此函数相应的头部文件是graphics.h返回值:无例:把VGA图形卡设置为VGAMED模式:setgraphmode(VGAMED); /Z图形系统已经初始化restorecrtmode。恢复文本显示模式函数功能:函数restrecrtmode。将显示模式恢复到调用initgraph。时检测出的初始文本模式。用法:这个函数调用方式为voidrestorecrtmode(void);说明:函数restorecrtmode。和setgraphmode。函数一起使用,可以实现文本与图形显示之
间的切换。此函数対应的头文件为graphics.h返回值:无例:恢复显示模式为初始文本模式:
restorecrtmode();graphresult()图形操作结果函数
功能:函数graphresu代()函数返回最后一次图形操作的代码。用法:此函数调用方式为intgraphresult(void);说明:C为图形设置了代码,它们是从・15到。的整数值。其含义见表レ6。调用该函数时,出错状态被复位为〇,所以返回值(代码)最好存于变量中,以供需要时检测,进行下ー步图形操作。图形操作信息名称代码含义grOKgrNolnitGraphgrNoDetectedgrRleNoFoundgrlnvalidDrivergrNoLoadMemgrNoScanMemgrNoRoadMemgrFontNotFoundgrNoFbntMemgrlnvalidModegrError
grIOerror
grlnvalidFont
grlnvalidDeviceNum0
-1-2-3-4-5-6-7-8-9-10-11-12-13-14-15成功没有图形初始化
没有检测到图形硬件
没有找到图形驱动文件
无效图形驱动程序
没有足够内存装入图形驱动程序
Scan填充内存不足
Flood填充内存不足
没有找到字体文件
没有足够内存用于装字体文件
无效图形模式
一般闇形错误
输入输出错误
无效字体文件无效字体号
无效设备号这个函数对应的头部文件是graphics,h返回值:返回最后一次图形操作结果相应的代码。例:调用graphresult。函数的实例见下面grapherrormsg。函数的例子。grpaherrormsg()图形错误信息函数功能:函数grapherrormsg。返回指向出错代码相应的错误信息字符串的指针。
用法:此函数调用方式为char*grapherrormsg(interrcode);说明:参数errcode值,即出错代码由调用函数graphresult。获得。这里所有出错代码及相
应的错误信息如表1-6中所述。该函数相应的头文件是grpahics.h返回值:返回一个指向该出错代码相应的错误信息字符串的指针。例:用文字形式显示有关出错代码相应的错误信息:interrorcode;errorcode=graphresult();
printf(%s",grapherrormsg(errcode));setgraphbufsize()设置图形缓冲区大小函数
功能:函数setgraphbufsize。用来设置有的图形函数(如floodfill等)所要用到的内存缓冲区大
小。用法:函数调用方式为unsignedsetgraphbufsize(unsignedbufsize);
说明:这里无符号参数bufsize为所设置的缓冲区大小。一般不需要用到该函数,仅使用由initgraph。函数产生的内存缓冲区就够了,缓冲区大小
缺省时为4KB(即4096个字节),足以用来填充一个大约有650个顶点的多边形,但是为了
节省内存,用户可以减少缓冲区的大小,或者由于需要更多的缓冲区内存,这时可用函数
setgraphbufsize。来增加缓冲区大小。注意,使用setgraphbufsize。函数必须在调用initgraph()
之前。返回值:返回先前定义的图形缓冲区字节数。例:调用此函数设置图形缓冲区为8KB字节:
setgraphbufsize(0x2000);setactivepage()设置可输出显示页函数
功能:函数setactiveage()设置用作图形输出的显示页。
用法:这个函数调用方式为voidsetactivepage(intpagenum);
说明:参数pagenum为选择的显示页号,如果调用成功,那么后续图形输出就写到选定的
输出页上。缺省时是以〇页作为当前输出页。该函数只在图形驱动程序及其显示模式支持多
个显示页时オ起作用。此函数相应的头文件为graphics.h
返回值:无
例:设置1页为输出显示页:setactivepage(l);setvisualpage()设置可见显示页数
功能:函数setvisualpage。设置屏幕上可见的显示页。用法:函数调用方式为voidsetvisualpage(intpagenum);说明:参数pagenum为设置的显示页号。缺省时是以。页作为当前可见页。调用这个函数和调用setactivepage。ー样,仅在图形驱动程序及其显示模式支持多个显示页时オ有效。用户可以用系统所支持的任何显示页,在它们之间切换,当然一次只能有一个显示页在屏幕上可见,有时需要在ー页上建立后备图形僕图像,它在当时不显示,一旦需要时,可以马上切换到该页,如要实现动画效果,只需切换显示页号即可。用setvisualpage。函数选定实际显示在屏幕上的可见页,用setactivepage。函数选择当前图形输出页,从而实现图形页之间的显示切换,通常这两个函数都是缺省的,这时输出页就是可见页。若不绘制动画就不需要用到这两个函数。这两个函数对应的头文件是graphics.h返回值:无例:设置可见页为第1页:
setvisualpage(l);closegraph()关闭图形模式函数功能:函数closegraph。将系统图形模式关闭,,复位至リinitgraph。初始文本模式,并且释放图形驱动程序、字体和内部缓冲区所占用的系统内存。用法:这个函数调用方式为voidclosegraph(void);说明:当用户的程序既用到图形输出又用到非图形输出时,应该调用此函数。特别是程序多次调用initgraph。函数的情况,要相应地调用closegraph函数,释放调用initgraph()所占用的内存,否则内存很快就满了,程序无法运行,如果程序结束,也可以用restorecrtmode()函数代替该函数,这样任何分配的内存都将释放。此函数对应的头文件是graphics,h返回值:无例:关闭图形系统:closegraph();C语言图形编程(三、绘图函数一01)日期:2004-12-25作者:未知来源:未知
ー、屏幕和视ロ设置与清除函数setviewport()设置图形视ロ函数clearviewport。清除图形视ロ函数cleardevice。清除屏幕函数getviewsettings。获取图形视口设置函数二、调色板和颜色函数setpalette。设置调色板函数setallpalette。设置整个调色板函setbackcolor()设置背景颜色函数setcolor()设置颜色函数getbkcolor()返回背景色函数getcolor()返回当前绘图颜色getmax810ro返回最大颜色值函数getpalette()获取调色板函数getpalettesize()返回调色板大小函数getdefaultpalette()获取缺省调色板函数三、屏幕位置函数getmaxx。返回最大x坐标函数getmaxy()返回最大y坐标函数getx()返回x坐标函数gety()返回y坐标函数moveto()函数moverel()相对移动函数Borlanda+提供了•整套综合性的图形函数,上节介绍了其中有关图形显示的函数,本节
介绍其中的绘图函数,下节将介绍它的图形文本函数。一般绘图时,首先要清除屏幕,设置图形视ロ,设置绘图颜色,然后在屏幕上某个位置画点
或直线或曲线等。下面给出具有这些功能的函数。ー、屏幕和视ロ设置与清除函数setviewport()设置图形视ロ函数功能:函数setviewport。设置当前图形视口。用法:函数调用方式为voidsetviewport(topjntright,intbottom,intclip);说明:参数left,top是左上角坐标,right,bottom是右下角坐标,它们都是绝対屏幕坐标。传给setviewport。的第五个参数是clip,如果clip为1,则超出视ロ的输出图形自动被裁剪掉,即所有作图限制于当前图形视ロ之内,如果clip为〇,则不做裁剪,即作图将无限制地扩展于视ロ周界之外,直到屏幕边界。若无效参数传入setviewport。,则graphresult()函数返回值ー11,先前视ロ设置仍有效。setviewport()函数的对应头文件为graphics.h返回值:无例:建立对角为(6,6)和(88,88)的视ロ,并带有裁剪功能:
setviewport(6,6,88,88,1);clearviewport。清除图形视ロ函数功能:函数clearviewport。清除当前图形视ロ,并把光标从当前位置移到原点(0,0)。
用法:该函数调用方式为voidclearviewport(void);说明:此函数调用执行后,当前图形视口将不复存在。这个函数对应的头文件是graphics.h返回值:无例:清除当前图形视ロ,但并非整个屏幕:
clearviewport();cleardevice。清除屏幕函数功能:函数cleardevice()清除整个屏幕,并且将当前位置移到屏幕原点。用法:此函数调用方式为voidcleardevice(void);说明:该函数类似于文本模式下的函数clrscr(),但clrscr()函数不能在[?!形方式下工作;同
样cleardevice。函数不能在文本模式下工作。这个函数相应的头文件为graphics.h返回值:无
例:清除当前整个屏幕:
cleardevice();getviewsettings()获取图形视口设置函数功能:函数getviewsettings。返回当前图形视ロ坐标和裁剪标志,坐标是绝对屏幕坐标,裁剪标志1或〇〇用法:此函数调用方式为voidgetviewsettings(structviewporttype*info);说明:该函数执行后,把有关当前视ロ的信息装入info指向的viewporttype型结构中。
viewporttype结构定义如下:
structviewporttype{
intleft,top,right,bottom;intclipflag;)这里left,top中存放视ロ左上角坐标,right,bottom中存放视ロ右下角坐标,clipflag中存放裁
剪标志,若clipflag为1,执行裁剪以防止超出视口边界,如果clipflag为〇,则不对超出边
界输出作裁剪。getviewsettings。函数对应的头文件是graphics.h返回值:无例:显示当前视口角点坐标:structviewporttypeinfo;getviewsettings(&info);printf("left:%dtop:%d¥n",info.left,info.top);printf("right:%dbottom:%d¥n",info.right,info.bottom);二、调色板和颜色函数进行图形显示或绘图,除了要知道用什么显示卡以及相应的图形驱动程序外,还必须了解它
们支持什么样的调色板颜色。setpalette()设置调色板函数功能:函数setpalette。可对调色板上的颜色的色彩值重新设定。用法:setpalette。函数调用方式为voidsetpalette(intvalue,intcolor);说明:参数value为色彩值,color为色彩值相应的颜色名。当需要将一颜色指定为ー色彩值地,即可调用此函数来设置。表1-7预先定义的调色板与色彩调色板色彩〇色彩1色彩2色彩3co黑色淡绿红浅黄色C1黑色淡青粉红白色C2里色绿色红色棕色C3黑色青色品粉红淡灰色
这个函数相对应的头文件为graphics.h
返回值:无setallpalette()设置整个调色板函数功能:函数setallpalette。对某个调色板上的所有颜色重新设定彩色值。用法:函数调用方式为voidsetallpalette(structpalettetype*p);说明:在低分辨率图形显示模式下,该函数无效。若函数调用成功,则把p指向的palettetype结构中的色彩值设置为当前调色板所有颜色的新色彩值。palettetype结构定义如下:structpalettetype{unsignedcharsize;signedcharcolor[16];};这里必须把size设置为调色板颜色的数目,并把每个色彩值都装入color数组相应元素中,然
后オ可用于调用函数。此函数对应的头文件是graphics.h返回值:无例:把16色的EGA/VGA显示卡调色板改为其前16种颜色:structpalettetype;inti;for(i=0;i<16;i++)p.color[i]=i;p.size=16;setallpalette(&p);setbackcolor()设置背景颜色函数功能:函数setbackcolor。把当前调色板颜色的第一个值改成指定的颜色值,以设置背景颜
色。用法:此函数调用方式为voidsetbackcolor(intcolor);说明:参数color为指定的背景色,其有效值可以是颜色符号名,也可以是色彩值。表1-8
列出了背景颜色供选取。表1-8背景颜色值颜色符号名色彩值 颜色符号名色彩值颜色符号名色彩值 颜色符号名色彩值BLACK(黑色)0DARKGRAY(深灰)8BLUE(蓝色)1LIGHTBLUE(淡蓝)9GREEN(绿色)2LIGHTGREEN(淡绿)10CVAN(青色)3LIGHTCYAN(淡青)11RED(红色)4LIGHTRED(淡红)12MAGENTA(品红)5LIGHTMAGETA(粉红)1BROWN(棕色)6YELLOW(黄色)14LIGHTGRAY(淡灰)7WHITE(白色)15调用该函数,将改变整个屏幕的颜色,如果新的背景色与原来屏幕的图形颜色相同,尽管
图形信息不会丢失,但是看不见图形了。如果所选背景色为对比鲜明的颜色,看不见的图形
就会重新清晰地显现出来。这个函数的头文件为graphics.h返回值:无
例:把背景色置为淡蓝色
setbackcolor(LIGHTBLUE);setcolor()设置颜色函数功能:函数setcolor()设置当前绘图颜色(或称做前景色)。用法:该函数调用方式为voidssetcolor(intcolor);说明:参数color为选择的当前绘图颜色。在高分辨率显示模式下,选取的810r是实际色彩值,也可以用颜色符号名表示。如果已经摇篮函数setpalette。改变了调色板色彩值,那么符号名就不可能产生预期作用了。在低分辨率显示模式(320X200)下,选取的color是调色板颜色号,不是实际色彩值。此函数相应的头文件为graphics.il返回值:无例:设置16种不同的颜色,显示16段直线:#include<graphics.h>
voidmain()
(intdriver,mode;inti;driver=DETECT;mode=0;initgraph(&driver,&mode,"");moveto(0,200);for(i=0;i<16;i++)
{
setcolor(i);linerel(20,0);}getch();restorecrtmode();)getbkcolor()返回背景色函数
功能:函数getback81or()返回当前背景颜色。
用法:函数调用方式为intgetbackcolor(void);说明:调用该函数后,获得背景色,但其值不一定是调色板上的色彩值。这个函数对应的头文件是graphics.h返回值:返回当前绘图色彩值。例:返回当前背景色彩值:printf("backgroundcoloris%d",getbkcolor());getcolor()返回当前绘图颜色
用法:此函数调用方式为intgetcolor(void);说明:对于使用彩色低分辨率显示模式调色板,返回值是调色板颜色号,而不是实际颜色值,
对于高分辨率显示模式,返回值对应于颜色值,除非调色板颜色已被函数setpalette。或
setallpalette。改变了。这个函数相应的头文件为graphics.h
返回值:返回当前绘图颜色值。例:printf("drawingcoloris%d",getcolor());getmax810r()返回最大颜色值函数
用法:函数调用方式为intgetmaxcolor(void);说明:该函数调用后,在低分辨率模式下返回值为3(这种模式下有效颜色值为〇至3);在高分辨率显示模式下返回值可以是256或更高(此模式下有效颜色值为0至256或更高)。这个函数相应的头文件为graphics.h返回值:返回当前图形模式下最大颜色值。例:显示最大有效颜色值:
#include<graphics.h>
voidmain()
(
intdriver,mode;driver=DETECT;mode=0;
initgraph(&driver,&mode,"");
printf(";largestcolor:%d",getmaxcolor());getch();
restorecrtmode();)getpalette()获取调色板函数功能:函数getpalette()将当前调色板的值填入palettetype型结构中。
用法:getpalette。函数调用方式为voidgetpalette(structpalettetype*p);说明:此函数调用执行后,当前调色板的值被装入p指向的结构里;从而可从该结构中获得
这个调色板的设置信息。palettetype型结构定义如下#defineMAXOOLORS15
structpalettetype{
unsignedcharsize;signedcharcolors[MAXCOLORSf1];);其中size用于存放当前调色板的有效颜色个数;810rs数组的每ー元素中装入调色板的・个
相应颜色值。表1-9列出了这些颜色值(适用于EGA/VGA)颜色符号名 色彩值TOC\o"1-5"\h\zEGA_BLACK(EGA黑色) 0EGA_BLUE(EGA蓝色) 1EGA_GREEN(绿色) 2EGA_CW\N(EGA青色) 3EGA_RED(红色) 4EGA_MAGENTA(EGA品红) 5EGA_BROWN(EGA棕色) 20EGA_LIGHTGRAY(EGA淡灰) 7EGA_DARKGRAY(EGA深灰) 56EGA_LIGHTBLUE(EGA淡蓝) 57EGA_LIGHTGREEN(EGA淡绿) 58EGA_LIGHTC\AN(EGA淡青) 59EGA_LIGHTRED(EGA淡红) 60EGA_LIGHTMAGENTA(EGA粉红)61EGA_YELLOW(EGA黄色) 62EGA_WHITE(EGA白色) 63
getpalette。函数对应的头文件是graphics.h返回值:无例:显示由自动检测所得显示模式支持的调色板上的颜色数目:#include<graphics.h>
voidmain()(
intdriver,mode;structpalettetypep;driver=DETECT;/Z自动检测mode=0;initgraph(&driver,&mode,"");getpalette(7p);printf("numberofcolorspalette:%d",p.size);getch();restorecrtmode();
}getpalettesize()返回调色板大小函数功能:函数getalettesize。返回调色板的颜色数目。用法:该函数调用方式为intgetpalettesize((void);说明:调用这个函数后,就知道调色板上有多少颜色数目可在当前显示模式下设置。此函数对应的头文件是graphics.h返回值:返回当前显示模式支持的调色板的颜色数目。
例:显示当前显示模式支持的调色板的颜色数目。intnumber;
number=getpalettesize();
printf("palettesize:%d",number);getdefaultpalette()获取缺省调色板函数
功能:函数getdefaultpalette。返回指向缺省调色板的指针。用法:该函数调用方式为structpalettetype*getdefaultpalette(void);
说明:调色板结构类型palettetype定义如下:#defineMAXCOLORS15
structpalettetype{
unsignedcharsize;signedcharcolorsfMAXCOLORS4-1];);在调用initgraph()初始化图形系统时,给调色板结构类型变量赋值,作为缺省调色板,调用
这个函数可返回指向它的指针。此函数相应的头部文件为graphics.h
返回值:返回指向缺省调色板(结构)的指针。例:显示图形系统初始化后所支持的调色板上的各种颜色。#include<graphics.h>#include<stdio.h>#include<conio.h>#include<stdlib.h>
voidmain()
(
intgraphdriver=DETECT,graphmode;
structpalettetype*palette;interrorcode,color;initgraph(&graphdriver,&graphmode,"");
errorcode=graphresult();
if(errorcode!=grOK){printf(nGraphicserror%s¥n",grapherrormsg(errorcode));exit(1);}palette=getdefaultpalette();printf("palette->size%d¥n",palette->size);getch();for(color=0;color<palette->size;color++){setfillstyle(LINE_RLL,color);bar(20*(color-1),0,20*color,20);getch();)if(palette->size>1){dosetpalette(random(palette->size),random(palette->size));
while(!kbhit());getch();)setallpalette(palette);closegraph();}三、屏幕位置函数在图形模式下,字符屏幕坐标被像素坐标取代了,这种像素坐标根据不同的显示硬件,水平
与垂直方向的分辨率可以从320X200变化到1280X1024等。由于分辨率的变化,以致要加载
合适的图菜驱动程序,因此大多数图形程序是通过检测硬件开始的,然后使用getmaxx。和
getmaxy()等函数来决定屏幕尺寸,调整随后的操作来适应这些屏幕限制。getmaxx()返回最大x坐标函数功能:函数getmaxx()返回当前图形模式下的最大x坐标,即最大横向坐标。用法:函数调用方式为intmaxx(void);说明:此函数独立于图形视口设置,仅取决于显示卡的显示模式相应的分辨率。这个函数对应的头文件是graphics.h返回值:返回当前显示模式最大x坐标值。例:使用本函数的例子见51.getmaxy()函数的例子中。getmaxy()返回最大y坐标函数功能:函数getmaxy。返回当前图形模式下的最大y坐标,即最大纵向坐标。用法:函数调用方式为intgetmaxy(void);说明:此函数独立于图形视口设置,仅取决于显示卡的显示模式相应的分辨率。这个函数对应的头文件为graphics.h
返回值:返回当前显示模式的最大y坐标值。#include<graphics.h>
voidmain()
(intdriver,mode;driver=DETECT;mode=0;initgraph(&driver,&mode,"");printf("maxx,y:%d%d",getmaxx(),getmaxy());getch();restorecrtmode();
)getx()返回x坐标函数功能:函数getx()返回当前图形模式下当前位置的x坐标(水平像素坐标)。用法:此函数调用方式为intgetx(void);说明:这里坐标是相对于当前图形视ロ的,如果没有设置图形视ロ,那么缺省的图形视ロ为
整个屏幕。这类似于文本模式下使用wherex()函数。getx()函数相应的头文件是graphics.h返回值:返回当前x坐标值。例:见53.gety()函数中的例子。gety()返回y坐标函数功能:函数gety()返回图菜模式下当前位置的y坐标(垂直像素坐标)。用法:此函数调用方式为intgety(void);说明:函数返回的坐标是相对于当前图形视ロ的,如果没有设置图形视ロ,那么缺省的图形视口为整个屏幕,这类似于文本模式下使用wherey()函数。gety()函数对应的头文件是graphics.h
返回值:返回当前y坐标值。例:显示图形模式下当前位置的x,y坐标值:
printf("x:%d,y:%d",getx(),gety());moveto。函数功能:函数moveto()将当前位置移动到指定坐标的位置
说明:这相当于文本模式下gotoxy()函数的操作,它提供对等的功能。此函数対应的头文件为graphics.h返回值:无例:把当前位置移到(66,88)位置上:moveto(66,88);moverel()相对移动函数功能:函数moverel。根据指定的偏移量,将当前位置移动ー个相对距离(即偏移量大小的距
离),成为新的当前位置。用法:此函数调用方式为voidmoverel(intdx,intdy);说明:参数dx为x方向相对移动距离dy为y方向相对移动距离。相对移动对图形应用程序,
往往要比绝对移动方便ー些。这个函数対应的头文件是graphics.h返回值:无例:下面的程序,当语句执行到当前位置在(90,90),则执行后将移动到(100,120)的位置上。即x方向相对移动10,y方向相对移动30:moverel(10,30);C语言图形编程(三、绘图函数一〇2)A日期:2004-12-25作者:未知来源:未知四、图形和图像函数(一)像素函数putpiel()画像素点函数getpixel()返回像素色函数(―)直线和线型函数Iine()画线函数Iineto()画线函数Iinerel()相对画线函数setlinestyle()设置线型函数getlinesettings()获取线型设置函数
setwritemode()设置画线模式函数
(三)、多边形函数rectangle()画矩形函数bar()画条函数bar3d()画条块函数drawpoly()画多边形函数(四)、圆、弧和曲线函数getaspectratio()获取纵横比函数circle。画圆函数arc()画圆弧函数ellipse。画椭圆弧函数fillellipse。画椭圆区函数pieslice。画扇区函数sector。画椭圆扇区函数getarccoords。获取圆弧坐标函数
(五)、填充函数setfillstyle。设置填充图样和颜色函数setfillpattern。设置用户图样函数floodfill。填充闭域函数fillpoly。填充多边形函数getfillsettings。获取填充设置函数getfillpattern。获取用户图样设置函数
(六)、图像函数imagesize。图像存储大小函数getimage。保存图像函数putimage。输出图像函数四、图形和图像函数对许多图形应用程序,直线和曲线是非常有用的。但对有些图形只能靠操作单个像素才能画
出。当然如果没有画像素的功能,就无法操作直线和曲线的函数。而且通过大规模使用像素
功能,整个图形就可以保存、写、擦除和与屏幕上的原有图形进行叠加。(一)像素函数putpixel()画像素点函数功能:函数putpixel。在图形模式下屏幕上画一个像素点。用法:函数调用方式为voidputpixel(intx,inty,intcolor);说明:参数x,y为像素点的坐标,color是该像素点的颜色,它可以是颜色符号名,也可以是整型色彩值。此函数相应的头文件是gr叩hics.h返回值:无例:在屏幕上(6,8)处画一个红色像素点:putpixel(6,8,RED);getpixel()返回像素色函数
功能:函数getpixel。返回像素点颜色值。
用法:该函数调用方式为intgetpixel(intx,inty);说明:参数x,y为像素点坐标。函数的返回值可以不反映实际彩色值,这取决于调色板的设置情况(参见setpalette。函
数)。这个函数相应的头文件为graphics.h
返回值:返回一个像素点色彩值。例:把屏幕上(8,6)点的像素颜色值赋给变量8lor。color=getpixel(8,6);(―)直线和线型函数有三个画直线的函数,即line(),lineto(),linerel()。这些直线使用整型坐标,并相对于当前图
形视ロ,但不一定受视ロ限制,如果视ロ裁剪标志clip为真,那么直线将受到视ロ边缘截断;
如果clip为假,即使终点坐标或新的当前位置在图形视ロ或屏幕极限之外,直线截断到屏幕极
限。有两种线寛及几种线型可供选择,也可以自己定义线图样。下面分别介绍直线和线型函数。Iine()画线函数功能:函数line。使用当前绘图色、线型及线宽,在给定的两点间画一直线。用法:该函数调用方式为voidline(starty,endy);说明:参数startx,starty为起点坐标,endx,endy为终点坐标,函数调用前后,图形状态下屏幕光标(一般不可见)当前位置不改变。此函数相应的头文件为graphics.h
返回值:无例:见函数60.1inerel()中的实例。Iineto()画线函数功能:函数lineto()使用当前绘图色、线型及线宽,从当前位置画一直线到指定位置。
用法:此函数调用方式为voidlineto(intx,inty);说明:参数x,y为指定点的坐标,函数调用后,当前位置改变到指定点(x,y)。该函数对应的头文件为graphics.h
返回值:无例:见函数60.1inerel。中的实例。linerel()相对画线函数功能:函数linerel()使用当前绘图色、线型及线宽,从当前位置开始,按指定的水平和垂直
偏移距离画一直线。用法:这个函数调用方式为voidlinerel(intdx,intdy);说明:参数dx,dy分别是水平偏移距离和垂直偏移距离。函数调用后,当前位置变为増加偏移距离后的位置,例如,原来的位置是(8,6),调用函
数linerel(10,18)后,当前位置为(18,24)。返回值:无例:下面的程序为画线函数调用实例:#include<graphics.h>
voidmain()|
intdriver,mode;
driver=DETECT;mode=0;initgraph(&driver,&mode,"");setcolor(15);line(66,66,88,88);lineto(100,100);linerel(36,64);
getch();restorecrtmode();}setlinestyle()设置线型函数
功能:setlinestyle()为画线函数设置当前线型,包括线型、线图样和线宽。用法:setlinestyle()函数调用方式为voidsetlinestyle(intstly,width);
说明:参数style为线型取值,也可以用相应名称表示,如表1-10中所示。参数pattern用于自定义线图样,它是16位(bit)字,只有当style=USERBIT_LIN旦值为1)时,pattern的值オ有意义,使用用户自定义线图样,与图样中’T‘位对应的像素显示,因此,pattern=OxFFFF,则画实线;pattern:0x9999,则画每隔两个像素交替显示的虚线,如果要画长虚线,那么pattern的值可为OxFFOO和OxFOOF,当style不为USERBITJJNE值时,虽然pattern的值不起作用,但扔须为它提供ー个值,一般取为〇。参数wigth用来设定线宽,其取值见表1-11,表中给出了两个值,即1和3,实际上,线
宽取值为2也是可以接受的。若用非法参数调用setlinestyle。函数,那么graphresu代()会返回错误代码,并且当前线型
继续有效。TurboC提供的线型与线宽定义在头文件graphics.!!中,表1-10和1-11分别列出了参数的
取值与含义。表1-10线型名 称取值含义SOLID_LINE0实线DOTTED_LINE1点线CNTER_LINE2中心线DASHED_LINE3虚线USERBIT_LINE4用户自定义线型表1-11线宽名 称取值说明NORM_WIDTH(常宽)1ー个像素宽(缺省值)THICK_WIDTH(加宽)3三个像素宽这个函数的头文件是graphics,h
返回值:无例:下面的程序显示了BC中所提供的线型图样:#include<graphics.h>
voidmain()(
intdriver,mode;
driver=DETECT;mode=0;initgraph(&driver,&modeド);
for(i=0;i<4;i++){setlinestyle(i,O,1);line。・50,20〇,i*50+60,200)
)getch();restorecrtmode();
}getlinesettings()获取线型设置函数功能:函数getlinesettings。用当前设置的线型、线图样和线宽填写linesettingstype型结
构。用法:函数调用方式为voidgetlinesett
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 环保化验考试试题及答案
- 辐射考试试题讲解及答案
- 安吉员工考试试题及答案
- 格力考试试题及答案
- 青海公务员试题及答案
- 防水施工技术培训试题答案
- 2025年个人租赁合同范本
- 2025《人力资源外包服务合同》
- 2025至2031年中国无线多媒体演讲鼠标行业投资前景及策略咨询研究报告
- 四川省资阳市 2023-2024学年高一上学期1月阶段测试数学试题 含解析
- 高大支架坍塌事故原因分析及预防措施
- 跨境数据传输与安全保护
- 制衣厂安全隐患排查项目清单及排查表
- ISO13485质量管理手册
- 辩论赛PPT模板模板
- 发电厂贮灰场突发环境事件应急预案
- 2023年高考全国乙卷作文“一花独放不是春百花齐放春满园”写作
- 建材公司质量管理手册(模板范文)
- 钳工中级知识培训课件
- GB/T 42706.2-2023电子元器件半导体器件长期贮存第2部分:退化机理
- 高考语文新题型+“文学短评”相关写作(真题+技法+练习)
评论
0/150
提交评论