337個(gè)語言函數(shù)功能速查9_第1頁
337個(gè)語言函數(shù)功能速查9_第2頁
337個(gè)語言函數(shù)功能速查9_第3頁
337個(gè)語言函數(shù)功能速查9_第4頁
337個(gè)語言函數(shù)功能速查9_第5頁
已閱讀5頁,還剩43頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、第 9 章圖形函數(shù) 1計(jì)算機(jī)圖形是由像素表示的,一個(gè)像素通常被視為圖像的最小完整采樣。計(jì)算機(jī)顯示的圖像一般有兩種形式:矢量圖和位圖。矢量圖使用點(diǎn)、直線和曲線來描述圖形,它具有顏色、形狀、輪廓、大小和屏幕位置等屬性,矢量圖形最大的優(yōu)點(diǎn)是無論放大、縮小或旋轉(zhuǎn)等失真;最大的缺點(diǎn)是難以表現(xiàn)色彩層次豐富的逼真圖像效果。位圖亦稱為點(diǎn)陣圖,是有無數(shù)個(gè)色彩點(diǎn)排列組成的圖像。擴(kuò)大位圖的效果是增大單個(gè)像素,從而使線條和形狀顯得參差不齊。然而,如果從稍遠(yuǎn)的位置它,位圖圖像的顏色和形狀又顯得是連續(xù)的。用 TC 2.0 寫程序時(shí),經(jīng)常碰到這個(gè)函數(shù)無法(bgi)初始化,怎么辦?只需 tc20目錄下的*.bgi 文件拷貝到

2、 c 程序目錄中即可通過。當(dāng)然用進(jìn)行圖形化操作,看選用哪中模式了,cga、ega、vga 等,它們都對應(yīng)某個(gè).bgi 文件,當(dāng)然如果不知道,將所有的.bgi 文件拷過去即可!9.1點(diǎn)線型函數(shù)本節(jié)介紹點(diǎn)、線、曲線相關(guān)的函數(shù),計(jì)算機(jī)繪圖是繪制點(diǎn),點(diǎn)可以組本的線型加上顏色又可以各種各樣的圖像。直線、曲線等,而這些基9.1.1置像素的顏色 getpixel()獲取指【函數(shù)原型】int far getpixel(int x,int y)【功能講解】獲取指定像素的顏色。【參數(shù)說明】x:X 坐標(biāo),y:Y 坐標(biāo)。【程序示例】在屏幕各個(gè)像素顯示隨機(jī)顏色。/*函數(shù) getpixel()示例 TurboC 運(yùn)行*/

3、 #include <graphics.h>#include <stdlib.h> #include <stdio.h> #include <conio.h> #include <dos.h>#define PIXEL_COUNT 1000#define DELAY_TIME100/*in milliseconds*/ int main(void)/*請求自檢*/int gdriver = DETECT, gmode, errorcode;int i, x, y, color, maxx, maxy, maxcolor, seed;/

4、*初始化圖形系統(tǒng)*/ initgraph(&gdriver, &gmode, "");/*初始化結(jié)果*/errorcode = graphresult();if (errorcode != grOk)/*如果不正確*/運(yùn)行程序,結(jié)果如圖 9-1 所示。圖 9-1 獲取指置像素的顏色printf("Graphics error: %sn", grapherrormsg(errorcode); printf("Press any key to halt:");getch();exit(1); /*異常*/maxx = ge

5、tmaxx() + 1; /*獲取屏幕的最大 X 坐標(biāo)*/ maxy = getmaxy() + 1; /*獲取屏幕的最大 Y 坐標(biāo)*/ maxcolor = getmaxcolor() + 1;while (!kbhit()/*初始化隨機(jī)函數(shù)*/ seed = random(32767); srand(seed);for (i=0; i<PIXEL_COUNT; i+)x = random(maxx); y = random(maxy);color = random(maxcolor);putpixel(x, y, color); /*在指定的位置繪制像素*/delay(DELAY_T

6、IME);/*延時(shí)*/ srand(seed);for (i=0; i<PIXEL_COUNT; i+)x = random(maxx); y = random(maxy);color = random(maxcolor);if (color = getpixel(x, y)/*獲取顏色值并與隨機(jī)顏色比較*/putpixel(x, y, 0); /*在指定的位置繪制像素*/getch();closegraph(); /*關(guān)閉圖形系統(tǒng)*/ return 0;【】示例程序運(yùn)行結(jié)果為實(shí)際效果圖的一個(gè)剪切部分。程序開始部分是使用函數(shù) initgraph()初始化圖形系統(tǒng),然后函數(shù) graphre

7、sult(),根據(jù)返回值判斷是否初始化成功,如果失敗則提示出錯(cuò)本程序。初始化成功則繼續(xù)往下進(jìn)行。函數(shù) getmaxx()和 getmaxy()分別獲取屏幕的最大 X、Y 坐標(biāo), getmaxcolor()則是回去能使用的最大顏色值。再往下是個(gè)關(guān)鍵的 while 循環(huán),這個(gè)循環(huán)直到有按鍵按下才終止,循環(huán)內(nèi)部先是初始化隨機(jī)函數(shù),第一個(gè) for 循環(huán)是 PIXEL_COUNT 次產(chǎn)生隨機(jī)的 xy 坐標(biāo),在該坐標(biāo)處使用 putpixel()繪制像素。循環(huán)結(jié)束使用 delay 延時(shí),再次 for 循環(huán),只是這次產(chǎn)生隨機(jī)像素的時(shí)候先調(diào)用 getpixel(x,y)獲取該坐標(biāo)像素顏色,然后判斷是否該坐標(biāo)的像

8、素顏色是否跟產(chǎn)生的隨機(jī)顏色一致,如果一樣則使用 putpixel(x,y,0)重新上色。如果用戶按下任意鍵盤按鍵則形系統(tǒng)。while 循環(huán),關(guān)閉圖9.1.2置繪制像素 putpixel()在指【函數(shù)原型】void putpixel(int x,int y,int pixelcolor)【功能講解】在指定的位置繪制像素。【參數(shù)說明】x:X 坐標(biāo),y:Y 坐標(biāo),pixelcolor:顏色值。【程序示例】在屏幕各個(gè)像素顯示隨機(jī)顏色/*函數(shù) getpixel()示例 TurboC 運(yùn)行*/ #include <graphics.h>#include <stdlib.h> #in

9、clude <stdio.h> #include <conio.h> #include <dos.h>#define PIXEL_COUNT 1000#define DELAY_TIME100/*in milliseconds*/ int main(void)/*請求自檢*/int gdriver = DETECT, gmode, errorcode;int i, x, y, color, maxx, maxy, maxcolor, seed;/*初始化圖形系統(tǒng)*/ initgraph(&gdriver, &gmode, "&quo

10、t;);/*初始化結(jié)果*/errorcode = graphresult();if (errorcode != grOk)/*如果不正確*/printf("Graphics error: %sn", grapherrormsg(errorcode); printf("Press any key to halt:");getch();exit(1); /*異常*/maxx = getmaxx() + 1; /*獲取屏幕的最大 X 坐標(biāo)*/ maxy = getmaxy() + 1; /*獲取屏幕的最大 Y 坐標(biāo)*/ maxcolor = getmaxcol

11、or() + 1;while (!kbhit()/*初始化隨機(jī)函數(shù)*/運(yùn)行程序,結(jié)果如圖 9-2 所示。圖 9-2 在指置像素的顏色【】示例程序運(yùn)行結(jié)果為實(shí)際效果圖的一個(gè)剪切部分。程序開始部分是使用函數(shù) initgraph()函數(shù) graphresult(),根據(jù)返回值判斷是否初始化成功,如果失敗則提示出錯(cuò)初始化圖形系統(tǒng),然后本程序。初始化成功則繼續(xù)往下進(jìn)行。函數(shù) getmaxx()和 getmaxy()分別獲取屏幕的最大 X、Y 坐標(biāo), getmaxcolor()則是回去能使用的最大顏色值。再往下是個(gè)關(guān)鍵的 while 循環(huán),這個(gè)循環(huán)直到有按鍵按下才終止,循環(huán)內(nèi)部先是初始化隨機(jī)函數(shù),第一個(gè)

12、for 循環(huán)是 PIXEL_COUNT 次產(chǎn)生隨機(jī)的 xy 坐標(biāo),在該坐標(biāo)處使用 putpixel()繪制像素。循環(huán)結(jié)束使用 delay 延時(shí),再次 for 循環(huán),只是這次產(chǎn)生隨機(jī)像素的時(shí)候先調(diào)用 getpixel(x,y)獲取該坐標(biāo)像素顏色,然后判斷是否該坐標(biāo)的像素顏色是否跟產(chǎn)生的隨機(jī)顏色一致,如果一樣則使用 putpixel(x,y,0)重新上色。如果用戶按下任意鍵盤按鍵則形系統(tǒng)。while 循環(huán),關(guān)閉圖seed = random(32767); srand(seed);for (i=0; i<PIXEL_COUNT; i+)x = random(maxx); y = random(

13、maxy);color = random(maxcolor);putpixel(x, y, color); /*在指定的位置繪制像素*/delay(DELAY_TIME);/*延時(shí)*/ srand(seed);for (i=0; i<PIXEL_COUNT; i+)x = random(maxx); y = random(maxy);color = random(maxcolor);if (color = getpixel(x, y)/*獲取顏色值并與隨機(jī)顏色比較*/putpixel(x, y, 0); /*在指定的位置繪制像素*/getch();closegraph(); /*關(guān)閉圖形

14、系統(tǒng)*/ return 0;9.1.3在指定的兩點(diǎn)之間畫一直線 line()【函數(shù)原型】void far line(int x0,int y0,int x1,int y1)【功能講解】在指定的兩點(diǎn)之間畫一直線。【參數(shù)說明】x0、y0:為點(diǎn) 0 的 XY 坐標(biāo)值,x1、y1:為點(diǎn) 1 的 XY 坐標(biāo)值?!境绦蚴纠吭谄聊坏淖钚∽鴺?biāo)和最大坐標(biāo)之間畫一直線。運(yùn)行程序,結(jié)果如圖 9-3 所示。/*函數(shù) line()示例 TurboC 運(yùn)行*/ #include <graphics.h>#include <stdlib.h> #include <stdio.h> #i

15、nclude <conio.h> int main(void)/*請求自動檢測*/int gdriver = DETECT, gmode, errorcode; int xmax, ymax;/*初始化圖形系統(tǒng)*/initgraph(&gdriver, &gmode, "");/*初始化結(jié)果*/ errorcode = graphresult();/*如果有錯(cuò)誤發(fā)生*/if (errorcode != grOk)printf("Graphics error: %sn", grapherrormsg(errorcode);pri

16、ntf("Press any key to halt:"); getch();exit(1);setcolor(getmaxcolor(); xmax = getmaxx(); ymax = getmaxy();/*在最小坐標(biāo)和最大坐標(biāo)之間畫一直線*/line(0, 0, xmax, ymax);getch(); closegraph(); return 0;圖 9-3 兩點(diǎn)之間畫直線【】示例程序運(yùn)行結(jié)果為實(shí)際效果圖的一個(gè)剪切部分。程序開始部分是使用函數(shù) initgraph()函數(shù) graphresult(),根據(jù)返回值判斷是否初始化成功,如果失敗則提示出錯(cuò)初始化圖形系統(tǒng),

17、然后本程序。初始化成功則繼續(xù)往下進(jìn)行。函數(shù) getmaxx()和 getmaxy()分別獲取屏幕的最大 X、Y 坐標(biāo),getmaxcolor()是獲取能使用的最大顏色值,setcolor()以此為參數(shù)設(shè)置為當(dāng)前畫線顏色,line()在最小坐標(biāo)和最大坐標(biāo)直接畫一條直線,如運(yùn)行結(jié)果所示。最后是關(guān)閉圖形系統(tǒng)程序。9.1.4從當(dāng)前點(diǎn)到有一定相對距離的點(diǎn)畫直線 linerel()【函數(shù)原型】void far linerel(int dx,int dy)【功能講解】從當(dāng)前點(diǎn)到有一定相對距離的點(diǎn)畫直線?!緟?shù)說明】dx:相對當(dāng)前點(diǎn) x 坐標(biāo)相差的距離值,dy:相對當(dāng)前點(diǎn) y 坐標(biāo)相差的距離值?!境绦蚴纠繌?/p>

18、當(dāng)前點(diǎn)到有一定相對距離的點(diǎn)畫直線。/*函數(shù) linerel()示例 TurboC 運(yùn)行*/ #include <graphics.h>#include <stdlib.h> #include <stdio.h> #include <conio.h> int main(void)/*請求自動檢測*/int gdriver = DETECT, gmode, errorcode; char msg80;/*初始化圖形系統(tǒng)*/initgraph(&gdriver, &gmode, "");/*初始化結(jié)果*/ error

19、code = graphresult();/*如果有錯(cuò)誤發(fā)生*/if (errorcode != grOk)printf("Graphics error: %sn", grapherrormsg(errorcode);printf("Press any key to halt:"); getch();exit(1);/*移動當(dāng)前點(diǎn)至(20, 30)*/ moveto(20, 30);/*創(chuàng)建并輸出信息*/運(yùn)行程序,結(jié)果如圖 9-4 所示。圖 9-4 從當(dāng)前點(diǎn)到一相對距離的點(diǎn)畫直線【】示例程序運(yùn)行結(jié)果為實(shí)際效果圖的一個(gè)剪切部分。程序開始部分是使用函數(shù) in

20、itgraph()初始化圖形系統(tǒng),然后函數(shù) graphresult(),根據(jù)返回值判斷是否初始化成功,如果失敗則提示出錯(cuò)本程序。初始化成功則繼續(xù)往下進(jìn)行,moveto(20, 30)把當(dāng)前點(diǎn)移動到坐標(biāo)(20,30)處,sprintf 函數(shù)格式化輸出信息,調(diào)用函數(shù) outtextxy()在坐標(biāo)位置輸出該信息。然后使用 linerel()函數(shù)在當(dāng)前點(diǎn)相對(100,100)的點(diǎn)之間畫一直線,同樣在當(dāng)前位置輸出信息。有效果圖可見當(dāng)前位置已經(jīng)變成(120,130)了。最后是關(guān)閉圖形系統(tǒng)程序。9.1.5設(shè)置當(dāng)前線的寬度和類型 setlinestyle()【函數(shù)原型】void far setlinestyl

21、e(int linestype, unsigned upattern,int width)【功能講解】設(shè)置當(dāng)前線的寬度和類型。【參數(shù)說明】linestype:線型,upattern:用戶自定義類型時(shí)使用,如果使用系統(tǒng)預(yù)定義的線型則為0。width:線寬?!境绦蚴纠渴褂糜脩舳x的線型畫線。/*函數(shù) setlinestyle()示例 TurboC 運(yùn)行*/ #include <graphics.h>#include <stdlib.h>#include <stdio.h> #include <conio.h>sprintf(msg, "

22、(%d, %d)", getx(), gety(); outtextxy(20, 30, msg);/*從當(dāng)前位置點(diǎn)(CP)到與 CP 有一給定相對距離的點(diǎn)畫一直線. */linerel(100, 100);/*創(chuàng)建并輸出信息在當(dāng)前點(diǎn)*/ sprintf(msg, " (%d, %d)", getx(), gety(); outtext(msg);/*clean up*/ getch(); closegraph(); return 0;運(yùn)行程序,結(jié)果如圖 9-5 所示。#include <string.h>/*線型名字*/ char *lname =

23、"SOLID_LINE", "DOTTED_LINE", "CENTER_LINE", "DASHED_LINE", "USERBIT_LINE"int main(void)/*請求自動檢測*/int gdriver = DETECT, gmode, errorcode; int style, midx, midy, userpat;char stylestr40;initgraph(&gdriver, &gmode, "");/*初始化圖形系統(tǒng)*/ erro

24、rcode = graphresult();/*初始化結(jié)果*/*如果有錯(cuò)誤發(fā)生*/if (errorcode != grOk)printf("Graphics error: %sn", grapherrormsg(errorcode);printf("Press any key to halt:"); getch();exit(1);midx = getmaxx() / 2; midy = getmaxy() / 2;/*用戶定義線型*/*binary: "0000000000000001" */userpat = 1;for (st

25、yle=SOLID_LINE; style<=USERBIT_LINE; style+)setlinestyle(style, userpat, 1);/*選擇線型*/strcpy(stylestr, lnamestyle);/*轉(zhuǎn)換線型為字符*/line(0, 0, midx-10, midy);/*畫線*/ rectangle(0, 0, getmaxx(), getmaxy();/*繪制矩形*/ outtextxy(midx, midy, stylestr);/*輸出信息*/getch();/*等待按鍵*/cleardevice();/*clean up*/ closegraph(

26、); return 0;圖 9-5 設(shè)置當(dāng)前線的寬度和類型】示例程序運(yùn)行結(jié)果為實(shí)際效果圖的一個(gè)剪切部分。程序開始部分是使用函數(shù) initgraph()【初始化圖形系統(tǒng),然后函數(shù) graphresult(),根據(jù)返回值判斷是否初始化成功,如果失敗則提示出錯(cuò)本程序。初始化成功則繼續(xù)往下進(jìn)行,getmaxx()和 getmaxy()函數(shù)分別獲取屏幕上 xy 坐標(biāo)的最大值, 除以 2 之后賦值給 midx、midy,因?yàn)槭褂昧擞脩糇远x線型所以需要把參數(shù) userpat 指定為 1。for 循環(huán)把各線型逐個(gè)使用一遍,在循環(huán)中首先使用 setlinestyle 函數(shù)把當(dāng)前線型設(shè)置為當(dāng)前循環(huán)線型,轉(zhuǎn)換線型

27、字符名并畫一個(gè)斜線和一個(gè)矩形,再在中間輸出線型字符信息,等待按任意鍵循環(huán)下個(gè)線型。for 循環(huán)結(jié)束后關(guān)閉圖形系統(tǒng)程序。9.1.6獲取可以傳遞給函數(shù) setcolor 的最大顏色值 getmaxcolor()【函數(shù)原型】int far getmaxcolor(void)【功能講解】獲取可以傳遞給函數(shù) setcolor 的最大顏色值。【參數(shù)說明】無?!境绦蚴纠吭谄聊桓鱾€(gè)像素顯示隨機(jī)顏色。/*函數(shù) getmaxcolor ()示例 TurboC 運(yùn)行*/ #include <graphics.h>#include <stdlib.h> #include <stdio.

28、h> #include <conio.h> #include <dos.h>#define PIXEL_COUNT 1000#define DELAY_TIME100/*in milliseconds*/ int main(void)/*請求自檢*/int gdriver = DETECT, gmode, errorcode;int i, x, y, color, maxx, maxy, maxcolor, seed;/*初始化圖形系統(tǒng)*/ initgraph(&gdriver, &gmode, "");/*初始化結(jié)果*/err

29、orcode = graphresult();if (errorcode != grOk)/*如果不正確*/運(yùn)行程序,結(jié)果如圖 9-6 所示。printf("Graphics error: %sn", grapherrormsg(errorcode); printf("Press any key to halt:");getch();exit(1); /*異常*/maxx = getmaxx() + 1; /*獲取屏幕的最大 X 坐標(biāo)*/ maxy = getmaxy() + 1; /*獲取屏幕的最大 Y 坐標(biāo)*/ maxcolor = getmaxco

30、lor() + 1;while (!kbhit()/*初始化隨機(jī)函數(shù)*/ seed = random(32767); srand(seed);for (i=0; i<PIXEL_COUNT; i+)x = random(maxx); y = random(maxy);color = random(maxcolor);putpixel(x, y, color);/*在指定的位置繪制像素*/delay(DELAY_TIME);/*延時(shí)*/ srand(seed);for (i=0; i<PIXEL_COUNT; i+)x = random(maxx); y = random(maxy)

31、;color = random(maxcolor);if (color = getpixel(x, y)/*獲取顏色值并與隨機(jī)顏色比較*/putpixel(x, y, 0);/*在指定的位置繪制像素*/*clean up*/ getch();closegraph(); /*關(guān)閉圖形系統(tǒng)*/return 0;圖 9-6 獲取顏色最大值【】示例程序運(yùn)行結(jié)果為實(shí)際效果圖的一個(gè)剪切部分。程序開始部分是使用函數(shù) initgraph()初始化圖形系統(tǒng),然后函數(shù) graphresult(),根據(jù)返回值判斷是否初始化成功,如果失敗則提示出錯(cuò)本程序。初始化成功則繼續(xù)往下進(jìn)行。函數(shù) getmaxx()和 getm

32、axy()分別獲取屏幕的最大 X、Y 坐標(biāo), getmaxcolor()則是回去能使用的最大顏色值。再往下是個(gè)關(guān)鍵的 while 循環(huán),這個(gè)循環(huán)直到有按鍵按下才終止,循環(huán)內(nèi)部先是初始化隨機(jī)函數(shù),第一個(gè) for 循環(huán)是 PIXEL_COUNT 次產(chǎn)生隨機(jī)的 xy 坐標(biāo),在該坐標(biāo)處使用 putpixel()繪制像素。循環(huán)結(jié)束使用 delay 延時(shí),再次 for 循環(huán),只是這次產(chǎn)生隨機(jī)像素的時(shí)候先調(diào)用 getpixel(x,y)獲取該坐標(biāo)像素顏色,然后判斷是否該坐標(biāo)的像素顏色是否跟產(chǎn)生的隨機(jī)顏色一致,如果一樣則使用 putpixel(x,y,0)重新上色。如果用戶按下任意鍵盤按鍵則形系統(tǒng)。while

33、 循環(huán),關(guān)閉圖9.1.7設(shè)置當(dāng)前畫線顏色 setcolor()【函數(shù)原型】void far setcolor(int color)【功能講解】設(shè)置當(dāng)前畫線顏色?!緟?shù)說明】color:顏色值。【程序示例】設(shè)置當(dāng)前畫線顏色并把顏色值顯示在屏幕中間。/*函數(shù)setcolor()示例 TurboC 運(yùn)行*/ #include <graphics.h>#include <stdlib.h> #include <string.h> #include <stdio.h> #include <conio.h> int main(void)/*請求系

34、統(tǒng)自檢*/int gdriver = DETECT, gmode, errorcode; int color, midx, midy;char colname35;/*初始化圖形系統(tǒng)*/ initgraph(&gdriver, &gmode, "");/*初始化結(jié)果*/errorcode = graphresult();/*如果有錯(cuò)誤*/if (errorcode != grOk)printf("Graphics error: %sn", grapherrormsg(errorcode);printf("Press any ke

35、y to halt:"); getch();/*異常終止*/exit(1);midx = getmaxx() / 2;midy = getmaxy() / 2; setcolor(getmaxcolor();運(yùn)行程序,結(jié)果如圖 9-7 所示。圖 9-7 設(shè)置當(dāng)前畫線顏色【】示例程序運(yùn)行結(jié)果為實(shí)際效果圖的一個(gè)剪切部分。程序開始部分是使用函數(shù) initgraph()初始化圖形系統(tǒng),然后函數(shù) graphresult(),根據(jù)返回值判斷是否初始化成功,如果失敗則提示出錯(cuò)本程序。初始化成功則繼續(xù)往下進(jìn)行。函數(shù) getmaxx()和 getmaxy()分別獲取屏幕的最大 X、Y 坐標(biāo),所以 mi

36、dx、midy 保存的值即是屏幕的中間坐標(biāo)。getmaxcolor()獲取能設(shè)置的最大顏色(一般為白色),setcolor 把獲取的最大顏色設(shè)置為當(dāng)前畫線顏色,函數(shù) settextjustify()設(shè)置字置為中間,然后調(diào)用getcolor()獲取當(dāng)前顏色保存在變量 color 中,再使用 itoa()轉(zhuǎn)為字符串,使用 outtextxy()把顏色名字輸出在屏幕中間。最后是關(guān)閉圖形系統(tǒng)程序。9.1.8獲取當(dāng)前畫線顏色 getcolor()【函數(shù)原型】int far getcolor(void)【功能講解】獲取當(dāng)前畫線顏色【參數(shù)說明】無【程序示例】把當(dāng)前畫線的顏色顯示在屏幕中間。/*函數(shù) getc

37、olor()示例 TurboC 運(yùn)行*/ #include <graphics.h>#include <stdlib.h> #include <string.h> #include <stdio.h> #include <conio.h> int main(void)/*請求系統(tǒng)自檢*/int gdriver = DETECT, gmode, errorcode;settextjustify(CENTER_TEXT, CENTER_TEXT);/*設(shè)置中間顯示*/ color = getcolor();/*獲取現(xiàn)在使用顏色*/itoa

38、(color, colname, 10);/*轉(zhuǎn)換顏色為字符串*/ strcat(colname," is the current drawing color.");outtextxy(midx, midy, colname);/*顯示顏色名字*/getch();/*/closegraph(); return 0;運(yùn)行程序,結(jié)果如圖 9-8 所示。圖 9-8 設(shè)置當(dāng)前畫線顏色【】示例程序運(yùn)行結(jié)果為實(shí)際效果圖的一個(gè)剪切部分。程序開始部分是使用函數(shù) initgraph()初始化圖形系統(tǒng),然后函數(shù) graphresult(),根據(jù)返回值判斷是否初始化成功,如果失敗則提示出錯(cuò)本程序

39、。初始化成功則繼續(xù)往下進(jìn)行。函數(shù) getmaxx()和 getmaxy()分別獲取屏幕的最大 X、Y 坐標(biāo),所以 midx、midy 保存的值即是屏幕的中間坐標(biāo)。getmaxcolor()獲取能設(shè)置的最大顏色(一般為白色),setcolor 把獲取的最大顏色設(shè)置為當(dāng)前畫線顏色,函數(shù) settextjustify()設(shè)置字置為中間,然后調(diào)用getcolor()獲取當(dāng)前顏色保存在變量 color 中,再使用 itoa()轉(zhuǎn)為字符串,使用 outtextxy()把顏色名字輸出在屏幕中間。最后是關(guān)閉圖形系統(tǒng)程序。9.1.9獲取當(dāng)前線型信息 getlinesettings()【函數(shù)原型】void far

40、 getlinesettings(struct linesettingstype far* lininfo)int color, midx, midy; char colname35;initgraph(&gdriver, &gmode, "");/*初始化圖形系統(tǒng)*/errorcode = graphresult();/*初始化結(jié)果*/if (errorcode != grOk)/*如果有錯(cuò)誤*/printf("Graphics error: %sn", grapherrormsg(errorcode);printf("Pre

41、ss any key to halt:"); getch();exit(1);/*異常終止*/midx = getmaxx() / 2; midy = getmaxy() / 2; setcolor(getmaxcolor();settextjustify(CENTER_TEXT, CENTER_TEXT);/*設(shè)置中間顯示*/color = getcolor();/*獲取現(xiàn)在使用顏色*/itoa(color, colname, 10);/*轉(zhuǎn)換顏色為字符串*/ strcat(colname," is the current drawing color.");ou

42、ttextxy(midx, midy, colname);/*顯示顏色名字*/getch();/*/closegraph(); return 0;【功能講解】獲取當(dāng)前線型、模式和寬度。【參數(shù)說明】lininfo:線型信息結(jié)構(gòu)體指針【程序示例】獲取當(dāng)前線型信息并顯示。/*函數(shù) getlinesettings()示例 運(yùn)行于 TurboC 下*/ #include <graphics.h>#include <stdlib.h> #include <stdio.h> #include <conio.h>/*線型名字*/char *lname = &qu

43、ot;SOLID_LINE","DOTTED_LINE", "CENTER_LINE", "DASHED_LINE", "USERBIT_LINE"int main(void)/*請求系統(tǒng)自檢*/int gdriver = DETECT, gmode, errorcode; struct linesettingstype lineinfo;int midx, midy;char lstyle80, lpattern80, lwidth80;initgraph(&gdriver, &gmod

44、e, "");/*初始化圖形系統(tǒng)*/ errorcode = graphresult();/*初始化結(jié)果*/if (errorcode != grOk)/*如果有錯(cuò)誤*/printf("Graphics error: %sn", grapherrormsg(errorcode); printf("Press any key to halt:");getch();exit(1); /*異常*/midx = getmaxx() / 2; midy = getmaxy() / 2;getlinesettings(&lineinfo)

45、;/*獲取當(dāng)前線型信息*/sprintf(lstyle, "%s is the line style.",/*轉(zhuǎn)換線型信息為字符串*/ lnamelineinfo.linestyle);sprintf(lpattern, "0x%X is the user-defined line pattern.", lineinfo.upattern);sprintf(lwidth, "%d is the line thickness.", lineinfo.thickness);/*顯示出來*/settextjustify(CENTER_TEX

46、T, CENTER_TEXT); outtextxy(midx, midy, lstyle);outtextxy(midx, midy+2*textheight("W"), lpattern); outtextxy(midx, midy+4*textheight("W"), lwidth); getch();closegraph(); return 0;運(yùn)行程序,結(jié)果如圖 9-9 所示。圖 9-9 獲取當(dāng)前線型信息】示例程序運(yùn)行結(jié)果為實(shí)際效果圖的一個(gè)剪切部分。程序開始部分是使用函數(shù) initgraph()【函數(shù) graphresult(),根據(jù)返回值判斷

47、是否初始化成功,如果失敗則提示出錯(cuò)初始化圖形系統(tǒng),然后本程序。初始化成功則繼續(xù)往下進(jìn)行。函數(shù) getmaxx()和 getmaxy()分別獲取屏幕的最大 X、Y 坐標(biāo), 所以 midx、midy 保存的值即是屏幕的中間坐標(biāo)。然后 getlinesettings()獲取線型信息保存在結(jié)構(gòu)體 lineinfo中,下面的 sprintf 是轉(zhuǎn)換線型信息為字符串,再使用 settextjustify()設(shè)置文字對齊方式,outtextxy()是輸出線型信息在指定的坐標(biāo)處。最后關(guān)閉圖形顯示系統(tǒng),程序。9.1.10繪制矩形rectangle()【函數(shù)原型】void far rectangle(int le

48、ft, int top, int right, int bottom)【功能講解】繪制矩形?!緟?shù)說明】left:矩形左上角頂點(diǎn) X,top:矩形左上角 Y 坐標(biāo)。right:矩形右下角 X 坐標(biāo),bottom: 矩形右下角 Y 坐標(biāo)?!境绦蚴纠坷L制一個(gè)矩形。/*函數(shù) rectangle()示例 運(yùn)行于 TurboC 下*/ #include <graphics.h>#include <stdlib.h> #include <stdio.h> #include <conio.h>int main(void)int gdriver = DETEC

49、T, gmode, errorcode; int left, top, right, bottom;initgraph(&gdriver, &gmode, "");/*初始化圖形顯示系統(tǒng)*/errorcode = graphresult();/*初始化結(jié)果*/if (errorcode != grOk)/*如果有錯(cuò)誤發(fā)生*/printf("Graphics error: %sn", grapherrormsg(errorcode); printf("Press any key to halt:");getch();ex

50、it(1);/*異常*/left = getmaxx() / 2 - 50; top = getmaxy() / 2 - 50;運(yùn)行程序,結(jié)果如圖 9-10 所示。圖 9-10 獲取當(dāng)前線型信息【】程序開始部分是使用函數(shù) initgraph()初始化圖形系統(tǒng),然后函數(shù) graphresult(),根據(jù)返回值判斷是否初始化成功,如果失敗則提示出錯(cuò)本程序。初始化成功則繼續(xù)往下進(jìn)行。函數(shù)getmaxx()和getmaxy()分別獲取屏幕的最大 X、Y 坐標(biāo),變量 left、top、right、bottom 通過在屏幕中間位置加減 50 指定一個(gè)矩形區(qū)域,之后調(diào)用函數(shù) rectangle()繪制矩形出

51、來,最后是關(guān)閉圖形系統(tǒng)程序。9.1.11繪制多邊形 drawpoly()【函數(shù)原型】void far drawpoly(int numpoints, int far* polypoints);【功能講解】繪制多邊形?!緟?shù)說明】numpoints:頂點(diǎn)個(gè)數(shù)。polypoints:頂點(diǎn)坐標(biāo)數(shù)組。每一個(gè)頂點(diǎn)的坐標(biāo)都定義為 x,y, 并且 x 在前。值得注意的是當(dāng)畫一個(gè)封閉的多邊形時(shí),numpoints 的值取實(shí)際多邊形的頂點(diǎn)數(shù)加一,并且數(shù)組 polypoints 中第一個(gè)和最后一個(gè)點(diǎn)的坐標(biāo)相同。【程序示例】繪制一個(gè)閉合的多邊形。/*函數(shù) drawpoly()示例 運(yùn)行于 TurboC 下*/ #i

52、nclude <graphics.h>#include <stdlib.h> #include <stdio.h> #include <conio.h> int main(void)int gdriver = DETECT, gmode, errorcode; int maxx, maxy;int poly10;initgraph(&gdriver, &gmode, "");/*初始化圖形顯示系統(tǒng)*/ errorcode = graphresult();/*初始化結(jié)果*/if (errorcode != grO

53、k)/*如果有錯(cuò)誤發(fā)生*/right = getmaxx() / 2 + 50; bottom = getmaxy() / 2 + 50;rectangle(left,top,right,bottom);/*繪制矩形*/getch(); closegraph(); return 0;運(yùn)行程序,結(jié)果如圖 9-11 所示。圖 9-11 繪制多邊形】程序開始部分是使用函數(shù) initgraph()初始化圖形系統(tǒng),然后函數(shù) graphresult(),根【據(jù)返回值判斷是否初始化成功,如果失敗則提示出錯(cuò)本程序。初始化成功則繼續(xù)往下進(jìn)行。函數(shù)getmaxx()和 getmaxy()分別獲取屏幕的最大 X、Y

54、 坐標(biāo),然后根據(jù)這兩個(gè)數(shù)據(jù)指定四個(gè)頂點(diǎn),由于是繪制閉合的四邊形所以頂點(diǎn)個(gè)數(shù)要比實(shí)際多一個(gè)。然后使用 drawpoly()繪制多邊形,之后關(guān)閉圖形系統(tǒng)退printf("Graphics error: %sn", grapherrormsg(errorcode); printf("Press any key to halt:");getch();exit(1);/*異常*/maxx = getmaxx(); maxy = getmaxy();poly0 = 20;/*1st vertext*/ poly1 = maxy / 2;poly2 = maxx -

55、20;/*2nd*/ poly3 = 20;poly4 = maxx - 50;/*3rd*/ poly5 = maxy - 20;poly6 = maxx / 2;/*4th*/ poly7 = maxy / 2;/*最后一個(gè)坐標(biāo)點(diǎn)與第一個(gè)相同,這樣才能閉合*/poly8 = poly0;poly9 = poly1;drawpoly(5, poly);/*繪制多邊型*/ getch();closegraph(); return 0;出程序。9.1.12繪制多邊形并填充 fillpoly()【函數(shù)原型】void far fillpoly(int numpoints, int far* poly

56、points)【功能講解】繪制并填充一個(gè)多邊形?!緟?shù)說明】numpoints:頂點(diǎn)個(gè)數(shù)。polypoints:頂點(diǎn)坐標(biāo)數(shù)組。每一個(gè)頂點(diǎn)的坐標(biāo)都定義為 x, y, 并且 x 在前。numpoints 的值取實(shí)際多邊形的頂點(diǎn)數(shù)加一, 并且數(shù)組 polypoints 中第一個(gè)和最后一個(gè)點(diǎn)的坐標(biāo)相同?!境绦蚴纠揩@取數(shù)字鍵盤鎖定鍵狀態(tài)并設(shè)置其為開。/*函數(shù) fillwpoly()示例 運(yùn)行于 TurboC 下*/ #include <graphics.h>#include <stdlib.h> #include <stdio.h> #include <con

57、io.h> int main(void)int gdriver = DETECT, gmode, errorcode; int i,maxx, maxy;int poly10;initgraph(&gdriver, &gmode, "");/*初始化圖形顯示系統(tǒng)*/ errorcode = graphresult();/*初始化結(jié)果*/if (errorcode != grOk)/*如果有錯(cuò)誤發(fā)生*/printf("Graphics error: %sn", grapherrormsg(errorcode); printf(&quo

58、t;Press any key to halt:");getch();exit(1);/*異常*/maxx = getmaxx(); maxy = getmaxy();poly0 = 20;/*1st vertext*/ poly1 = maxy / 2;poly2 = maxx - 20; /*2nd*/ poly3 = 20;poly4 = maxx - 50; /*3rd*/ poly5 = maxy - 20;/*最后一個(gè)坐標(biāo)點(diǎn)與第一個(gè)相同,這樣才能閉合*/poly6 = maxx / 2; poly7 = maxy / 2;/*循環(huán)填充類型*/for (i=EMPTY_FILL; i<USER_FILL; i+)setfillstyle(i, getmaxcolor();/*設(shè)

溫馨提示

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

評論

0/150

提交評論