C語言圖形編程.doc_第1頁
C語言圖形編程.doc_第2頁
C語言圖形編程.doc_第3頁
C語言圖形編程.doc_第4頁
C語言圖形編程.doc_第5頁
已閱讀5頁,還剩30頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

C 語言圖形編程 一,字符屏幕一,屏幕操作函數(shù) 1. clrscr()清除字符窗口函數(shù) 2. window()字符窗口函數(shù) 3. gotoxy()光標定位函數(shù) 4. clreol() 清除光標行尾字符函數(shù) 5. insline() 插入空行函數(shù) 6. delline() 刪除一行函數(shù) 7. gettext() 拷進文字函數(shù) 8. puttext() 拷出文字函數(shù) 9. movetext() 移動文字函數(shù) 二,字符屬性函數(shù) 10. textmode() 文本模式函數(shù) 11. highvideo()高亮度函數(shù) 12. lowvideo() 低亮度函數(shù) 13. normvideo(void); 14. textcolor() 文本顏色函數(shù) 15. textattr() 文本屬性函數(shù) 16.textbackground() 文本背景函數(shù) 三, 屏顯狀態(tài)函數(shù) 17. wherex() 光標處 x 坐標函數(shù) 18. wherey() 光標處 y 坐標函數(shù) 19. gettextinfo() 獲取文本窗口信息函數(shù) 在 Borland C+里面提供了字符屏幕和圖形函數(shù).字符屏幕的核心是窗口(Window),它是屏幕的活動部分,字符 輸出或顯示在活動窗口中進行.窗口在缺省時,就是整個屏幕.窗口可以根據(jù)需要指定其大小.同樣,對圖形函 數(shù)的操作,也提供了(Viewport).也就是說圖形函數(shù)的操作都是在視口上進行.圖形視口與字符窗口具有相同的 特性,用戶可以在屏幕上定義大小不同的視口,若不定義視口大小,它就是整個屏幕. 窗口是在字符屏幕下的概念,只有字符才能在窗口中顯示出來,這時用戶可以訪問的最小單位為一個字符. 視口是在圖形屏幕狀態(tài)下的概念,文本與圖形都可以在視口上顯示,用戶可訪問的最小單位是一個像素(像素這 一術語最初用來指顯示器上最小的,單獨的發(fā)光點單元.然而現(xiàn)在,其含義拓寬為指圖形顯示器上的最小可訪問 點). 字符和圖形狀態(tài)下,屏幕上的位置都是由它們的行與列所決定的.有一點須指出:字符狀態(tài)左上角坐標為 (1,1),但圖形左上角坐標為(0,0). 了解字符屏幕和圖形函數(shù)與窗口和視口的關系是很重要的.例如,字符屏幕 光標位置函數(shù) gotoxy()將光標 移到窗口的 x,y 位置上,這未必是相對于整個屏幕.下面介紹常用的幾類字符屏幕函數(shù)的功能用途,操作方法及 其例行程序. 一,屏幕操作函數(shù) 編寫程序繪圖經(jīng)常要用到對字符屏幕進行操作.例如,在往屏幕上寫字符之前,首先要將屏幕清除干凈.又 如,有時需要在屏幕上多處寫上肉中刺樣的字符內(nèi)容,這時最好用屏幕拷貝來高效率地完成這一任務.對這些操 作,Borland C+提供了一系列字符屏幕操作函數(shù)來實現(xiàn). 1. clrscr()清除字符窗口函數(shù) 功能:函數(shù) clrscr()清除整個當前字符窗口,并且把光標定位于左上角(1,1)處. 用法:此函數(shù)調(diào)用方式為 void clrscr(void); 說明:括號中 void 表示無參數(shù). 該函數(shù)相應的頭文件為 conio.h 返回值:無 例:使用這個函數(shù)的例子見 4.clreol()函數(shù)的實例中. 2. window()字符窗口函數(shù) 功能: 函數(shù) window()用于在指定位置建立一個字符窗口. 用法: 此函數(shù)調(diào)用方式為 void window(int left,int top,int right,int bottom); 說明: 函數(shù)中參數(shù) left,top 為窗口左上角坐標;right,bottom 為其右下角坐標. 若有一個坐標是無效的,則 window()函數(shù)不起作用.一旦該函數(shù)調(diào)用成功,那么所有定位坐標都是相對 于窗口的,而不是相對于整個屏幕.但是建立窗口所用的坐標總是相對整個屏幕的絕對坐標,而不是相對當前窗 口的相對坐標.這樣用戶就可以根據(jù)各種需要建立多個互不嵌套的窗口. 此函數(shù)的頭文件為 conio.h. 返回值:無 例: 調(diào)用這個函數(shù)的實現(xiàn)例見 3.gotoxy()函數(shù)的例子中. 3. gotoxy()光標定位函數(shù) 功能: 函數(shù) gotoxy()將字屏幕上的光標移到當前窗口指定的位置上. 用法: 這個函數(shù)調(diào)用方式為 void gotoxy(int x,int y); 說明: 括號里 x,y 是, 光標定位的坐標,如果其中一個坐標值無效(如坐標超界),那么光標不會移動. 此函數(shù)在字符狀態(tài)(有時稱為文本狀態(tài))下經(jīng)常用到 ,其相應的頭文件為 conio.h 返回值:無 例: 下面程序建立兩個窗口,然后在窗口里顯示字符,字符的位置是調(diào)用該函數(shù)確定的. #i ncludeconio.h void border(int startx,int starty,int endx,int endy) register int i; gotoxy(1,1); for(i=0;i=endx-startx;i+) putch(-); gotoxy(1,endy-starty); for(i=0;i=endx-startx;i+) putch(-); for(i=2;i void main() register int i; gotoxy(6,8); printf(This is a test of the clreol() function.); getch(); gotoxy(6,8); clreol(); for(i=0;i20;i+) printf(Hellon); getch(); clrscr(); 5. insline() 插入空行函數(shù) 功能: 函數(shù) insline()插入一空行到當前光標所在行上,同時光標以下的所有行都向下順移一行. 用法: 此函數(shù)的調(diào)用方式為 void insline(void); 說明: 該函數(shù)只用于文本方式,并且在當了符窗口才有效. 這個函數(shù)的對應頭文件是 conio.h 返回值:無 例: 程序給出了 insline()函數(shù)的用法. #i nclude conio.h void main() registser int i; clrscr(); for(i=1;i24;i+) gotoxy(1,i); printf(This is line %dn,i); getch(); gotoxy(1,10); insline(); getch(); 6. delline() 刪除一行函數(shù) 功能: 函數(shù) delline()刪除當前窗口內(nèi)光標所在行,同時把該行下面 所有行都上移一行. 用法: 此函數(shù)調(diào)用方式為 void delline(void); 說明: 注意,如果當前窗口小于整個屏幕,那么該函數(shù)只影響到窗口內(nèi)的字符. 這個函數(shù)相應的頭部文件是 conio.h 返回值: 無 例:先在屏幕上顯示 16 行文字,然后刪除第 4 行 #i nclude conio.h void main() register int i; clrscr(); for(i=0;i16;i+) printf(line %dn,i); getch(); gotoxy(1,4); delline(); getch(); 7.gettext() 拷進文字函數(shù) 功能: 函數(shù) gettext()用于文本狀態(tài)下將屏幕上矩形域內(nèi)的文字拷進內(nèi)存. 用法: 該函數(shù)調(diào)用方式為 int gettext(int left,int top,int right,int bottom,void *buffer); 說明: 函數(shù)中參數(shù) left,top 為矩形區(qū)域的左上角坐標,right,bottom 為其右下角坐標,這些坐標是屏幕的絕對 坐標,不是窗口的相對坐標.buffer 指針必須指向一個足夠保存該矩形域內(nèi)文字的內(nèi)存.所用內(nèi)存大小按下式計 算: 點頭用字節(jié)數(shù)=矩形哉內(nèi)的行數(shù)矩形域的列數(shù)2 這里將行數(shù)乘以列數(shù)再乘以 2 的原因是保存屏幕上每個字符要用兩個字節(jié)存儲單元,一個字節(jié)存儲單元存放字符 本身,而另一個存放其屬性. 此函數(shù)相應的頭文件是 conio.h 返回值: 若函數(shù)調(diào)用成功則返回 1,否則返順 0. 例: 把屏幕左上角點(1,1)和右下角點(10,10)的區(qū)域拷貝到 buf 指向的內(nèi)存中去. buf=(char *)malloc(10*10*2); if(!buf)gettext(1,1,10,10,buf); 8. puttext() 拷出文字函數(shù) 功能: 函數(shù) puttext()把先前由 gettext()保存到 buffer 指向的內(nèi)存中的文字拷出到屏幕上一個矩形區(qū)域中. 用法: 此函數(shù)調(diào)用方式為 int puttext(int left,int top,int right,int bottom,void *buffer); 說明: 函數(shù)里 left,top 為給出的屏幕上矩形區(qū)域的左上角點,right,bottom 為其右下角點,其坐標是用屏幕的 絕對坐標,而不是用窗口的相對坐標. 該函數(shù)相應的頭文件為 conio.h 返回值: 函數(shù)調(diào)用成功返回值為 1,否則返回 0. 例: 屏幕上某個區(qū)域內(nèi)容拷進 buf 指向的內(nèi)存中,然后又將這些文字拷出到屏幕上新位置. buf=(char *)malloc(10*10*2); gettext(1,1,10,10,buf); puttext(16,16,30,30,buf); 9. movetext() 移動文字函數(shù) 功能: 函數(shù) movetext()將屏幕上一個矩形區(qū)域的文字移到另一個區(qū)域上. 用法: 該函數(shù)調(diào)用方式為 int movetext(int left,int top,int right,int bottom,int newleft,int newtop); 說明: 上面 left,top 為矩形區(qū)域上角坐標,right,bottom 為其右下角坐標,newleft,newright 為移動到區(qū)域左 上角坐標.這些坐標是屏幕的絕對坐標,不是窗口的相對坐標. 若要把屏幕上一段文字移到屏幕的另一位置,那么使用 movetext()函數(shù)比用 gettext()然后再用 puttext() 效率更高. 此函數(shù)相應的頭文件是 conio.h 返回值: 如果有一個以上坐標無效,那么函數(shù)返回值為 0,否則返回 1. 列: 把屏幕左上角點(8,8),右下角點(20,20)的矩形區(qū)域文字移動到左上角點(10,10)的位置上: movetext(8,8,20,20,10,10); 10. textmode() 文本模式函數(shù) 功能: 函數(shù) textmode()針屏幕設置為文本模式(或者說字符狀態(tài)). 用法: 函數(shù)調(diào)用方式為 void textmode(int mode); 說明: 參數(shù) mode 必須為表 1-2 中所示的模式之一以用模式名(符號值),也可以用其等價的整數(shù)值. 表 1-2 文本模式 -模式名(符號值) 等價整數(shù)值 說 明 BW40 0 40 列黑白 C 40 1 40 列彩色 BW80 2 80 列黑白 C 80 3 80 列彩色 MONO 7 80 列單色 LASTMODE -1 上次模式 -調(diào)用該函數(shù)后,屏幕復位,并且所有字符的屬性恢復其缺省值. 此函數(shù)對應的頭文件是 conio.h 返回值: 無 例: 把屏幕設置為 80 列彩色模式 textmode(C80); 二,字符屬性函數(shù) 用戶可以設置字符顯示的高亮度或低亮度的寫的符閃爍及其背景顏色等.具有這些操作的函數(shù)稱為字符屬性 函數(shù).除了僅支持單模式和單色的顯示卡外,字符屬性函數(shù)適用于其余所有的顯示卡. 11. highvideo()高亮度函數(shù) 功能: 函數(shù) highvideo()設置屏幕為高亮度顯示. 用法: 此函數(shù)調(diào)用方式為 void highvideo(void); 說明: 調(diào)用該函數(shù)后,寫到屏幕上的字符是高亮度的.此函數(shù)只適用于文本模式狀態(tài)(或說字符屏幕狀態(tài)). 這個函數(shù)對應的頭文件為 conio.h 返回值: 無 例: 設置屏幕顯示為高亮度的. highvideo(); 12. lowvideo() 低亮度函數(shù) 功能: 函數(shù) lowvideo()設置屏幕為低亮度顯示. 用法: 該函數(shù)調(diào)用方式為 void lowvideo(void); 說明: 調(diào)用該函數(shù)后, 此時寫到屏幕上的字符是低亮度的. 這個函數(shù)只適用于文本模式狀態(tài)(或說字符屏幕狀態(tài)). 此函數(shù)相應的頭文件是 conio.h 返回值: 無 例: 設置屏幕顯示為低亮度的 lowvideo(); 13. normvideo(void); 功能: 函數(shù) normvideo()設置屏幕為正常亮度顯示. 用法: 這個函數(shù)調(diào)用方式為 void normvideo(void); 說明: 調(diào)用該函數(shù)后,此時寫到屏幕上的字符是正常亮度的,該函數(shù)只適用于文本模式狀態(tài)(或說字符狀屏幕狀 態(tài)). 此函數(shù)相應的頭文件為 conio.h 返回值: 無 例: 設置屏幕顯示為正常亮度. normvideo(); 14. textcolor() 文本顏色函數(shù) 功能: 函數(shù) textcolor()設置字符屏幕下文本顏色(或字符顏色),它也可以用于使字符閃爍. 用法: 這個函數(shù)調(diào)用方式為 void textcolor(int color); 說明: 函數(shù)中參數(shù) color 的有效值可取表 1-3 中的顏色名(即宏名)或等價值. 表 1-3 顏色名與等價值 -名 等價值 含 義 BLACK 0 黑 BLUE 1 藍 GREEN 2 綠 CYAN 3 青 RED 4 紅 MAGENTA 5 洋紅 BROWN 6 棕 LIGHTGRAY 7 淡灰 DRAKGRAY 8 深灰 LIGHTBLUE 9 淡藍 LIGHTGREEN 10 淡綠 LIGHTCYAN 11 淡青 LIGHTRED 12 淡紅 LIGHTMAGENTA 13 淡洋紅 YELLOW 14 黃 WHITE 15 白 BLINK 128 閃爍 -textcolor()函數(shù)執(zhí)行后,只影響其后輸出探險符顏色,而不改變已經(jīng)在當前屏幕上的其它字符顏色.顯然,如 果需要輸出的字符閃爍,只要將函數(shù)中參數(shù) color 取為 BLINK 即可,如果要使字符帶顏色閃爍,就必須將所選的 顏色值與 128 作或運算. 此函數(shù)相應的頭文件是 conio.h 返回值: 無 例: 下面程序段中第一條語句使輸出的字符閃爍,第三條語句使字符輸出為經(jīng)色同時閃爍: textcolor(BLINK); printf(hello); textcolor(RED|BLINK); 15. textattr() 文本屬性函數(shù) 功能: 函數(shù) textattr()用于設置文本屬性,即字符背景顏色,字符本身顏色和字符閃爍與否. 用法: 函數(shù)調(diào)用方式為 void textattr(int attribute); 說明: 設置字符背景顏色屬性字節(jié)的最簡單方法是,用所選的背景顏色值乘以 16 再與字符顏色值作按位或(OR) 運算.例如需要紅色背景,綠色字符,就設置成 RED*16|GREEN,若還要字符閃爍,就把背景顏色值,字符顏色值 與閃爍值一起 按位作或運算.如藍背景,黃字符且閃爍,就設置成為: YELLO|128|BLUE*16 第 0 位用于設置字符顏色. 此函數(shù)相應的頭文件為 conio.h 返回值: 無 例: 設置背景為藍色,字符為紅色并且字符閃爍: textattr(RED|128|BLUE*16); 16.textbackground() 文本背景函數(shù) 功能: 函數(shù) textbackground()設置字符屏幕下文本背景顏色(或字符背景顏色). 用法: 此函數(shù)調(diào)用方式為 void textbackground(int bcolor); 說明: 參數(shù) bcolor 的有效值取表 1-4 背景顏色(即宏名)或等價值. 表 1-4 背景顏色與等價值 -背景顏色 等價值 含 義 -BLACK 0 黑 BLUE 1 藍 GREEN 2 綠 CYAN 3 青 RED 4 紅 MAGENTA 5 洋紅 BROWN 6 棕 -調(diào)用該函數(shù)只影響后續(xù)寫的字符背景顏色,而不改變當前顯示在屏幕上的字符背景顏色. 這個函數(shù)對應的頭文件是 conio.h 返回值: 無 例: 設置文本背景顏色為藍色: textbackground(BLUE); 三, 屏顯狀態(tài)函數(shù) 這里提供三個在文本模式下屏幕顯示狀態(tài)的函數(shù) 17. wherex() 光標處 x 坐標函數(shù) 功能: 函數(shù) wherex()返回當前窗口中光標處橫向坐標. 用法: 此函數(shù)調(diào)用方式為 int wherex(void); 說明: 這個函數(shù)調(diào)用無參數(shù),其對應的頭文件是 conio.h 返回值: 函數(shù)調(diào)用成功,返回光標處 x 坐標值. 例: 調(diào)用這個函數(shù)的實例見 18.wherey()函數(shù)的例中. 18. wherey() 光標處 y 坐標函數(shù) 功能: 函數(shù) wherey()返回當前窗口中光標處縱向坐標. 用法: 該函數(shù)調(diào)用方式為 int wherey(void); 說明: 此函數(shù)調(diào)用無參數(shù),其相應的頭文件是 conio.h 返回值: 函數(shù)調(diào)用成功,返回光標處 y 坐標值. 例: 調(diào)作函數(shù) wherex()與 wherey(),返回當前光標處 x 坐標與 y 坐標,并賦給整型變量 xpos ,ypos. int xpos,ypos; xpos=wherex(); ypos=wherey(); 19. gettextinfo() 獲取文本窗口信息函數(shù) 功能: 函數(shù) gettextinfo()獲取當前文本窗口信息,并存放在實參結(jié)構(gòu)中. 用法: 函數(shù)調(diào)用方式為 void gettextinfo(struct text-info *info); 說明: 函數(shù)中參數(shù) info 為 struct text-info 結(jié)構(gòu)型指針,struct text-info 結(jié)構(gòu)在此函數(shù)相應的頭文件中定 義為: struct text-info unsigned char winleft; / 窗口左上角 x 坐標 unsigned char wintop; / 窗口左上角 y 坐標 unsigned char winright; / 窗口右下角 x 坐標 unsigned char winbottom; / 窗口右下角 y 坐標 unsigned char attribute; / 文本屬性 unsigned char normattr; / 正常屬性 unsigned char currmode; / 當前屏顯模式 unsigned char screenhight / 文本窗口高度(以行數(shù)計) unsigned char screenwidth; / 文本窗口寬度(以字符個數(shù)計) unsigned char curx; / 光標處 x 坐標 unsigned char cury; / 光標處 y 坐標 ; 記住,調(diào)用函數(shù) gettextinfo()時,要傳遞 struct text-info 結(jié)構(gòu)型指針或該結(jié)構(gòu)的首地址,不要傳遞結(jié)構(gòu) 變量本身. 這個函數(shù)對應的頭文件是 conio.h 返回值: 返回文本窗口角點坐標,高寬度,文本屬性等值,并存放在 info 所指向的結(jié)構(gòu)變量中. 例: 程序語句說明如何正確調(diào)用 gettextinfo()函數(shù): struct text-info win-status; gettextinfo(&win-status); 二,圖形顯示一,確定顯示卡 二,選擇顯示模式 三,圖形顯示 20. detectgraph() 顯示卡檢測函數(shù) 21. initgraph() 圖形初始化函數(shù) 22. getdrivername() 獲取圖形驅(qū)動程序名的指針 23. getgraphmode() 獲取圖形模式函數(shù) 24. getmoderange()獲取模式值范圍函數(shù) 25. getmaxmode()獲取最大顯示模式函數(shù) 26. getmodename()獲取顯示模式名函數(shù) 27. graphdefaults()圖形設置復位缺省值函數(shù) 28. setgraphmode() 設置圖形模式函數(shù) 29. restorecrtmode() 恢復文本顯示模式函數(shù) 30. graphresult() 圖形操作結(jié)果函數(shù) 31. grpaherrormsg() 圖形錯誤信息函數(shù) 32. setgraphbufsize()設置圖形緩沖區(qū)大小函數(shù) 33. setactivepage() 設置可輸出顯示頁函數(shù) 34. setvisualpage() 設置可見顯示頁數(shù) 35. closegraph()關閉圖形模式函數(shù) 一,確定顯示卡 微機系統(tǒng)顯示部分由顯示器(monitor)和顯示卡(adapter)兩部分組成.顯示器是獨立于主機的一種外部設備, 顯示卡或稱顯示適配卡,也有的稱圖形卡,是插在主機上的一塊電路板.但也有的顯示卡與主機板設計在一起. 顯示卡包括寄存器組,存儲器和控制電路三大部分.其中存儲器又包括顯示 RAM 和 ROM BIOS 兩部分,微機對顯 示屏幕的所有操作都是通過顯示卡來實現(xiàn)的.因此要進行圖形顯示 ,首先要確定計算機上安裝的是何種顯示卡. 一種方法是詢問計算機或終端使用者,確定將要使用的顯示卡類型.這種方法很難,因為甚至專業(yè)程序員也不總 是能確定他正在使用什么樣的硬件.另一種方法是用軟件查詢硬件以識別當前的配置.如果有一些識別硬件的標 準,這就很簡單了.在 Borland C 中對現(xiàn)在所使用的各種顯示卡提供了支持,這只要調(diào)用 detectgraph()函數(shù)就 可以了,該函數(shù)為程序員確定計算機上使用的顯示卡類型. 二,選擇顯示模式 顯示模式是指顯示卡支持的分辨率與相應的顏色配置.每臺計算機都配置了某種類型顯示卡,可以為該顯示 卡指定顯示模式. 三,圖形顯示 進行圖形顯示首先要確定顯示卡,然后選擇其顯示模式.這些工作都可以調(diào)用圖形功能函數(shù)來完成,其實就 是把適合于顯示卡的圖形驅(qū)動程序裝入內(nèi)存.如果圖形驅(qū)動程序未裝入內(nèi)存,那么圖形函數(shù)就不能操作. 20. detectgraph() 顯示卡檢測函數(shù) 功能: 函數(shù) detectgraph()在計算機上安裝有顯示卡的情況下,測定其顯示卡的類型. 用法: 此函數(shù)調(diào)用方式為 void detectgraph(int *driver,int *mode); 說明: 函數(shù)把 driver 所指向的整型變量設置為圖形驅(qū)動程序的代碼,把 mode 所指向的整型變量設置為顯示卡 支持的最高有效模式(即該顯示卡能支持的最高分辨率). 該函數(shù)相應的頭文件為 graphics.h 返回值: 返回適合于該顯示卡的圖形驅(qū)動程序的代碼(也稱等價值),并存放在 driver 指向的變量中.若計算機 系統(tǒng)中無圖形硬件,則由 driver 指向的變量設置為-2. 例: 檢測計算機是否裝有顯示卡: int driver,mode; detectgraph(&driver,&mode); if(driver=-2) printf(no graphics adapter in the computer); exit(1); 21. initgraph() 圖形初始化函數(shù) 功能: 函數(shù) initgraph()用于初始化圖形系統(tǒng), 把適合的圖形驅(qū)動程序裝入內(nèi)存, 設置圖形函數(shù)所用的顯示模式. 用法: 該函數(shù)調(diào)用方式為 void initgraph(int *driver,int *mode,char *path); 說明: 1) 函數(shù)中參數(shù) driver 指向圖形驅(qū)動程序(或者等價值). 在頭部文件 graphics.h 中定義了圖形驅(qū)動程序的宏名與其等價 ,如下: 宏 名 等價值 -DETECT 0 CGA 1 MCGA 2 EGA 3 EGA64 4 EGAMONO 5 IBM8514 6 HERCMONO 7 ATT400 8 VGA 9 PC3270 10 -注:在現(xiàn)在的計算機中,上表中的許多顯示卡已經(jīng)過時,不再使用. 這樣就不必擔心圖形驅(qū)動程序的準確名字, 而只要用其等價值即可, 若使用 detect(即等價值 0)時, initgraph() 函數(shù)自動檢測當前計算機中裝有的顯示卡類型,并且選用最大分辨率的顯示模式. 2)參數(shù) mode 指向顯示模式或用等價值(風表 1-5),mode 所指的值必須是有效模式之一. 3)參數(shù) path 指向圖形驅(qū)動程序所在的路徑,例如 path=C:TCBG1.若沒有指定路徑,就在當前目錄下尋找. 一般圖形驅(qū)動程序包含在.BGI 文件中,這些文件是系統(tǒng)可以得到的.這個函數(shù)對應的頭文件是 graphics.h. 返回值: 無 例: 調(diào)用 initgraph()自動檢測硬件圖形系統(tǒng),并選用最大分辨率顯示模式. init drver,mode; driver=DETECT; mode=0; initgraph(&driver,&mode,); 22. getdrivername() 獲取圖形驅(qū)動程序名的指針 功能: 函數(shù) getdrivername()返回指向當前圖形驅(qū)動程序名的指針. 用法: 此函數(shù)調(diào)用方式為 char *getdrivername(void); 說明: 本函數(shù)可以用來檢測顯示卡,但只能在 initgraph()設置圖形驅(qū)動程序和顯示模式之后調(diào)用. 該函數(shù)相應的頭文件為 graphics.h 返回值: 返回一指針,指向含有當前圖形驅(qū)動程序名的字符串. 例: 顯示當前圖形驅(qū)動程序名: #i nclude #i nclude void main() int graphdriver=DETECT,graphmode; char *s; initgraph(&graphdriver,&graphmode,); s=getdrivername(); outtext(Using driver:); outtext(s); getch(); closegraph(); 23. getgraphmode() 獲取圖形模式函數(shù) 功能: 函數(shù) getgrapgmode()返回當前圖形模式. 用法: 該函數(shù)調(diào)用方式為 int getgraphmode(void); 說明: getgraphmode()函數(shù)無參數(shù)調(diào)用. 這個函數(shù)對應的頭文件是 graphics.h 返回值: 返回 initgraph()或 setgraphmode()所設置的當前圖形模式值. 例: 顯示當前圖形模式的代碼: printf(graphics mode is %d,getgraphmode(); 24. getmoderange()獲取模式值范圍函數(shù) 功能: 函數(shù) getmoderange()返回指定的圖形驅(qū)動程序能夠支持的最低和最高模式值. 用法: 函數(shù)調(diào)用方式為 void getmoderange(int driver,int *lowmode,int himode); 說明: 參數(shù) driver 是用來調(diào)用此函數(shù)時,指定圖形驅(qū)動程序等價值或宏名. 其有效值如下: -宏 名 等價值 -DETECT 0 CGA 1 MCGA 2 EGA 3 EGA64 4 EGAMONO 5 IBM8514 6 HERCMONO 7 ATT400 8 VGA 9 PC3270 10 -注:上表中的許多顯示卡在現(xiàn)在的計算機上已經(jīng)過時,僅作參考. 該函數(shù)想應的頭文件為 graphics.h 返回值: 返回的最小和最大有效值存放在參數(shù)指針 lowmode 和 himode 分別指向的整型變量中. 例: 顯示當前圖形硬件的顯示模式的范圍值: #i ncludegraphics.h void main() int driver,mode; int low,high; mode=0; initgraph(&driver,&mode,); getmoderange(driver,&low,&high); printf(mode range:%d-%d,low,high); getch(); rstorecrtmode(); 25. getmaxmode()獲取最大顯示模式函數(shù) 功能: 函數(shù) getmaxmode()返回當前加載的圖形驅(qū)動程序所支持的最大有效顯示模式. 用法: 函數(shù)調(diào)用方式為 int getmaxmode(void); 說明: 本函數(shù)無參數(shù)調(diào)用, 返回圖形驅(qū)動程序所支持的最大顯示模式, 所有圖形驅(qū)動程序支持從 0 到 getmaxmode() 函數(shù)返回值中的任一整 數(shù)值(對應的顯示模式). 這個函數(shù)對應的頭文件是 graphics.h 返回值:返回圖形驅(qū)動程序所支持的顯示模式最大值. 例: 顯示當前最大顯示模式: printf(The maxmode of this driver is %dn,getmaxmode(); 26. getmodename()獲取顯示模式名函數(shù) 功能: 函數(shù) getmodename()可獲取當前圖形驅(qū)動程序支持的指定顯示模式的名字. 用法: 此函數(shù)調(diào)用方式為 char *getmodename(int modecode); 說明: 參數(shù) modecode 為整型值.用以指定一顯示模式值調(diào)用該函數(shù). 這個函數(shù)對應的頭文件 graphics.h 返回值: 返回指定模式值的顯示模式名. 例: 顯示當前最大顯示模式名: #i nclude #i nclude void main() int graphdriver=DETECT,graphmode; int modecode; char *s; initgraph(&graphdriver,&graphmode,); modecode=getmaxmode(); s=getmodename(modecode); outtext(The maxmode name is:); outtext(s); getch(); closegraph(); 27. graphdefaults()圖形設置復位缺省值函數(shù) 功能: 函數(shù) grpahdefaults()把所有圖形設置復位為它們的缺省值,這包括把圖形視口復位為全屏幕;當前位置 定位在 0,0;調(diào)色板,背景色和繪圖色都被復位;填充顏色,填 充圖樣,文本文字和排齊方式都返回到它位的缺 省值. 用法: 此函數(shù)調(diào)用方式為 void graphdefaults(void); 說明: 該函數(shù)無參數(shù)調(diào)用. 這個函數(shù)相應的頭文件為 graphics.h 返回值: 無 例: 將圖形系統(tǒng)恢復為其缺省值: graphdefaults(); 28. setgraphmode() 設置圖形模式函數(shù) 功能: 函數(shù) setgraphmode()用當前圖形驅(qū)動程序有效的圖形模式調(diào)用,一旦被調(diào)用,setgraphmode()選擇一 個新的圖形模式.注意,圖形顯示模式必須事先由 initgraph()初始化. 用法: 該函數(shù)調(diào)用方式為 void setgraphmode(int mode); 說明: 參數(shù) mode 調(diào)用時為指定的模式值. 此函數(shù)相應的頭部文件是 graphics.h 返回值: 無 例: 把 VGA 圖形卡設置為 VGAMED 模式: setgraphmode(VGAMED); / 圖形系統(tǒng)已經(jīng)初始化 29. restorecrtmode() 恢復文本顯示模式函數(shù) 功能: 函數(shù) restrecrtmode()將顯示模式恢復到調(diào)用 initgraph()時檢測出的初始文本模式. 用法: 這個函數(shù)調(diào)用方式為 void restorecrtmode(void); 說明: 函數(shù) restorecrtmode()和 setgraphmode()函數(shù)一起使用,可以實現(xiàn)文本與圖形顯示之間的切換. 此函數(shù)對應的頭文件為 graphics.h 返回值: 無 例: 恢復顯示模式為初始文本模式: restorecrtmode(); 30. graphresult() 圖形操作結(jié)果函數(shù) 功能: 函數(shù) graphresult()函數(shù)返回最后一次圖形操作的代碼. 用法: 此函數(shù)調(diào)用方式為 int graphresult(void); 說明: C 為圖形設置了代碼,它們是從-15 到 0 的整數(shù)值.其含義見表 1-6. 調(diào)用該函數(shù)時,出錯狀態(tài)被復位為 0,所以返回值(代碼)最好存于變量中,以供需要時檢測, 進行下一步圖形操作. 圖形操作信息名稱 grInvalidDeviceNum grInvalidFont grIOerror grError grInvalidMode grNoFontMem grFontNotFound grNoFloadMem grNoScanMem grNoLoadMem grInvalidDriver grFileNoFound grNoDetected grNoInitGraph grOK 代碼 -14 -13 -12 -11 -10 -9 -8 -7 -6 -5 -4 -3 -2 -1 0 含 義 無效設備號 無效字體文件 輸入輸出錯誤 一般圖形錯誤 無效的圖形模式 沒有足夠內(nèi)存用于裝字體文件 沒有找到字體文件 Flood 填 充內(nèi)存不足 Scan 填 充內(nèi)存不足 沒有足夠內(nèi)存裝入圖形驅(qū)動程序 無效圖形驅(qū)動程序 沒有找到圖形驅(qū)動文件 沒有檢測到圖形硬件 沒有圖形初始化 成功 這個函數(shù)對應的頭部文件是 graphics.h 返回值: 返回最后一次圖形操作結(jié)果相應的代碼. 例: 調(diào)用 graphresult()函數(shù)的實例見下面 grapherrormsg()函數(shù)的例子. 31. grpaherrormsg() 圖形錯誤信息函數(shù) 功能: 函數(shù) grapherrormsg()返回指向出錯代碼相應的錯誤信息字符串的指針. 用法: 此函數(shù)調(diào)用方式為 char *grapherrormsg(int errcode); 說明: 參數(shù) errcode 值,即出錯代碼由調(diào)用函數(shù) graphresult()獲得.這里所有出錯代碼及相應的錯誤信息如表 1-6 中所述. 該函數(shù)相應的頭文件是 grpahics.h 返回值: 返回一個指向該出錯代碼相應的錯誤信息字符串的指針. 例: 用文字形式顯示有關出錯代碼相應的錯誤信息: int errorcode; errorcode=graphresult(); printf(%s,grapherrormsg(errcode); 32. setgraphbufsize()設置圖形緩沖區(qū)大小函數(shù) 功能: 函數(shù) setgraphbufsize()用來設置有的圖形函數(shù)(如 floodfill 等)所要用到的內(nèi)存緩沖區(qū)大小. 用法: 函數(shù)調(diào)用方式為 unsigned setgraphbufsize(unsigned bufsize); 說明: 這里無符號參數(shù) bufsize 為所設置的緩沖區(qū)大小. 一般不需要用到該函數(shù), 僅使用由 initgraph()函數(shù)產(chǎn)生的內(nèi)存緩沖區(qū)就夠了, 緩沖區(qū)大小缺省時為 4KB(即 4096 個字節(jié)), 足以用來填 充一個大約有 650 個頂點的多邊形, 但是為了節(jié)省內(nèi)存, 用戶可以減少緩沖區(qū)的大小, 或 者 由 于 需 要 更 多 的 緩 沖 區(qū) 內(nèi) 存 , 這 時 可 用 函 數(shù) setgraphbufsize() 來 增 加 緩 沖 區(qū) 大 小 . 注 意 , 使 用 setgraphbufsize()函數(shù)必須在調(diào)用 initgraph()之前. 返回值: 返回先前定義的圖形緩沖區(qū)字節(jié)數(shù). 例: 調(diào)用此函數(shù)設置圖形緩沖區(qū)為 8KB 字節(jié): setgraphbufsize(0x2000); 33. setactivepage() 設置可輸出顯示頁函數(shù) 功能: 函數(shù) setactiveage()設置用作圖形輸出的顯示頁. 用法: 這個函數(shù)調(diào)用方式為 void setactivepage(int pagenum); 說明: 參數(shù) pagenum 為選擇的顯示頁號,如果調(diào)用成功,那么后續(xù)圖形輸出就寫到選定的輸出頁上.缺省時是 以 0 頁作為當前輸出頁.該函數(shù)只在圖形驅(qū)動程序及其顯示模式支持多個顯示頁時才起作用. 此函數(shù)相應的頭文件為 graphics.h 返回值: 無 例: 設置 1 頁為輸出顯示頁: setactivepage(1); 34. setvisualpage() 設置可見顯示頁數(shù) 功能: 函數(shù) setvisualpage()設置屏幕上可見的顯示頁. 用法: 函數(shù)調(diào)用方式為 void setvisualpage(int pagenum); 說明:參數(shù) pagenum 為設置的顯示頁號. 缺省時是以 0 頁作為當前可見頁. 調(diào)用這個函數(shù)和調(diào)用 setactivepage() 一樣,僅在圖形驅(qū)動程序及其顯示模式支持多個顯示頁時才有效.用戶可以用系統(tǒng)所支持的任何顯示頁,在它們 之間切換, 當然一次只能有一個顯示頁在屏幕上可見, 有時需要在一頁上建立后備圖形葨圖像, 它在當時不顯示, 一旦需要時,可以馬上切換到該頁,如要實現(xiàn)動畫效果,只需切換顯示頁號即可.用 setvisualpage()函數(shù)選 定 實際顯示在屏幕上的可見頁,用 setactivepage()函數(shù)選擇當前圖形輸出頁,從而實現(xiàn)圖形頁之間的顯示切換, 通常這兩個函數(shù)都是缺省的,這時輸出頁就是可見頁.若不繪制動畫就不需要用到這兩個函數(shù). 這兩個函數(shù)對應的頭文件是 graphics.h 返回值: 無 例: 設置可見頁為第 1 頁: setvisualpage(1); 35. closegraph()關閉圖形模式函數(shù) 功能: 函數(shù) closegraph()將系統(tǒng)圖形模式關閉,復位到 initgraph()初始文本模式,并且釋放圖形驅(qū)動程序, 字體和內(nèi)部緩沖區(qū)所占用的系統(tǒng)內(nèi)存. 用法: 這個函數(shù)調(diào)用方式為 void closegraph(void); 說明: 當用戶的程序既用到圖形輸出又用到非圖形輸出時,應該調(diào)用此函數(shù).特別是程序多次調(diào)用 initgraph() 函數(shù)的情況,要相應地調(diào)用 closegraph 函數(shù),釋放調(diào)用 initgraph()所占用的內(nèi)存,否則內(nèi)存很快就滿了,程序 無法運行,如果程序結(jié)束,也可以用 restorecrtmode()函數(shù)代替該函數(shù),這樣任何分配的內(nèi)存都將釋放. 此函數(shù)對應的頭文件是 graphics.h 返回值: 無 例: 關閉圖形系統(tǒng): closegraph(); 三,繪圖函數(shù)-01 繪圖函數(shù)一,屏幕和視口設置與清除函數(shù) 36. setviewport() 設置圖形視口函數(shù) 37. clearviewport()清除圖形視口函數(shù) 38. cleardevice() 清除屏幕函數(shù) 39. getviewsettings() 獲取圖形視口設置函數(shù) 二,調(diào)色板和顏色函數(shù) 40. setpalette()設置調(diào)色板函數(shù) 41. setallpalette()設置整個調(diào)色板函 42. setbackcolor() 設置背景顏色函數(shù) 43. setcolor() 設置顏色函數(shù) 44. getbkcolor() 返回背景色函數(shù) 45. getcolor() 返回當前繪圖顏色 46. getmaxcolor()返回最大顏色值函數(shù) 47. getpalette() 獲取調(diào)色板函數(shù) 48. getpalettesize() 返回調(diào)色板大小函數(shù) 49. getdefaultpalette() 獲取缺省調(diào)色板函數(shù) 三,屏幕位置函數(shù) 50. getmaxx()返回最大 x 坐標函數(shù) 51. getmaxy() 返回最大 y 坐標函數(shù) 52. getx() 返回 x 坐標函數(shù) 53. gety() 返回 y 坐標函數(shù) 54. moveto()函數(shù) 55. moverel() 相對移動函數(shù) Borland C+提供了一整套綜合性的圖形函數(shù),上節(jié)介紹了其中有關圖形顯示的函數(shù),本節(jié)介紹其中的繪圖函數(shù), 下節(jié)將介紹它的圖形文本函數(shù). 一般繪圖時,首先要清除屏幕,設置圖形視口,設置繪圖顏色,然后在屏幕上某個位置畫點或直線或曲線等. 下面給出具有這些功能的函數(shù). 一,屏幕和視口設置與清除函數(shù) 36. setviewport() 設置圖形視口函數(shù) 功能: 函數(shù) setviewport() 設置當前圖形視口. 用法: 函數(shù)調(diào)用方式為 void setviewport(int left,int top,int right,int bottom,int clip); 說明: 參數(shù) left,top 是左上角坐標,right,bottom 是右

溫馨提示

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

最新文檔

評論

0/150

提交評論