C語(yǔ)言圖形編程一_第1頁(yè)
C語(yǔ)言圖形編程一_第2頁(yè)
C語(yǔ)言圖形編程一_第3頁(yè)
C語(yǔ)言圖形編程一_第4頁(yè)
已閱讀5頁(yè),還剩53頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

C語(yǔ)言圖形編程(一、字符屏幕)ー、屏幕操作函數(shù)clrscr。淸除字符窗口函數(shù)window。字符窗口函數(shù)gotoxy()光標(biāo)定位函數(shù)clreol。清除光標(biāo)行尾字符函數(shù)insline。插入空行函數(shù)delline。刪除一行函數(shù)gettext??竭M(jìn)文字函數(shù)puttext??匠鑫淖趾瘮?shù)movetext。移動(dòng)文字函數(shù)二、字符屬性函數(shù)textmode。文本模式函數(shù)highvideo。高亮度函數(shù)lowvideo。低亮度函數(shù)normvideo(void);textcolor。文本顏色函數(shù)textattr。文本屬性函數(shù)textbackground()文本背景函數(shù)三、屏顯狀態(tài)函數(shù)wherex。光標(biāo)處x坐標(biāo)函數(shù)whereyO光標(biāo)處y坐標(biāo)函數(shù)gettextinfb。獲取文本窗口信息函數(shù)在BorlandC++里面提供了字符屏幕和圖形函數(shù)。字符屏幕的核心是窗口(Window),它是屏幕的活動(dòng)部分,字符輸出或顯示在活動(dòng)窗口中進(jìn)行。窗口在缺省時(shí),就是整個(gè)屏幕。窗口可以根據(jù)需要指定其大小。同樣,對(duì)圖形函數(shù)的操作,也提供了(Viewport)。也就是說(shuō)圖形函數(shù)的操作都是在視口上進(jìn)行。圖形視口與字符窗口具有相同的特性,用戶可以在屏幕上定義大小不同的視ロ,若不定義視口大小,它就是整個(gè)屏幕。窗口是在字符屏幕ド的概念,只有字符才能在窗口中顯示出來(lái),這時(shí)用戶可以訪問(wèn)的最小單位為ー個(gè)字符。視口是在圖形屏幕狀態(tài)下的概念,文本與圖形都可以在視口上顯示,用戶可訪問(wèn)的最小單位是ー個(gè)像素(像素這一術(shù)語(yǔ)最初用來(lái)指顯示器上最小的、單獨(dú)的發(fā)光點(diǎn)單元。然而現(xiàn)在,其含義拓寬為指圖形顯示器上的最小可訪問(wèn)點(diǎn))。字符和圖形狀態(tài)下,屏幕上的位置都是由它們的行與列所決定的。有一點(diǎn)須指出:字符狀態(tài)左上角坐標(biāo)為(1,1),但圖形左上角坐標(biāo)為(0,0)。了解字符屏幕和圖形函數(shù)與窗口和視口的關(guān)系是很重要的。例如,字符屏幕光標(biāo)位置函數(shù)gotoxy()將光標(biāo)移到窗ロ的x,y位置上,這未必是相對(duì)于整個(gè)屏幕。下面介紹常用的幾類字符屏幕函數(shù)的功能用途、操作方法及其例行程序。ー、屏幕操作函數(shù)編寫程序繪圖經(jīng)常要用到對(duì)字符屏幕進(jìn)行操作。例如,在往屏幕上寫字符之前,首先要將屏幕淸除干凈。又如,有時(shí)需要在屏幕上多處寫上肉中刺樣的字符內(nèi)容,這時(shí)最好用屏幕拷貝來(lái)高效率地完成這一任務(wù)。對(duì)這些操作,BorlandC++提供了一系列字符屏幕操作函數(shù)來(lái)實(shí)現(xiàn)。clrscr。清除字符窗口函數(shù)功能:函數(shù)clrscr()清除整個(gè)當(dāng)前字符窗口,并且把光標(biāo)定位于左上角(1,1)處。用法:此函數(shù)調(diào)用方式為voidclrscr(void);說(shuō)明:括號(hào)中void表示無(wú)參數(shù)。該函數(shù)相應(yīng)的頭文件為conio.h返回值:無(wú)例:使用這個(gè)函數(shù)的例子見(jiàn)4.clreol()函數(shù)的實(shí)例中。window。字符窗口函數(shù)功能:函數(shù)window。用于在指定位置建立一個(gè)字符窗口。用法:此函數(shù)調(diào)用方式為voidwindow(intleft,inttop,intright,intbottom);說(shuō)明:函數(shù)中參數(shù)left,top為窗口左上角坐標(biāo);right,bottom為其右下角坐標(biāo)。若有一個(gè)坐標(biāo)是無(wú)效的,則window。函數(shù)不起作用。??旦該函數(shù)調(diào)用成功,那么所有定位坐標(biāo)都是相對(duì)于窗口的,而不是相對(duì)于整個(gè)屏幕。但是建立窗口所用的坐標(biāo)總是相對(duì)整個(gè)屏幕的絕對(duì)坐標(biāo),而不是相對(duì)當(dāng)前窗口的相對(duì)坐標(biāo)。這樣用戶就可以根據(jù)各種需要建立多個(gè)互不嵌套的窗口。此函數(shù)的頭文件為conio.ho返回值:無(wú)例:調(diào)用這個(gè)函數(shù)的實(shí)現(xiàn)例見(jiàn)3.gotoxy。函數(shù)的例子中。gotoxy。光標(biāo)定位函數(shù)功能:函數(shù)gotoxy。將字屏幕上的光標(biāo)移到當(dāng)前窗口指定的位置上。用法:這個(gè)函數(shù)調(diào)用方式為voidgotoxy(intx,inty);說(shuō)明:括號(hào)里x,y是,光標(biāo)定位的坐標(biāo),如果其中一個(gè)坐標(biāo)值無(wú)效(如坐標(biāo)超界),那么光標(biāo)不會(huì)移動(dòng)。此函數(shù)在字符狀態(tài)(有時(shí)稱為文本狀態(tài))下經(jīng)常用到,其相應(yīng)的頭文件為conio.h返回值:無(wú)例:下面程序建立兩個(gè)窗口,然后在窗ロ里顯示字符,字符的位置是調(diào)用該函數(shù)確定的。#include"conio.h>voidborder(intstartx,intstarty,intendx,intendy){registerinti;gotoxy(l,l);for(i=0;i<=endx-startx;i++)putch('-');gotoxy(1,endy-starty);fbr(i=O;i<=endx-startx;i-i-+)putch(し’);fbr(i=2;i<=endy-starty;i-H-){gotoxy(l,i);putch(*r);gotoxy(endx-startx+l,i);putch(T);main(){voidbordcr(int,int,int,int);clrscr();window(6,8,38,12);border(6,8,38,12);gotoxy(2,2);printf(Mwindow1H);window(8,16,40,24);border(8,16,40,24);gotoxy(3,2);printffwindow2");getch();}clreol()清除光標(biāo)行尾字符函數(shù)功能:函數(shù)clreol()在當(dāng)前字符窗口中清除從光標(biāo)位置到行尾的所有字符,而光標(biāo)位置保持不變。用法:它的調(diào)用方式為voidclreol(void);說(shuō)明:此函數(shù)的相應(yīng)頭文件為conio.h返回值:無(wú)例:程序中使用了函數(shù)clreol()和clrscr()#include"conio.hAvoidmain(){registerinti;gotoxy(6,8);printff'Thisisatestoftheclreol()function.**);getch();gotoxy(6,8);clreol();fbr(i=0;i<20;i-H-)printf(**Hello\n**);getch();clrscr();insline()插入空行函數(shù)功能:函數(shù)insline()插入一空行到當(dāng)前光標(biāo)所在行上,同時(shí)光標(biāo)以下的所有行都向下順移一行。用法:此函數(shù)的調(diào)用方式為voidinsline(void);說(shuō)明:該函數(shù)只用于文本方式,并且在當(dāng)了符窗口才有效。這個(gè)函數(shù)的對(duì)應(yīng)頭文件是conio.h返回值:無(wú)例:程序給出了insline。函數(shù)的用法。#include"conio.h"voidmain()(registserinti;clrscr();for(i=l;i<24;i++)(gotoxy(l,i);printff'Thisisline%d\n",i);}getch();gotoxy(l,10);insline();getch();}delline()刪除一行函數(shù)功能:函數(shù)delline()刪除當(dāng)前窗口內(nèi)光標(biāo)所在行,同時(shí)把該行下面所有行都ヒ移ー行。用法:此函數(shù)調(diào)用方式為voiddelline(void);說(shuō)明:注意,如果當(dāng)前窗口小于整個(gè)屏幕,那么該函數(shù)只影響到窗口內(nèi)的字符。這個(gè)函數(shù)相應(yīng)的頭部文件是conio.h返回值:無(wú)例:先在屏幕上顯示16行文字,然后刪除第4行#include"conio.h"voidmain(){registerinti;clrscr();for(i=0;i<16;i++)printf("line%d\n",i);getch();gotoxy(l,4);delline();getch();gettext()拷進(jìn)文字函數(shù)功能:函數(shù)gettext。用于文本狀態(tài)下將屏幕上矩形域內(nèi)的文字拷進(jìn)內(nèi)存。用法:該函數(shù)調(diào)用方式為intgettext(intlefi,inttop,intright,intbottom,void*bufifer);說(shuō)明:函數(shù)中參數(shù)left,top為矩形區(qū)域的左上角坐標(biāo),right,bottom為其右下角坐標(biāo),這些坐標(biāo)是屏幕的絕對(duì)坐標(biāo),不是窗口的相對(duì)坐標(biāo)。buffer指針必須指向一個(gè)足夠保存該矩形域內(nèi)文字的內(nèi)存。所用內(nèi)存大小按下式計(jì)算:點(diǎn)頭用字節(jié)數(shù)=矩形哉內(nèi)的行數(shù)x矩形域的列數(shù)x2這里將行數(shù)乘以列數(shù)再乘以2的原因是保存屛幕上每個(gè)字符要用兩個(gè)字節(jié)存儲(chǔ)單元,ー個(gè)字節(jié)存儲(chǔ)單元存放字符本身,而另ー個(gè)存放其屬性。此函數(shù)相應(yīng)的頭文件是conio.h返回值:若函數(shù)調(diào)用成功則返回1,否則返順0。例:把屏幕左上角點(diǎn)(1,1)和右下角點(diǎn)(10,10)的區(qū)域拷貝到buf指向的內(nèi)存中去。buf=(char*)malloc(10*10*2);if(!buf)gettext(1,1,10,10,buf);puttext()拷出文字函數(shù)功能:函數(shù)puttext()把先前'由gettext()保存到buffer指向的內(nèi)存中的文字拷出到屏幕上一個(gè)矩形區(qū)域中。用法:此函數(shù)調(diào)用方式為intputtext(intleft,inttop,intright,intbottom,void*bufier);說(shuō)明:函數(shù)里left,top為給出的屏幕上矩形區(qū)域的左上角點(diǎn),right,bottom為其右下角點(diǎn),其坐標(biāo)是用屏幕的絕對(duì)坐標(biāo),而不是用窗口的相對(duì)坐標(biāo)。該函數(shù)相應(yīng)的頭文件為conio.h返回值:函數(shù)調(diào)用成功返回值為1,否則返回0。例:屏幕上某個(gè)區(qū)域內(nèi)容拷進(jìn)buf指向的內(nèi)存中,然后又將這些文字拷出到屏幕上新位置。buf=(char*)malloc(10*l0*2);gettext(1,1,10,10,buf);puttext(16,16,30,30,buf);movetext()移動(dòng)文字函數(shù)功能:函數(shù)movetext。將屏幕上一個(gè)矩形區(qū)域的文字移到另一個(gè)區(qū)域上。用法:該函數(shù)調(diào)用方式為intmovetext(intleft,inttop,intright,intbottom,intnewleft,intnewtop);說(shuō)明:上面left,top為矩形區(qū)域上角坐標(biāo),right,bottom為其右下角坐標(biāo),newleft,newright為移動(dòng)到區(qū)域左上角坐標(biāo)。這些坐標(biāo)是屏幕的絕對(duì)坐標(biāo),不是窗口的相對(duì)坐標(biāo)。若要把屏幕上一段文字移到屏幕的另一位置,那么使用movetext。函數(shù)比用gettext。然后再用puttext()效率更高。此函數(shù)相應(yīng)的頭文件是conio.h返回值:如果有一個(gè)以上坐標(biāo)無(wú)效,那么函數(shù)返回值為〇,否則返回1。列:把屏幕左上角點(diǎn)(8,8),右下角點(diǎn)(20,20)的矩形區(qū)域文字移動(dòng)到左上角點(diǎn)(10,10)的位置上:movetext(8,8,20,20,10,10);textmode()文本模式函數(shù)功能:函數(shù)textmode。針屏幕設(shè)置為文本模式(或者說(shuō)字符狀態(tài))。用法:函數(shù)調(diào)用方式為voidtextmode(intmode);說(shuō)明:參數(shù)mode必須為表!-2中所示的模式之一⑴以用模式名(符號(hào)值),也可以用其等價(jià)的整數(shù)值。表1-2文本模式模式名(符號(hào)值)等價(jià)整數(shù)值說(shuō)明BW40C40BW80C80MONOLASTMODE0 40列黑白40列彩色80列黑白80列彩色7 80列單色-1 上次模式調(diào)用該函數(shù)后,屛幕復(fù)位,并且所有字符的屬性恢復(fù)其缺省值。此函數(shù)對(duì)應(yīng)的頭文件是conio.h返回值:無(wú)例:把屏幕設(shè)置為80列彩色模式textmode(C80);二、字符屬性函數(shù)用戶可以設(shè)置字符顯示的高亮度或低亮度的寫的符閃爍及其背景顏色等。具有這些操作的函數(shù)稱為字符屬性函數(shù)。除了僅支持單模式和單色的顯示卡外,字符屬性函數(shù)適用于其余所有的顯示卡。highvideo。高亮度函數(shù)功能:函數(shù)highvideo()設(shè)置屏幕為髙亮度顯示。用法:此函數(shù)調(diào)用方式為voidhighvideo(void);說(shuō)明:調(diào)用該函數(shù)后,寫到屏幕上的字符是高亮度的。此函數(shù)只適用于文本模式狀態(tài)(或說(shuō)字符屏幕狀態(tài))。這個(gè)函數(shù)對(duì)應(yīng)的頭文件為conio.h返回值:無(wú)例:設(shè)置屏幕顯示為高亮度的。highvideo();lowvideo()低亮度函數(shù)功能:函數(shù)lowvideo()設(shè)置屏幕為低亮度顯示。用法:該函數(shù)調(diào)用方式為voidlowvideo(void);說(shuō)明:調(diào)用該函數(shù)后,此時(shí)寫到屏幕上的字符是低亮度的。這個(gè)函數(shù)只適用于文本模式狀態(tài)(或說(shuō)字符屏幕狀態(tài))。此函數(shù)相應(yīng)的頭文件是conio.h返回值:無(wú)例:設(shè)置屏幕顯示為低亮度的

lowvideo();normvideo(void);功能:函數(shù)normvideo()設(shè)置屏幕為正常亮度顯示。用法:這個(gè)函數(shù)調(diào)用方式為voidnormvideo(void);說(shuō)明:調(diào)用該函數(shù)后,此時(shí)寫到屏幕上的字符是正常亮度的,該函數(shù)只適用于文本模式狀態(tài)(或說(shuō)字符狀屏幕狀態(tài))。此函數(shù)相應(yīng)的頭文件為conio.h返回值:無(wú)例:設(shè)置屏幕顯示為正常亮度。normvideo();textcolor()文本顏色函數(shù)功能:函數(shù)textcolor。設(shè)置字符屏幕下文本顏色(或字符顏色),它也可以用于使字符閃爍。用法:這個(gè)函數(shù)調(diào)用方式為voidtextcolor(intcolor);說(shuō)明:函數(shù)中參數(shù)color的有效值可取表!-3中的顏色名(即宏名)或等價(jià)值。表!-3顏色名與等價(jià)值名等價(jià)值BLACK0BLUE 名等價(jià)值BLACK0BLUE 1GREEN2CYAN 3RED4MAGENTABROWNLIGHTGRAYDRAKGRAYLIGHTBLUELIGHTGREENLIGHTCYANLIGHTRED5789101112LIGHTMAGENTAYELLOW14WHITE 15BLINK 128含義藍(lán)綠青紅洋紅棕淡灰深灰淡藍(lán)淡綠

淡青淡紅13淡洋紅黃白閃爍textcolor()函數(shù)執(zhí)行后,只影響其后輸出探險(xiǎn)符顏色,而不改變已經(jīng)在當(dāng)前屏幕上的其它字符顏色。顯然,如果需要輸出的字符閃爍,只要將函數(shù)中參數(shù)color取為BLINK即可,如果要使字符帶顏色閃爍,就必須將所選的顏色值與128作“或”運(yùn)算。此函數(shù)相應(yīng)的頭文件是conio.h返回值:無(wú)例:下面程序段中第一條語(yǔ)句使輸出的字符閃爍,第三條語(yǔ)句使字符輸岀為經(jīng)色同時(shí)閃爍:textcolor(BLINK);printfC'hello");textcolor(RED|BLINK);textattr()文本屬性函數(shù)功能:函數(shù)textattr()用于設(shè)置文本屬性,即字符背景顏色、字符本身顏色和字符閃爍與否。用法:函數(shù)調(diào)用方式為voidtextattr(intattribute);說(shuō)明:設(shè)置字符背景顏色屬性字節(jié)的最簡(jiǎn)單方法是,用所選的背景顏色值乘以16再與字符顏色值作按位或(OR)運(yùn)算。例如需要紅色背景、綠色字符,就設(shè)置成RED*16|GREEN,若還要字符閃爍,就把背景顏色值、字符顏色值與閃爍值ー起按位作或運(yùn)算。如藍(lán)背景、黃字符且閃爍,就設(shè)置成為:YELLO|128|BLUE*16第0位用于設(shè)置字符顏色。此函數(shù)相應(yīng)的頭文件為conio.h返回值:無(wú)例:設(shè)置背景為藍(lán)色、字符為紅色并且字符閃爍:textattr(RED|128|BLUE*16);textbackground()文本背景函數(shù)功能:函數(shù)textbackground。設(shè)置字符屏幕下文本背景顏色(或字符背景顏色)。用法:此函數(shù)調(diào)用方式為voidtextbackground(intbcolor);說(shuō)明:參數(shù)bcolor的有效值取表1イ背景顏色(即宏名)或等價(jià)值。表1-4背景顏色與等價(jià)值背景顏色等價(jià)值含義BLACK0里BLUE1藍(lán)GREEN2綠CYAN3青RED4紅MAGENTA5洋紅BROWN6棕調(diào)用該函數(shù)只影響后續(xù)寫的字符背景顏色,而不改變當(dāng)前顯示在屏幕上的字符背景顏色。這個(gè)函數(shù)對(duì)應(yīng)的頭文件是conio.h返回值:無(wú)例:設(shè)置文本背景顏色為藍(lán)色:textbackground(BLUE));三、屏顯狀態(tài)函數(shù)這里提供三個(gè)在文本模式下屏幕顯示狀態(tài)的函數(shù)wherex()光標(biāo)處x坐標(biāo)函數(shù)功能:函數(shù)wherex()返回當(dāng)前窗口中光標(biāo)處橫向坐標(biāo)。用法:此函數(shù)調(diào)用方式為intwherex(void);說(shuō)明:這個(gè)函數(shù)調(diào)用無(wú)參數(shù),其對(duì)應(yīng)的頭文件是conio.h返回值:函數(shù)調(diào)用成功,返回光標(biāo)處x坐標(biāo)值。例:調(diào)用這個(gè)函數(shù)的實(shí)例見(jiàn)18.wherey()函數(shù)的例中。wherey()光標(biāo)處y坐標(biāo)函數(shù)功能:函數(shù)wherey()返回當(dāng)前窗口中光標(biāo)處縱向坐標(biāo)。用法:該函數(shù)調(diào)用方式為intwherey(void);說(shuō)明:此函數(shù)調(diào)用無(wú)參數(shù),其相應(yīng)的頭文件是conio.h返回值:函數(shù)調(diào)用成功,返回光標(biāo)處y坐標(biāo)值。例:調(diào)作函數(shù)wherex()與whereyO,返回當(dāng)前光標(biāo)處x坐標(biāo)與y坐標(biāo),并賦給整型變量xpos,yposointxpos,ypos;xpos=wherex();ypos=wherey();gettextinfo()獲取文本窗口信息函數(shù)功能:函數(shù)gettextinfo。獲取當(dāng)前文本窗口信息,并存放在實(shí)參結(jié)構(gòu)中。用法:函數(shù)調(diào)用方式為voidgettextinfb(structtext-infb*info);說(shuō)明:函數(shù)中參數(shù)infb為structtext-info結(jié)構(gòu)型指針,structtext?info結(jié)構(gòu)在此函數(shù)相應(yīng)的頭文件中定義為:structtext-infb{unsignedcharwinleft; /Z窗口左上角x坐標(biāo)unsignedcharwintop; 〃窗口左上角y坐標(biāo)unsignedcharwinright; /Z窗口右下角x坐標(biāo)unsignedcharwinbottom;/Z窗口右下角y坐標(biāo)unsignedcharattribute;/Z文本屬性u(píng)nsignedcharnormattr;//正常屬性u(píng)nsignedcharcurrmode;/Z當(dāng)前屏顯模式unsignedcharscreenhight//文本窗口高度(以行數(shù)計(jì))unsignedcharscreenwidth;//文本窗口寬度(以字符個(gè)數(shù)計(jì))unsignedcharcurx; //光標(biāo)處x坐標(biāo)unsignedcharcury; //光標(biāo)處y坐標(biāo)};記住,調(diào)用函數(shù)gettextinfo。時(shí),要傳遞structtext-info結(jié)構(gòu)型指針或該結(jié)構(gòu)的首地址,不要傳遞結(jié)構(gòu)變量本身。這個(gè)函數(shù)對(duì)應(yīng)的頭文件是conio.h返回值:返回文本窗口角點(diǎn)坐標(biāo)、高寬度、文本屬性等值,并存放在infb所指向的結(jié)構(gòu)變量中。例:程序語(yǔ)句說(shuō)明如何正確調(diào)用gettextinfo()函數(shù):structtext-infowin-status;gettextinfo(&win-status);C語(yǔ)言圖形編程(二、圖形顯示)ー、確定顯示卡二、選擇顯示模式三、圖形顯示detectgraph()顯示卡檢測(cè)函數(shù)initgraph()圖形初始化函數(shù)getdrivemame()獲取圖形驅(qū)動(dòng)程序名的指針getgraphmode()獲取圖形模式函數(shù)getmoderange()獲取模式值范圍函數(shù)getmaxmode。獲取最大顯示模式函數(shù)getmodename。獲取顯示模式名函數(shù)graphdefaults()圖形設(shè)置復(fù)位缺省值函數(shù)setgraphmode()設(shè)置圖形模式函數(shù)restorecrtmode。恢復(fù)文本顯示模式函數(shù)graphresult()圖形操作結(jié)果函數(shù)grpaherrormsgO圖形錯(cuò)誤信息函數(shù)setgraphbufsize。設(shè)置圖形緩沖區(qū)大小函數(shù)setactivepage()設(shè)置可輸出顯示頁(yè)函數(shù)setvisualpage()設(shè)置可見(jiàn)顯示頁(yè)數(shù)closegr叩h()關(guān)閉圖形模式函數(shù)ー、確定顯示卡微機(jī)系統(tǒng)顯示部分由顯示器(monitor)和顯示卡(adapter)兩部分組成。顯示器是獨(dú)立于主機(jī)的ー種外部設(shè)備,顯示卡或稱顯示適配卡,也有的稱圖形卡,是插在主機(jī)上的ー塊電路板。但也有的顯示卡與主機(jī)板設(shè)計(jì)在ー起。顯示卡包括寄存器組、存儲(chǔ)器和控制電路三大部分。其中存儲(chǔ)器又包括顯示RAM和ROMBIOS兩部分,微機(jī)對(duì)顯示屏幕的所有操作都是通過(guò)顯示卡來(lái)實(shí)現(xiàn)的。因此要進(jìn)行圖形顯示,首先要確定計(jì)算機(jī)上安裝的是何種顯示卡。ー種方法是詢問(wèn)計(jì)算機(jī)或終端使用者,確定將要使用的顯示卡類型。這種方法很難,因?yàn)樯踔翆I(yè)程序員也不總是能確定他正在使用什么樣的硬件。另ー種方法是用軟件查詢硬件以識(shí)別當(dāng)前的配置。如果有一些識(shí)別硬件的標(biāo)準(zhǔn),這就很簡(jiǎn)單了。在BorlandC中對(duì)現(xiàn)在所使用的各種顯示卡提供了支持,這只要調(diào)用detcctgraph。函數(shù)就可以了,該函數(shù)為程序員確定計(jì)算機(jī)上使用的顯示卡類型。二、選擇顯示模式顯示模式是指顯示卡支持的分辨率與相應(yīng)的顏色配置。每臺(tái)計(jì)算機(jī)都配置了某種類型顯示卡,可以為該顯示卡指定顯示模式。三、圖形顯示進(jìn)行圖形顯示首先要確定顯示卡,然后選擇其顯示模式。這些工作都可以調(diào)用圖形功能函數(shù)來(lái)完成,其實(shí)就是把適合于顯示卡的圖形驅(qū)動(dòng)程序裝入內(nèi)存。如果圖形驅(qū)動(dòng)程序未裝入內(nèi)存,那么圖形函數(shù)就不能操作。detectgraph()顯示卡檢測(cè)函數(shù)功能:函數(shù)detectgraph()在計(jì)算機(jī)上安裝有顯示卡的情況下,測(cè)定其顯示卡的類型。用法:此函數(shù)調(diào)用方式為voiddetectgraph(int*driver,int*mode);說(shuō)明:函數(shù)把driver所指向的整型變量設(shè)置為圖形驅(qū)動(dòng)程序的代碼,把mode所指向的整型變量設(shè)置為顯示卡支持的最高有效模式(即該顯示卡能支持的最高分辨率)。該函數(shù)相應(yīng)的頭文件為graphics.h返回值:返回適合于該顯示卡的圖形驅(qū)動(dòng)程序的代碼(也稱等價(jià)值),并存放在driver指向的變量中。若計(jì)算機(jī)系統(tǒng)中無(wú)圖形硬件,則由driver指向的變量設(shè)置為ー2。例:檢測(cè)計(jì)算機(jī)是否裝有顯示卡:intdriver,mode;detectgraph(&driver,&mode);if(driver=-2)(printf("nographicsadapterinthecomputer");exit(l);initgraph()圖形初始化函數(shù)功能:函數(shù)initgraph()用于初始化圖形系統(tǒng),把適合的圖形驅(qū)動(dòng)程序裝入內(nèi)存,設(shè)置圖形函數(shù)所用的顯示模式。用法:該函數(shù)調(diào)用方式為voidinitgraph(int*driver,int*mode,char*path);說(shuō)明:1)函數(shù)中參數(shù)driver指向圖形驅(qū)動(dòng)程序(或者等價(jià)值)。在頭部文件graphicsj中定義了圖形驅(qū)動(dòng)程序的宏名與其等價(jià),如下:宏名等價(jià)值DETECT0CGA1MCGA2EGA3EGA644EGAMONO5IBM85146HERCMONO7ATT4008VGA9PC327010注:在現(xiàn)在的計(jì)算機(jī)中,上表中的許多顯示卡已經(jīng)過(guò)時(shí),不再使用。這樣就不必?fù)?dān)心圖形驅(qū)動(dòng)程序的準(zhǔn)確名字,而只要用其等價(jià)值即可,若使用detect(即等價(jià)值0)時(shí),initgraph()函數(shù)自動(dòng)檢測(cè)當(dāng)前計(jì)算機(jī)中裝有的顯示卡類型,并且選用最大分辨率的顯示模式。2)參數(shù)mode指向顯示模式或用等價(jià)值(風(fēng)表!-5),mode所指的值必須是有效模式之一。3)參數(shù)path指向圖形驅(qū)動(dòng)程序所在的路徑,例如path="C:\TC\BGド.若沒(méi)有指定路徑,就在當(dāng)前目錄下尋找。一-般圖形驅(qū)動(dòng)程序包含在.BGI文件中,這些文件是系統(tǒng)可以得到的。這個(gè)函數(shù)對(duì)應(yīng)的頭文件是gr叩hics.h。返回值:無(wú)例:調(diào)用initgraph。自動(dòng)檢測(cè)硬件圖形系統(tǒng),并選用最大分辨率顯示模式。initdrver,mode;driver=DETECT;mode=0;initgraph(&driver,&mode,*H,);getdrivemameO獲取圖形驅(qū)動(dòng)程序名的指針功能:函數(shù)getdrivemame。返回指向當(dāng)前圖形驅(qū)動(dòng)程序名的指針。用法:此函數(shù)調(diào)用方式為char*getdrivemame(void);說(shuō)明:本函數(shù)可以用來(lái)檢測(cè)顯示卡,但只能在initgr叩h()設(shè)置圖形驅(qū)動(dòng)程序和顯示模式之后調(diào)用。該函數(shù)相應(yīng)的頭文件為graphics.h返回值:返回一指針,指向含有當(dāng)前圖形驅(qū)動(dòng)程序名的字符串。例:顯示當(dāng)前圖形驅(qū)動(dòng)程序名:#include<graphics.h>#include<stdio.h>voidmain()|intgraphdriver=DETECT,graphmode;char*s;initgraph(&graphdriver,&graphmode,"M);s=getdrivemame();outtext("Usingdriver:");outtext(s);getch();closegraph();}getgr叩hmode。獲取圖形模式函數(shù)功能:函數(shù)getgrapgmode()返回當(dāng)前圖形模式。用法:該函數(shù)調(diào)用方式為intgetgraphmode(void);說(shuō)明:gctgraphmode()函數(shù)無(wú)參數(shù)調(diào)用。這個(gè)函數(shù)對(duì)應(yīng)的頭文件是gr叩hics.h返回值:返回initgraph()或setgr叩hmodc()所設(shè)置的當(dāng)前圖形模式值。例:顯示當(dāng)前圖形模式的代碼:printfl(ngraphicsmodeis%dn,gctgraphmode());getmoderange。獲取模式值范圍函數(shù)功能:函數(shù)getmoderange。返回指定的圖形驅(qū)動(dòng)程序能夠支持的最低和最高模式值。用法:函數(shù)調(diào)用方式為voidgetmoderange(intdriver,int*lowmode,inthimode);說(shuō)明:參數(shù)driver是用來(lái)調(diào)用此函數(shù)時(shí),指定圖形驅(qū)動(dòng)程序等價(jià)值或宏名。其有效值如下:TOC\o"1-5"\h\zDETECT 0CGA 1MCGA 2EGA 3EGA64 4EGAMONO 5IBM8514 6HERCMONO7ATT400 8VGA 9PC3270 10注:上表中的許多顯示卡在現(xiàn)在的計(jì)算機(jī)上已經(jīng)過(guò)時(shí),僅作參考。該函數(shù)想應(yīng)的頭文件為graphics.h返回值:返回的最小和最大有效值存放在參數(shù)指針lowmode和himode分別指向的整型變量中。例:顯示當(dāng)前圖形硬件的顯示模式的范圍值:#include"graphics.hMvoidmain(){intdriver,mode;intlow,high;mode=0;initgraph(&driver,&mode,,H,);getmoderange(driver,&low,&high);printf("moderange:%d—%d,low,high);getch();rstorecrtmodeO;getmaxmode()獲取最大顯示模式函數(shù)功能:函數(shù)getmaxmode。返回當(dāng)前加載的圖形驅(qū)動(dòng)程序所支持的最大有效顯示模式。用法:函數(shù)調(diào)用方式為intgetmaxmode(void);說(shuō)明:本函數(shù)無(wú)參數(shù)調(diào)用,返回圖形驅(qū)動(dòng)程序所支持的最大顯示模式,所有圖形驅(qū)動(dòng)程序支持從0到getmaxmode。函數(shù)返回值中的任一整數(shù)值(對(duì)應(yīng)的顯示模式)。這個(gè)函數(shù)對(duì)應(yīng)的頭文件是gr叩hics.h返回值:返回圖形驅(qū)動(dòng)程序所支持的顯示模式最大值。例:顯示當(dāng)前最大顯示模式:printffThemaxmodeofthisdriveris%d\n**,getmaxmode());getmodename。獲取顯示模式名函數(shù)功能:函數(shù)getmodename()可獲取當(dāng)前圖形驅(qū)動(dòng)程序支持的指定顯示模式的名字。用法:此函數(shù)調(diào)用方式為char*getmodename(intmodecode);說(shuō)明:參數(shù)modecode為整型值。用以指定一顯示模式值調(diào)用該函數(shù)。這個(gè)函數(shù)對(duì)應(yīng)的頭文件gr叩hics.h返回值:返回指定模式值的顯示模式名。例:顯示當(dāng)前最大顯示模式名:#include<graphics.h>#include<stdio.h>voidmain(){intgraphdriver=DETECT,graphmode;intmodecode;char*s;initgraph(&graphdriver,&graphmode,H");modccodc=gctmaxmodc();s=getmodename(modecode);outtext(叮hemaxmodcnameis:");outtext(s);getch();closegraph();)graphdefaults()圖形設(shè)置復(fù)位缺省值函數(shù)功能:函數(shù)grpahdefaults。把所有圖形設(shè)置復(fù)位為它們的缺省值,這包括把圖形視ロ復(fù)位為全屏幕:當(dāng)前位置定位在。,〇:調(diào)色板、背景色和繪圖色都被復(fù)位;填充顏色、填充圖樣、文本文字和排齊方式都返回到它位的缺省值。用法:此函數(shù)調(diào)用方式為voidgraphdefoults(void);說(shuō)明:該函數(shù)無(wú)參數(shù)調(diào)用。這個(gè)函數(shù)相應(yīng)的頭文件為gr叩hics.h返回值:無(wú)例:將圖形系統(tǒng)恢復(fù)為其缺省值:graphdefaults();setgraphmode()設(shè)置圖形模式函數(shù)功能:函數(shù)setgraphmode。用當(dāng)前圖形驅(qū)動(dòng)程序有效的圖形模式調(diào)用,一旦被調(diào)用,setgraphmode。選擇ー個(gè)新的圖形模式。注意,圖形顯示模式必須事先由initgraph()初始化。用法:該函數(shù)調(diào)用方式為voidsetgraphmode(intmode);說(shuō)明:參數(shù)mode調(diào)用時(shí)為指定的模式值。此函數(shù)相應(yīng)的頭部文件是gr叩hics.h返回值:無(wú)例:把VGA圖形卡設(shè)置為VGAMED模式:setgraphmode(VGAMED);/Z圖形系統(tǒng)已經(jīng)初始化restorecrtmode()恢復(fù)文本顯示模式函數(shù)功能:函數(shù)restrecrtmode()將顯示模式恢復(fù)到調(diào)用initgraph。時(shí)檢測(cè)出的初始文本模式。用法:這個(gè)函數(shù)調(diào)用方式為voidrestorecrtmode(void);說(shuō)明:函數(shù)restorecrtmode()fnsetgraphmode。函數(shù)一起使用,可以實(shí)現(xiàn)文本與圖形顯示之間的切換。此函數(shù)對(duì)應(yīng)的頭文件為graphics.h返回值:無(wú)例:恢復(fù)顯示模式為初始文本模式:restorecrtmode();graphresult()圖形操作結(jié)果函數(shù)功能:函數(shù)gr叩hresult。函數(shù)返回最后一次圖形操作的代碼。用法:此函數(shù)調(diào)用方式為intgraphresult(void);說(shuō)明:C為圖形設(shè)置了代碼,它們是從?15到。的整數(shù)值。其含義見(jiàn)表1?6。調(diào)用該函數(shù)時(shí),出錯(cuò)狀態(tài)被復(fù)位為0,所以返回值(代碼)最好存于變量中,以供需要時(shí)檢測(cè),進(jìn)行下ー步圖形操作。圖形操作信息名稱代碼含義grOKgrNoInitGraphgrNoDetectcdgrFileNoFoundgrlnvalidDrivergrNoLoadMemgrNoScanMemgrNoFloadMemgrFontNotFoundgrNoFontMemgrlnvalidModegrErrorgrIOerrorgrlnvalidFontgrlnvalidDeviceNum0-1-46789101112131415成功沒(méi)有圖形初始化沒(méi)有檢測(cè)到圖形硬件沒(méi)有找到圖形驅(qū)動(dòng)文件無(wú)效圖形驅(qū)動(dòng)程序沒(méi)有足夠內(nèi)存裝入圖形驅(qū)動(dòng)程序Scan填充內(nèi)存不足Flood填充內(nèi)存不足沒(méi)有找到字體文件沒(méi)有足夠內(nèi)存用于裝字體文件無(wú)效圖形模式一般圖形錯(cuò)誤輸入輸出錯(cuò)誤無(wú)效字體文件無(wú)效字體號(hào)無(wú)效設(shè)備號(hào)這個(gè)函數(shù)對(duì)應(yīng)的頭部文件是graphics.h返回值:返回最后一次圖形操作結(jié)果相應(yīng)的代碼。例:調(diào)用graphresult。函數(shù)的實(shí)例見(jiàn)F面grapherrormsg。函數(shù)的例子。grpahcrrormsgO圖形錯(cuò)誤信息函數(shù)功能:函數(shù)gmpherrormsgO返回指向出錯(cuò)代碼相應(yīng)的錯(cuò)誤信息字符串的指針。用法:此函數(shù)調(diào)用方式為char*graphcrrormsg(interrcode);說(shuō)明:參數(shù)errcode值,即出錯(cuò)代碼由調(diào)用函數(shù)graphresult。獲得。這里所有出錯(cuò)代碼及相應(yīng)的錯(cuò)誤信息如表1-6中所述。該函數(shù)相應(yīng)的頭文件是grpahics.h返回值:返回一個(gè)指向該出錯(cuò)代碼相應(yīng)的錯(cuò)誤信息字符串的指針。例:用文字形式顯示有關(guān)出錯(cuò)代碼相應(yīng)的錯(cuò)誤信息:interrorcode;errorcode=graphresult();printf(%s",grapherrormsg(errcode));setgraphbufsize。設(shè)置圖形緩沖區(qū)大小函數(shù)功能:函數(shù)setgraphbufsize。用來(lái)設(shè)置有的圖形函數(shù)(如floodfil!等)所要用到的內(nèi)存緩沖區(qū)大小。用な:函數(shù)調(diào)用方式為unsignedsetgraphbufsize(unsignedbufsize);說(shuō)明:這里無(wú)符號(hào)參數(shù)bufsize為所設(shè)置的緩沖區(qū)大小。一般不需要用到該函數(shù),僅使用山initgraph()函數(shù)產(chǎn)生的內(nèi)存緩沖區(qū)就夠了,緩沖區(qū)大小缺省時(shí)為4KB(即4096個(gè)字節(jié)),足以用來(lái)填充一個(gè)大約有650個(gè)頂點(diǎn)的多邊形,但是為了節(jié)省內(nèi)存,用戶可以減少緩沖區(qū)的大小,或者由于需要更多的緩沖區(qū)內(nèi)存,這時(shí)可用函數(shù)setgraphbufsize。來(lái)增加緩沖區(qū)大小。注意,使用setgr叩hbufsize。函數(shù)必須在調(diào)用initgraph。之前。返回值:返回先前定義的圖形緩沖區(qū)字節(jié)數(shù)。例:調(diào)用此函數(shù)設(shè)置圖形緩沖區(qū)為8KB字節(jié):setgraphbufsize(0x2000);setactivepage()設(shè)置可輸出顯示頁(yè)函數(shù)功能:函數(shù)setactiveage。設(shè)置用作圖形輸出的顯示頁(yè)。用法:這個(gè)函數(shù)調(diào)用方式為voidsetactivepage(intpagenum);說(shuō)明:參數(shù)pagenum為選擇的顯示頁(yè)號(hào),如果調(diào)用成功,那么后續(xù)圖形輸出就寫到選定的輸出頁(yè)上。缺省時(shí)是以〇頁(yè)作為當(dāng)前輸出頁(yè)。該函數(shù)只在圖形驅(qū)動(dòng)程序及其顯示模式支持多個(gè)顯示頁(yè)時(shí)オ起作用。此函數(shù)相應(yīng)的頭文件為graphics.h返回值:無(wú)例:設(shè)置1頁(yè)為輸出顯示頁(yè):setactivepage(1);setvisualpage()設(shè)置可見(jiàn)顯示頁(yè)數(shù)功能:函數(shù)setvisualpage。設(shè)置屏幕上可見(jiàn)的顯示頁(yè)。用法:函數(shù)調(diào)用方式為voidsetvisualpage(intpagenum);說(shuō)明:參數(shù)pagemim為設(shè)置的顯示頁(yè)號(hào)。缺省時(shí)是以。頁(yè)作為當(dāng)前可見(jiàn)頁(yè)。調(diào)用這個(gè)函數(shù)和調(diào)用setactivepage。ー樣,僅在圖形驅(qū)動(dòng)程序及其顯示模式支持多個(gè)顯示頁(yè)時(shí)オ有效。用戶可以用系統(tǒng)所支持的任何顯示頁(yè),在它們之間切換,當(dāng)然一次只能有一個(gè)顯示頁(yè)在屏幕上可見(jiàn),有時(shí)需要在ー頁(yè)上建立后備圖形萇圖像,它在當(dāng)時(shí)不顯示,一旦需要時(shí),可以馬上切換到該頁(yè),如要實(shí)現(xiàn)動(dòng)畫效果,只需切換顯示頁(yè)號(hào)即可。用setvisualpage()函數(shù)選定實(shí)際顯示在屏幕上的可見(jiàn)頁(yè),用setactiv叩age()函數(shù)選擇當(dāng)前圖形輸出頁(yè),從而實(shí)現(xiàn)圖形頁(yè)之間的顯示切換,通常這兩個(gè)函數(shù)都是缺省的,這時(shí)輸出頁(yè)就是可見(jiàn)頁(yè)。若不繪制動(dòng)畫就不需要用到這兩個(gè)函數(shù)。這兩個(gè)函數(shù)對(duì)應(yīng)的頭文件是graphics.h返回值:無(wú)例:設(shè)置可見(jiàn)頁(yè)為第1頁(yè):setvisualpage(1);closegraph。關(guān)閉圖形模式函數(shù)功能:函數(shù)closegraph()將系統(tǒng)圖形模式關(guān)閉,,復(fù)位到initgraph()初始文本模式,并且釋放圖形驅(qū)動(dòng)程序、字體和內(nèi)部緩沖區(qū)所占用的系統(tǒng)內(nèi)存。用法:這個(gè)函數(shù)調(diào)用方式為voidclosegraph(void);說(shuō)明:當(dāng)用戶的程序既用到圖形輸出又用到非圖形輸出時(shí),應(yīng)該調(diào)用此函數(shù)。特別是程序多次調(diào)用initgraph。函數(shù)的情況,要相應(yīng)地調(diào)用closegraph函數(shù),釋放調(diào)用initgraph()所占用的內(nèi)存,否則內(nèi)存很快就滿了,程序無(wú)法運(yùn)行,如果程序結(jié)束,也可以用restorecrtmodeO函數(shù)代替該函數(shù),這樣任何分配的內(nèi)存都將釋放。此函數(shù)對(duì)應(yīng)的頭文件是graphics.h返回值:無(wú)例:關(guān)閉圖形系統(tǒng):closegraph();C語(yǔ)言圖形編程(三、繪圖函數(shù)ー01)ー、屏幕和視ロ設(shè)置與清除函數(shù)setviewport()設(shè)置圖形視ロ函數(shù)clearviewport()清除圖形視ロ函數(shù)cleardevice()清除屏幕函數(shù)getviewsettings()獲取圖形視口設(shè)置函數(shù)二、調(diào)色板和顏色函數(shù)setpalette()設(shè)置調(diào)色板函數(shù)setallpalette()設(shè)置整個(gè)調(diào)色板函setbackcolor()設(shè)置背景顏色函數(shù)setcolor()設(shè)置顏色函數(shù)gctbkcolor()返回背景色函數(shù)getcolor()返回當(dāng)前繪圖顏色getmaxcolor。返回最大顏色值函數(shù)getpalette()獲取調(diào)色板函數(shù)getpalettesize()返回調(diào)色板大小函數(shù)getdefaultpalette()獲取缺省調(diào)色板函數(shù)三、屏幕位置函數(shù)getmaxx。返回最大x坐標(biāo)函數(shù)getmaxy()返回最大y坐標(biāo)函數(shù)getx()返回x坐標(biāo)函數(shù)gety()返回y坐標(biāo)函數(shù)moveto()函數(shù)moverel()相對(duì)移動(dòng)函數(shù)BorlandCH提供了一整套綜合性的圖形函數(shù),上節(jié)介紹了其中有關(guān)圖形顯示的函數(shù),本節(jié)介紹其中的繪圖函數(shù),下節(jié)將介紹它的圖形文本函數(shù)。一般繪圖時(shí),首先要清除屏幕,設(shè)置圖形視ロ,設(shè)置繪圖顏色,然后在屏幕上某個(gè)位置畫點(diǎn)或直線或曲線等。下面給出具有這些功能的函數(shù)。ー、屏幕和視ロ設(shè)置與清除函數(shù)setviewport()設(shè)置圖形視ロ函數(shù)功能:函數(shù)setviewport。設(shè)置當(dāng)前圖形視口。用法:函數(shù)調(diào)用方式為voidsetviewport(intleft,inttop,intright,intbottom,intclip);說(shuō)明:參數(shù)left,top是左上角坐標(biāo),right,bottom是右下角坐標(biāo),它們都是絕對(duì)屏幕坐標(biāo)。傳給setviewport()的第五個(gè)參數(shù)是clip,如果clip為1,則超出視ロ的輸出圖形自動(dòng)被裁剪掉,即所有作圖限制于當(dāng)前圖形視ロ之內(nèi),如果clip為〇,則不做裁剪,即作圖將無(wú)限制地?cái)U(kuò)展于視U周界之外,直到屏幕邊界。若無(wú)效參數(shù)傳入setviewport。,則graphresult。函數(shù)返回值?11,先前視ロ設(shè)置仍有效。setviewport()函數(shù)的對(duì)應(yīng)頭文件為graphics.h返回值:無(wú)例:建立對(duì)角為(6,6)和(88,88)的視ロ,并帶有裁剪功能:setviewport(6,6,88,88,1);clearvicwport()清除圖形視ロ函數(shù)功能:函數(shù)clearviewport()清除當(dāng)前圖形視ロ,并把光標(biāo)從當(dāng)前位置移到原點(diǎn)(0,0)。用法:該函數(shù)調(diào)用方式為voidclearvicwport(void);說(shuō)明:此函數(shù)調(diào)用執(zhí)行后,當(dāng)前圖形視口將不復(fù)存在。這個(gè)函數(shù)對(duì)應(yīng)的頭文件是graphics.h返回值:無(wú)例:清除當(dāng)前圖形視ロ,但并非整個(gè)屏幕:clearviewport();cleardevice()清除屏幕函數(shù)功能:函數(shù)cleardevice()清除整個(gè)屏幕,并且將當(dāng)前位置移到屏幕原點(diǎn)。用法:此函數(shù)調(diào)用方式為voidcleardevice(void);說(shuō)明:該函數(shù)類似于文本模式下的函數(shù)clrscr(),但clrscr()函數(shù)不能在圖形方式下工作;同樣cleardevice()函數(shù)不能在文本模式下工作。這個(gè)函數(shù)相應(yīng)的頭文件為gr叩hics.h返回值:無(wú)例:清除當(dāng)前整個(gè)屏幕:cleardevice();getviewsettings()獲取圖形視口設(shè)置函數(shù)功能:函數(shù)getviewsettings。返回當(dāng)前圖形視ロ坐標(biāo)和裁剪標(biāo)志,坐標(biāo)是絕對(duì)屏幕坐標(biāo),裁剪標(biāo)志1或〇〇用法:此函數(shù)調(diào)用方式為voidgetviewscttings(structviewporttype*infb);說(shuō)明:該函數(shù)執(zhí)行后,把有關(guān)當(dāng)前視ロ的信息裝入infb指向的viewporttype型結(jié)構(gòu)中。viewporttype結(jié)構(gòu)定義如下:structviewporttype{intleft,top,right,bottom;intclipflag;這里left,top中存放視ロ左上角坐標(biāo),right,bottom中存放視ロ右下角坐標(biāo),clipflag中存放裁剪標(biāo)志,若clipflag為1,執(zhí)行裁剪以防止超出視口邊界,如果clipflag為0,則不對(duì)超出邊界輸出作裁剪。getviewsettings。函數(shù)對(duì)應(yīng)的頭文件是gr叩hics.h返回值:無(wú)例:顯示當(dāng)前視口角點(diǎn)坐標(biāo):structviewporttypeinfo;getviewscttings(&info);printfi(nleft:%dtop:%d\nn,info.left,info.top);printf(nright:%dbottom:%d\nM,info.right,info.bottom);二、調(diào)色板和顏色函數(shù)進(jìn)行圖形顯示或繪圖,除了要知道用什么顯示卡以及相應(yīng)的圖形驅(qū)動(dòng)程序外,還必須了解它們支持什么樣的調(diào)色板顏色。setpalette。設(shè)置調(diào)色板函數(shù)功能:函數(shù)sctpalctte()可對(duì)調(diào)色板上的顏色的色彩值重新設(shè)定。用法:setpalette。函數(shù)調(diào)用方式為voidsetpalette(intvalue,intcolor);說(shuō)明:參數(shù)value為色彩值,color為色彩值相應(yīng)的顏色名。當(dāng)需要將一顏色指定為一色彩值地,即可調(diào)用此函數(shù)來(lái)設(shè)置。表1-7預(yù)先定義的調(diào)色板與色彩調(diào)色板色彩〇色彩1色彩2色彩3co黑色淡綠紅淺黃色Cl黑色淡青粉紅白色C2里伊…、1__?綠色紅色棕色C3黑色青色品粉紅淡灰色這個(gè)函數(shù)相對(duì)應(yīng)的頭文件為graphics.h返回值:無(wú)setallpalette。設(shè)置整個(gè)調(diào)色板函數(shù)功能:函數(shù)setallpalette()對(duì)某個(gè)調(diào)色板上的所有顏色重新設(shè)定彩色值。用法: 函數(shù)調(diào)用方式為voidsetallpalette(structpalettetype*p);說(shuō)明:在低分辨率圖形顯示模式ド,該函數(shù)無(wú)效。若函數(shù)調(diào)用成功,則把p指向的palettctype結(jié)構(gòu)中的色彩值設(shè)置為當(dāng)前調(diào)色板所有顏色的新色彩值。palettctype結(jié)構(gòu)定義如下:structpalettetype{unsignedcharsize;signedcharcolor[16];);這里必須把size設(shè)置為調(diào)色板顏色的數(shù)目,并把每個(gè)色彩值都裝入color數(shù)組相應(yīng)元素中,然后オ可用于調(diào)用函數(shù)。此函數(shù)對(duì)應(yīng)的頭文件是graphics.h返回值:無(wú)例:把16色的EGA/VGA顯示卡調(diào)色板改為其前16種顏色:structpalettetype;inti;for(i=0;i<16;i-H-)p.color[i]=i;p.size=16;sctallpalette(&p);setbackcolor()設(shè)置背景顏色函數(shù)功能:函數(shù)setbackcolor()把當(dāng)前調(diào)色板顏色的第一個(gè)值改成指定的顏色值,以設(shè)置背景顏色。用法:此函數(shù)調(diào)用方式為voidsetbackcolor(intcolor);說(shuō)明:參數(shù)color為指定的背景色,其有效值可以是顏色符號(hào)名,也可以是色彩值。表1-8列出了背景顏色供選取。表1-8背景顏色值顏色符號(hào)名 色彩值顏色符號(hào)名 色彩值BLACK(黑色) 0DARKGRAY(深灰)8BLUE(藍(lán)色) 1LIGHTBLUE(淡藍(lán))9GREEN(綠色) 2LIGHTGREEN(淡綠)10CYAN(青色) 3LIGHTCYAN(淡青)11RED(紅色) 4L1GHTRED(淡紅)1,2MAGENTA(品紅)5 LIGHTMAGENTA(粉紅)13BROWN(棕色) 6YELLOW(黃色)14LIGHTGRAY(淡灰)7 WHITE(白色)15調(diào)用該函數(shù),將改變整個(gè)屏幕的顏色,如果新的背景色與原來(lái)屏幕的圖形顏色相同,盡管圖形信息不會(huì)丟失,但是看不見(jiàn)圖形了。如果所選背景色為對(duì)比鮮明的顏色,看不見(jiàn)的圖形就會(huì)重新清晰地顯現(xiàn)出來(lái)。這個(gè)函數(shù)的頭文件為graphics.h返回值:無(wú)例:把背景色置為淡藍(lán)色setbackcolor(LIGHTBLUE);setcolor()設(shè)置顏色函數(shù)功能:函數(shù)setcolor。設(shè)置當(dāng)前繪圖顏色(或稱做前景色)。用法:該函數(shù)調(diào)用方式為voidssetcolor(intcolor);說(shuō)明:參數(shù)color為選擇的當(dāng)前繪圖顏色。在高分辨率顯示模式下,選取的color是實(shí)際色彩值,也可以用顏色符號(hào)名表示。如果已經(jīng)搖籃函數(shù)setpalette()改變了調(diào)色板色彩值,那么符號(hào)名就不可能產(chǎn)生預(yù)期作用了。在低分辨率顯示模式(320X200)下,選取的color是調(diào)色板顏色號(hào),不是實(shí)際色彩值。此函數(shù)相應(yīng)的頭文件為graphics.h返回值:無(wú)例:設(shè)置16種不同的顏色,顯示16段直線:#include<graphics.h>voidmain(){intdriver,mode;inti;driver=DETECT;mode=0;initgraph(&driver,&mode;H,);moveto(0,200);for(i=0;i<16;i-H-)(setcolor(i);lincrel(20,0);}getch();restorecrtmode();)getbkcolor()返回背景色函數(shù)功能:函數(shù)getbackcolor()返回當(dāng)前背景顏色。用法:函數(shù)調(diào)用方式為intgetbackcolor(void);說(shuō)明:調(diào)用該函數(shù)后,獲得背景色,但其值不一定是調(diào)色板上的色彩值。這個(gè)函數(shù)對(duì)應(yīng)的頭文件是graphics.h返回值:返回當(dāng)前繪圖色彩值。例:返回當(dāng)前背景色彩值:printf("backgroundcoloris%d",getbkcolor());getcolor()返回當(dāng)前繪圖顏色用法:此函數(shù)調(diào)用方式為intgetcolor(void);說(shuō)明:對(duì)于使用彩色低分辨率顯示模式調(diào)色板,返回值是調(diào)色板顏色號(hào),而不是實(shí)際顏色值,對(duì)于高分辨率顯示模式,返回值對(duì)應(yīng)于顏色值,除非調(diào)色板顏色已被函數(shù)setpalette?;騭etallpalette。改變了。這個(gè)函數(shù)相應(yīng)的頭文件為graphics.h返回值:返回當(dāng)前繪圖顏色值。例:printff'drawingcoloris%d",getcolor());getmaxcolor。返冋最大顏色值函數(shù)用法:函數(shù)調(diào)用方式為intgetmaxcolor(void);說(shuō)明:該函數(shù)調(diào)用后,在低分辨率模式下返回值為3(這種模式下有效顏色值為0至3);在高分辨率顯示模式下返回值可以是256或更高(此模式下有效顏色值為0至256或更高)。這個(gè)函數(shù)相應(yīng)的頭文件為graphics.h返回值:返回當(dāng)前圖形模式下最大顏色值。例:顯示最大有效顏色值:#include<graphics.h>voidmain(){intdriver,mode;driver=DETECT;mode=0;initgraph(&driver,&mode,"");printfi(";largestcolor:%d",getmaxcolor());getch();restorecrtmode();)getpalette()獲取調(diào)色板函數(shù)功能:函數(shù)getpalette()將當(dāng)前調(diào)色板的值填入palettetype型結(jié)構(gòu)中。用法:getpalette()函數(shù)調(diào)用方式為voidgetpalette(structpalettetype*p);說(shuō)明:此函數(shù)調(diào)用執(zhí)行后,當(dāng)前調(diào)色板的值被裝入p指向的結(jié)構(gòu)里;從而可從該結(jié)構(gòu)中獲得這個(gè)調(diào)色板的設(shè)置信息。palettetype型結(jié)構(gòu)定義如下#defineMAXCOLORS15structpalettetype{unsignedcharsize;signedcharcolors[MAXCOLORS+1];};其中size用于存放當(dāng)前調(diào)色板的有效顏色個(gè)數(shù):colors數(shù)組的每ー元素中裝入調(diào)色板的ー個(gè)相應(yīng)顏色值。表!-9列出了這些顏色值(適用于EGA7GA)顏色符號(hào)名 色彩值EGA_BLACK(EGA黑色)0TOC\o"1-5"\h\zEGA_BLUE(EGA藍(lán)色) 1EGA_GREEN(綠色) 2EGA_CYAN(EGA青色) 3EGA_RED(紅色) 4EGA_MAGENTA(EGA品紅)5EGA_BROWN(EGA棕色) 20EGA_LIGHTGRAY(EGA淡灰)7EGA_DARKGRAY(EGA深灰) 56EGA_LIGHTBLUE(EGA淡藍(lán))57EGA_LIGHTGREEN(EGA淡綠)58EGA_LIGHTCYAN(EGA淡青)59EGA_LIGHTRED(EGA淡紅)60EGA_LIGHTMAGENTA(EGA粉紅)61EGA_YELLOW(EGA黃色)62EGA_WHITE(EGA白色)63getpalette()函數(shù)對(duì)應(yīng)的頭文件是graphics.h返回值:無(wú)例:顯示由自動(dòng)檢測(cè)所得顯示模式支持的調(diào)色板上的顏色數(shù)目:#includc<graphics.h>voidmain()(intdriver,mode;structpalettetypcp;driver=DETECT;/Z自動(dòng)檢測(cè)mode=0;initgraph(&driver,&mode,,,n);getpalette(7p);printff'numberofcolorspalette:%d",p.size);getch();restorecrtmode();}getpalettesize()返回調(diào)色板大小函數(shù)功能:函數(shù)getalettesize。返回調(diào)色板的顏色數(shù)目。用法:該函數(shù)調(diào)用方式為intgetpalettesize((void);說(shuō)明:調(diào)用這個(gè)函數(shù)后,就知道調(diào)色板上有多少顏色數(shù)目可在當(dāng)前顯示模式下設(shè)置。此函數(shù)對(duì)應(yīng)的頭文件是graphics.h返回值:返回當(dāng)前顯示模式支持的調(diào)色板的顏色數(shù)目。例:顯示當(dāng)前顯示模式支持的調(diào)色板的顏色數(shù)目。intnumber;number=getpalettesize();printff'palettesize:%dM,number);getdefaultpalette()獲取缺省調(diào)色板函數(shù)功能:函數(shù)gctdcfaultpalctte。返回指向缺省調(diào)色板的指針。用法: 該函數(shù)調(diào)用方式為structpalettetype*getdefaultpalette(void);說(shuō)明:調(diào)色板結(jié)構(gòu)類型palettetype定義如ド:#defineMAXCOLORS15structpalettetype{unsignedcharsize;signedcharcolors[MAXCOLORS+1];);在調(diào)用initgraph()初始化圖形系統(tǒng)時(shí),給調(diào)色板結(jié)構(gòu)類型變量賦值,作為缺省調(diào)色板,調(diào)用這個(gè)函數(shù)可返回指向它的指針。此函數(shù)相應(yīng)的頭部文件為graphics.h返回值:返回指向缺省調(diào)色板(結(jié)構(gòu))的指針。例:顯示圖形系統(tǒng)初始化后所支持的調(diào)色板上的各種顏色。#include<graphics.h>#include<stdio.h>#include<conio.h>#include<stdlib.h>voidmain(){intgraphdriver=DETECT,graphmode;structpalettetypc*palette;interrorcode,color;initgraph(&graphdriver,&graphmode,H,');errorcode=graphresult();i出errorcode!=grOK){printff'Graphicserror%s\nM,grapherrormsg(errorcode));exit(l);|palette=getdcfaultpalette();printff'palette?>size%d\nM,palette->size);getch();fbr(color=0;color<palette->size;coIor-H-){setfillstyle(LINE_FILL,color);bar(20*(color-l),0,20*color,20);getch();}if(palette->size>1){dosetpalette(random(palette->size),random(palette->size));while(!kbhit());getch();}setallpalette(palette);closegraph();三、屏幕位置函數(shù)在圖形模式下,字符屏幕坐標(biāo)被像素坐標(biāo)取代了,這種像素坐標(biāo)根據(jù)不同的顯示硬件,水平與垂直方向的分辨率可以從320X200變化到1280X1024等。由于分辨率的變化,以致要加載合適的圖菜驅(qū)動(dòng)程序,因此大多數(shù)圖形程序是通過(guò)檢測(cè)硬件開(kāi)始的,然后使用getmaxxO和getmaxy()等函數(shù)來(lái)決定屏幕尺寸,調(diào)整隨后的操作來(lái)適應(yīng)這些屏幕限制。getmaxx。返回最大x坐標(biāo)函數(shù)功能:函數(shù)getmaxx()返回當(dāng)前圖形模式下的最大x坐標(biāo),即最大橫向坐標(biāo)。用法:函數(shù)調(diào)用方式為intmaxx(void);說(shuō)明:此函數(shù)獨(dú)立于圖形視口設(shè)置,僅取決于顯示卡的顯示模式相應(yīng)的分辨率。這個(gè)函數(shù)對(duì)應(yīng)的頭文件是gr叩hics.h返回值:返回當(dāng)前顯示模式最大x坐標(biāo)值。例:使用本函數(shù)的例子見(jiàn)5Lgetmaxy()函數(shù)的例子中。getmaxy()返回最大y坐標(biāo)函數(shù)功能:函數(shù)getmaxy()返回當(dāng)前圖形模式下的最大y坐標(biāo),即最大縱向坐標(biāo)。用法:函數(shù)調(diào)用方式為intgetmaxy(void);說(shuō)明:此函數(shù)獨(dú)立于圖形視口設(shè)置,僅取決于顯示卡的顯示模式相應(yīng)的分辨率。這個(gè)函數(shù)對(duì)應(yīng)的頭文件為gr叩hics.h返回值:返回當(dāng)前顯示模式的最大y坐標(biāo)值。#includc<graphics.h>voidmain(){intdriver,mode;driver=DETECT;mode=0;initgraph(&driver,&mode,,M,);printff'maxx,y:%d%d,,,getmaxx(),getmaxy());getch();restorecrtmode();getx()返回x坐標(biāo)函數(shù)功能:函數(shù)getx()返回當(dāng)前圖形模式下當(dāng)前位置的x坐標(biāo)(水平像素坐標(biāo))。用法:此函數(shù)調(diào)用方式為intgctx(void);說(shuō)明:這里坐標(biāo)是相對(duì)于當(dāng)前圖形視ロ的,如果沒(méi)有設(shè)置圖形視ロ,那么缺省的圖形視ロ為整個(gè)屏幕。這類似于文本模式下使用wherex()函數(shù)。getx()函數(shù)相應(yīng)的頭文件是graphics.h返回值:返回當(dāng)前x坐標(biāo)值。例:見(jiàn)53.gety()函數(shù)中的例子。gety()返回y坐標(biāo)函數(shù)功能:函數(shù)gety()返回圖菜模式下當(dāng)前位置的y坐標(biāo)(垂直像素坐標(biāo))。用法:此函數(shù)調(diào)用方式為intgety(void);說(shuō)明:函數(shù)返回的坐標(biāo)是相對(duì)于當(dāng)前圖形視ロ的,如果沒(méi)有設(shè)置圖形視ロ,那么缺省的圖形視口為整個(gè)屏幕,這類似于文本模式下使用wherey。函數(shù)。gety()函數(shù)對(duì)應(yīng)的頭文件是graphics.h返回值:返回當(dāng)前y坐標(biāo)值。例:顯示圖形模式下當(dāng)前位置的x,y坐標(biāo)值:prin氓"x:%d,y:%d",getx(),gety());moveto()函數(shù)功能:函數(shù)moveto()將當(dāng)前位置移動(dòng)到指定坐標(biāo)的位置說(shuō)明:這相當(dāng)于文本模式下gotoxy()函數(shù)的操作,它提供對(duì)等的功能。此函數(shù)對(duì)應(yīng)的頭文件為graphics.h返回值:無(wú)例:把當(dāng)前位置移到(66,88)位置上:moveto(66,88);moverel()相對(duì)移動(dòng)函數(shù)功能:函數(shù)moverel()根據(jù)指定的偏移量,將當(dāng)前位置移動(dòng)ー個(gè)相對(duì)距離(即偏移量大小的距離),成為新的當(dāng)前位置。用法:此函數(shù)調(diào)用方式為voidmoverel(intdx,intdy);說(shuō)明:參數(shù)dx為x方向相對(duì)移動(dòng)距離dy為y方向相對(duì)移動(dòng)距離。相對(duì)移動(dòng)對(duì)圖形應(yīng)用程序,往往要比絕對(duì)移動(dòng)方便一些。這個(gè)函數(shù)對(duì)應(yīng)的頭文件是graphics.h返回值:無(wú)例:下面的程序,當(dāng)語(yǔ)句執(zhí)行到當(dāng)前位置在(90,90),則執(zhí)行后將移動(dòng)到(100,120)的位置上。即x方向相對(duì)移動(dòng)10,y方向相對(duì)移動(dòng)30:moverel(10,30);四、圖形和圖像函數(shù)(一)像素函數(shù)putpiel()畫像素點(diǎn)函數(shù)gctpixel。返回像素色函數(shù)(二)直線和線型函數(shù)line()畫線函數(shù)lineto()畫線函數(shù)linerel()相對(duì)畫線函數(shù)setlinestyle()設(shè)置線型函數(shù)gctlincscttings()獲取線型設(shè)置函數(shù)setwritemode()設(shè)置畫線模式函數(shù)(三)、多邊形函數(shù)rectangle()畫矩形函數(shù)bar()畫條函數(shù)bar3d()畫條塊函數(shù)drawpoly()畫多邊形函數(shù)(四)、圓、弧和曲線函數(shù)getaspcctratio。獲取縱橫比函數(shù)circle。畫圓函數(shù)arc。畫圓弧函數(shù)ellipse。畫橢圓弧函數(shù)fillellipse。畫橢圓區(qū)函數(shù)pieslice。畫扇區(qū)函數(shù)sector。畫橢圓扇區(qū)函數(shù)getarccoords。獲取圓弧坐標(biāo)函數(shù)(五)、填充函數(shù)setfillstyle。設(shè)置填充圖樣和顏色函數(shù)setfillpattem()設(shè)置用戶圖樣函數(shù)floodfillO填充閉域函數(shù)fillpoly。填充多邊形函數(shù)getfillsettings。獲取填充設(shè)置函數(shù)getfillpattem。獲取用戶圖樣設(shè)置函數(shù)(六)、圖像函數(shù)imagesize。圖像存儲(chǔ)大小函數(shù)getimage。保存圖像函數(shù)putimage()輸出圖像函數(shù)C語(yǔ)言圖形編程(三、繪圖函數(shù)一〇2)A四、圖形和圖像函數(shù)對(duì)許多圖形應(yīng)用程序,直線和曲線是非常有用的。但對(duì)有些圖形只能靠操作單個(gè)像素才能畫出。當(dāng)然如果沒(méi)有畫像素的功能,就無(wú)法操作直線和曲線的函數(shù)。而且通過(guò)大規(guī)模使用像素功能,整個(gè)圖形就可以保存、寫、擦除和與屏幕上的原有圖形進(jìn)行疊加。(一)像素函數(shù)putpixel()畫像素點(diǎn)函數(shù)功能:函數(shù)putpixel()在圖形模式下屏幕上畫一個(gè)像素點(diǎn)。用法:函數(shù)調(diào)用方式為voidputpixel(intx,inty,intcolor);說(shuō)明:參數(shù)x,y為像素點(diǎn)的坐標(biāo),color是該像素點(diǎn)的顏色,它可以是顏色符號(hào)名,也可以是整型色彩值。此函數(shù)相應(yīng)的頭文件是graphics.h返回值:無(wú)例:在屏幕上(6,8)處畫一個(gè)紅色像素點(diǎn):putpixel(6,8,RED);getpixel。返回像素色函數(shù)功能:函數(shù)getpixel()返回像素點(diǎn)顏色值。用法:該函數(shù)調(diào)用方式為intgetpixel(intx,inty);說(shuō)明:參數(shù)x,y為像素點(diǎn)坐標(biāo)。函數(shù)的返回值可以不反映實(shí)際彩色值,這取決于調(diào)色板的設(shè)置情況(參見(jiàn)setpalette。函數(shù))。這個(gè)函數(shù)相應(yīng)的頭文件為graphics.h返回值:返回一個(gè)像素點(diǎn)色彩值。例:把屛幕上(8,6)點(diǎn)的像素顏色值賦給變量color.color=getpixel(8,6);(二)直線和線型函數(shù)有三個(gè)畫直線的函數(shù),即line(),lineto(),linerel().這些直線使用整型坐標(biāo),并相對(duì)于當(dāng)前圖形視ロ,但不一定受視ロ限制,如果視ロ裁剪標(biāo)志clip為真,那么直線將受到視ロ邊緣截?cái)?如果clip為假,即使終點(diǎn)坐標(biāo)或新的當(dāng)前位置在圖形視U或屏幕極限之外,直線截?cái)嗟狡聊粯O限。有兩種線寬及幾種線型可供選擇,也可以自己定義線圖樣。下面分別介紹直線和線型函數(shù)。line()畫線函數(shù)功能:函數(shù)line()使用當(dāng)前繪圖色、線型及線寬,在給定的兩點(diǎn)間畫一直線。用法:該函數(shù)調(diào)用方式為voidline(intstartx,intstarty,intendx,intendy);說(shuō)明:參數(shù)startx,starty為起點(diǎn)坐標(biāo),endx,endy為終點(diǎn)坐標(biāo),函數(shù)調(diào)用前后,圖形狀態(tài)下屏幕光標(biāo)(一般不可見(jiàn))當(dāng)前位置不改變。此函數(shù)相應(yīng)的頭文件為graphics.h返回值:無(wú)例:見(jiàn)函數(shù)60.1inerel()中的實(shí)例。lineto()畫線函數(shù)功能:函數(shù)lineto()使用當(dāng)前繪圖色、線型及線寬,從當(dāng)前位置畫一直線到指定位置。用法:此函數(shù)調(diào)用方式為voidlineto(intx,inty);說(shuō)明:參數(shù)x,y為指定點(diǎn)的坐標(biāo),函數(shù)調(diào)用后,當(dāng)前位置改變到指定點(diǎn)(x,y)。該函數(shù)對(duì)應(yīng)的頭文件為graphics.h返回值:無(wú)例:見(jiàn)函數(shù)60.1inerel()中的實(shí)例。1inerel()相對(duì)畫線函數(shù)功能:函數(shù)linerel。使用當(dāng)前繪圖色、線型及線寬,從當(dāng)前位置開(kāi)始,按指定的水平和垂直偏移距離畫一直線。用法:這個(gè)函數(shù)調(diào)用方式為voidlinerel(intdx,intdy);說(shuō)明:參數(shù)dx,dy分別是水平偏移距離和垂宜偏移距離。函數(shù)調(diào)用后,當(dāng)前位置變?yōu)樵黾悠凭嚯x后的位置,例如,原來(lái)的位置是(8,6),調(diào)用函數(shù)linerel(10,18)后,當(dāng)前位置為(18,24)。返回值:無(wú)例:下面的程序?yàn)楫嬀€函數(shù)調(diào)用實(shí)例:#include<graphics.h>voidmain(){intdriver,mode;driver=DETECT;mode=0;

initgraph(&driver,&mode,MH);setcolor(15);line(66,66,88,88);lineto(100,100);linerel(36,64);getch();restorecrtmode();setlinestyle()設(shè)置線型函數(shù)功能:setlinestyle()為畫線函數(shù)設(shè)置當(dāng)前線型,包括線型、線圖樣和線寬。用法:setlinestyle()函數(shù)調(diào)用方式為voidsetlinestyle(intstly,unsignedpattern,intwidth);說(shuō)明:參數(shù)style為線型取值,也可以用相應(yīng)名稱表示,如表1-10中所示。參數(shù)pattern用于自定義線圖樣,它是!6位(bit)字,只有當(dāng)style=USERBIT.LINE(值為1)時(shí),pattern的值オ有意義,使用用戶自定義線圖樣,與圖樣中‘T'位對(duì)應(yīng)的像素顯示,因此,pattem=0xFFFF,則畫實(shí)線:pattem=0x9999,則畫每隔兩個(gè)像素交替顯示的虛線,如果要畫長(zhǎng)虛線,那么pattern的值可為OxFFOO和OxFOOF,當(dāng)style不為USERB1T_L1NE值時(shí),雖然pattern的值不起作用,但扔須為它提供ー個(gè)值,一?般取為0。參數(shù)wigth用來(lái)設(shè)定線寬,其取值見(jiàn)表1-11,表中給出了兩個(gè)值,即1和3,實(shí)際上,線寬取值為2也是可以接受的。若用非法參數(shù)調(diào)用setlinestyle。函數(shù),那么graphresult。會(huì)返回錯(cuò)誤代碼,并且當(dāng)前線型繼續(xù)有效。TurboC提供的線型與線寬定義在頭文件graphics.h中,表1-10和1-11分別列出了參數(shù)的取值與含義。表1-10線型名稱取值含義SOLID_LINEDOTTEDLINECNTER_LINEDASHEDLINEUSERBITLINE01SOLID_LINEDOTTEDLINECNTER_LINEDASHEDLINEUSERBITLINE01234實(shí)線點(diǎn)線中心線虛線用戶自定義線型表1-11線寬取值說(shuō)明NORMWIDTH(常寬) 1 ー個(gè)像素寬(缺省值)THICK_W1DTH(加寬) 3 三個(gè)像素寬這個(gè)函數(shù)的頭文件是graphics.h返回值:無(wú)例:下面的程序顯示了BC中所提供的線型圖樣:#includc<graphics.h>voidmain(){intdriver,mode;driver=DETECT;mode=0;initgraph(&driver,&mode,,n,);fbr(i=0;i<4;i-H-){setlinestyle(i,O,l);line(i*50,200,i*504-60,200))getch();restorecrtmode();}getlinesettings()獲取線型設(shè)置函數(shù)功能:函數(shù)getlinesettings()用當(dāng)前設(shè)置的線型、線圖樣和線寬填寫linesettingstype型結(jié)構(gòu)。用法: 函數(shù)調(diào)用方式為voidgetlinesettings(structlinesettingstype*infb);說(shuō)明:此函數(shù)調(diào)用執(zhí)行后,當(dāng)前的線型、線圖樣和線寬值被裝入infb指向的結(jié)構(gòu)里,從而可從該結(jié)構(gòu)中獲得線型設(shè)置。linesettingstype型結(jié)構(gòu)定義如下:structlinesettingstype{intlinestyle;unsignedupattem;intthickness;);其中!inestyle用于存放線型,線型值為表1-10中的各值之一。upattern用為裝入用戶自定義

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論