計(jì)算機(jī)圖形學(xué)上機(jī)指導(dǎo)_第1頁
計(jì)算機(jī)圖形學(xué)上機(jī)指導(dǎo)_第2頁
計(jì)算機(jī)圖形學(xué)上機(jī)指導(dǎo)_第3頁
計(jì)算機(jī)圖形學(xué)上機(jī)指導(dǎo)_第4頁
計(jì)算機(jī)圖形學(xué)上機(jī)指導(dǎo)_第5頁
已閱讀5頁,還剩38頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、 Turbo C 2.0Turbo C 2.0包含有包含有460460多個(gè)庫函數(shù),多個(gè)庫函數(shù), 其中有其中有 70 70 多個(gè)圖形函數(shù),這些函數(shù)多個(gè)圖形函數(shù),這些函數(shù) 包括了繪圖、處理圖象及圖素、屏幕包括了繪圖、處理圖象及圖素、屏幕 及視圖區(qū)控制、顏色及線型設(shè)置、狀及視圖區(qū)控制、顏色及線型設(shè)置、狀 態(tài)查詢和出錯(cuò)處理等,這使得態(tài)查詢和出錯(cuò)處理等,這使得 TurboTurbo 具有很強(qiáng)的圖形功能。具有很強(qiáng)的圖形功能。 第第部分部分 Turbo C繪圖程序設(shè)計(jì)繪圖程序設(shè)計(jì) 教材P267 .圖形顯示器的工作方式圖形顯示器的工作方式 IBM PC IBM PC 機(jī)的顯示器可以在兩種基機(jī)的顯示器可以在兩種

2、基 本視頻方式下工作:一種是文本方本視頻方式下工作:一種是文本方 式;另一種是圖形方式。式;另一種是圖形方式。 ( 1 )文本方式文本方式 在文本方式下,屏幕上可以在文本方式下,屏幕上可以 顯示的最小單位是字符,字顯示的最小單位是字符,字 符在屏幕上以行、列排列,符在屏幕上以行、列排列, 如如2580個(gè)字符個(gè)字符 。 ( 2 )圖形方式圖形方式 在圖形方式下,屏幕上可以控制在圖形方式下,屏幕上可以控制 的最小單元稱作像素的最小單元稱作像素 ( pixel ) , 它是組成圖形的基本元素,一般它是組成圖形的基本元素,一般 叫作叫作“點(diǎn)點(diǎn)”。通常把屏幕上所包。通常把屏幕上所包 含像素的個(gè)數(shù)叫做分辨

3、率。分辨含像素的個(gè)數(shù)叫做分辨率。分辨 率越高,顯示的圖形越細(xì)致、質(zhì)率越高,顯示的圖形越細(xì)致、質(zhì) 量越好量越好。 在圖形方式下,屏幕上每個(gè)像素的顯在圖形方式下,屏幕上每個(gè)像素的顯 示位置用屏幕坐標(biāo)系來描述。在該坐示位置用屏幕坐標(biāo)系來描述。在該坐 標(biāo)系中,屏幕左上角為坐標(biāo)系的原點(diǎn),標(biāo)系中,屏幕左上角為坐標(biāo)系的原點(diǎn), 坐標(biāo)值為坐標(biāo)值為 ( 0 , 0 ) ; 水平方向?yàn)檩S,水平方向?yàn)檩S, 自左向右;垂直方向?yàn)檩S,自上向自左向右;垂直方向?yàn)檩S,自上向 下。見下圖。下。見下圖。 坐標(biāo)值的范圍決定于所用顯示器的坐標(biāo)值的范圍決定于所用顯示器的 分辨率。分辨率不同,水平方向上分辨率。分辨率不同,水平方向上 和

4、垂直方向上的點(diǎn)數(shù)也不同,和垂直方向上的點(diǎn)數(shù)也不同, 即其即其 maxx 、maxy 的數(shù)值不同。的數(shù)值不同。 就就 VGA 顯示器來說,它通常所用的顯示器來說,它通常所用的 分辨率為分辨率為 640480 ,即它的即它的 maxx 值值 為為 639 , maxy 的值為的值為 479。 . 圖形函數(shù)及其用法圖形函數(shù)及其用法 Turbo C 的圖形函數(shù)均在一個(gè)頭文件的圖形函數(shù)均在一個(gè)頭文件 “ graphics.h” 中定義。所以,凡是在中定義。所以,凡是在 程序中要調(diào)用這些圖形函數(shù),都必須程序中要調(diào)用這些圖形函數(shù),都必須 在源程序的開頭寫上文件包含命令:在源程序的開頭寫上文件包含命令: #

5、include ( 1 ) 圖形系統(tǒng)管理圖形系統(tǒng)管理 進(jìn)入進(jìn)入Turbo C, 顯示器處于文本方式顯示器處于文本方式 下。在文本方式下,所有的圖形下。在文本方式下,所有的圖形 函數(shù)均不能應(yīng)用。因此在調(diào)用圖形函函數(shù)均不能應(yīng)用。因此在調(diào)用圖形函 數(shù)繪圖之前,必須先將顯示器設(shè)置為數(shù)繪圖之前,必須先將顯示器設(shè)置為 圖形模式,即圖形方式初始化。在圖圖形模式,即圖形方式初始化。在圖 形工作完畢之后,又要使顯示器回到形工作完畢之后,又要使顯示器回到 文本方式,以便進(jìn)行程序文件等的編文本方式,以便進(jìn)行程序文件等的編 輯工作。輯工作。 TC繪圖程序:繪圖程序: 圖形系統(tǒng)初始化圖形系統(tǒng)初始化 繪圖繪圖 關(guān)閉圖形模

6、式關(guān)閉圖形模式 圖形方式初始化圖形方式初始化 圖形方式初始化通過函數(shù)圖形方式初始化通過函數(shù) initgraph 來來 實(shí)現(xiàn),它的功能是通過從磁盤上裝入實(shí)現(xiàn),它的功能是通過從磁盤上裝入 一個(gè)圖形驅(qū)動(dòng)程序來初始化圖形系統(tǒng),一個(gè)圖形驅(qū)動(dòng)程序來初始化圖形系統(tǒng), 并將系統(tǒng)設(shè)置為圖形模式。其調(diào)用格并將系統(tǒng)設(shè)置為圖形模式。其調(diào)用格 式為:式為: initgraph ( gdriver用來指定要裝入的圖形驅(qū)動(dòng)程序用來指定要裝入的圖形驅(qū)動(dòng)程序. 若若 gdriver = DETECT;則由系統(tǒng)自動(dòng)檢測(cè)圖形適配器則由系統(tǒng)自動(dòng)檢測(cè)圖形適配器 的最高分辨率模式的最高分辨率模式,并裝入相應(yīng)的圖形驅(qū)動(dòng)程序并裝入相應(yīng)的圖形

7、驅(qū)動(dòng)程序. (P269表表A-1) gmode用來設(shè)置圖形顯示模式用來設(shè)置圖形顯示模式.不同的圖形驅(qū)動(dòng)程序有不同的圖形驅(qū)動(dòng)程序有 不同的圖形顯示模式不同的圖形顯示模式; 在同一個(gè)圖形驅(qū)動(dòng)程序下在同一個(gè)圖形驅(qū)動(dòng)程序下, 也可能有幾種圖形顯示模式也可能有幾種圖形顯示模式. 圖形顯示模式?jīng)Q定了顯示的分辨率、顏色數(shù)等。圖形顯示模式?jīng)Q定了顯示的分辨率、顏色數(shù)等。 (P271表表A-4) path是一個(gè)字符串,用來指明圖形驅(qū)動(dòng)程序所在的路徑。是一個(gè)字符串,用來指明圖形驅(qū)動(dòng)程序所在的路徑。 若圖形驅(qū)動(dòng)程序在用戶當(dāng)前目錄下,則若圖形驅(qū)動(dòng)程序在用戶當(dāng)前目錄下,則path為空串為空串. 舉例:舉例: int gd

8、river = DETECT , gmode ; initgraph ( 關(guān)閉圖形模式關(guān)閉圖形模式 關(guān)閉圖形模式用函數(shù)關(guān)閉圖形模式用函數(shù) closegraph , 其調(diào)用方法為:其調(diào)用方法為: closegraph ( ) ;(該函數(shù)不需參數(shù))(該函數(shù)不需參數(shù)) ( 2 ) 繪圖函數(shù)繪圖函數(shù) Turbo C 提供了一些基本的繪圖函數(shù),提供了一些基本的繪圖函數(shù), 以方便圖形設(shè)計(jì)。以方便圖形設(shè)計(jì)。 所有繪圖函數(shù)調(diào)用時(shí)的參數(shù),其類型所有繪圖函數(shù)調(diào)用時(shí)的參數(shù),其類型 均為整型,因此填入?yún)?shù)表的參數(shù),均為整型,因此填入?yún)?shù)表的參數(shù), 應(yīng)為整數(shù)或整型變量。應(yīng)為整數(shù)或整型變量。 LINE 函數(shù):函數(shù): 在指

9、定兩點(diǎn)之間畫直線。在指定兩點(diǎn)之間畫直線。 如:如:line ( x1 , y1 , x2 , y2 ) ; LINETO 函數(shù):函數(shù): 從當(dāng)前點(diǎn)畫線到指定點(diǎn)。從當(dāng)前點(diǎn)畫線到指定點(diǎn)。 如:如:lineto ( x , y ) ; MOVETO 函數(shù):函數(shù): 移到指定點(diǎn)(不畫線)。移到指定點(diǎn)(不畫線)。 如:如:moveto ( x , y ) ; CIRCLE 函數(shù):函數(shù): 指定圓心和半徑畫圓。指定圓心和半徑畫圓。 如:如:circle ( xc , yc , r ) ; ARC 函數(shù):函數(shù): 畫一段圓弧。要求指定圓弧所在圓的畫一段圓弧。要求指定圓弧所在圓的 圓心、半徑,以及圓弧的起始角度和終圓

10、心、半徑,以及圓弧的起始角度和終 止角度。止角度。 如:如:arc ( xc , yc , angs , ange , r ) ; ellipse(x,y,a1,a2,rx,ry);); 起始角度起始角度a1,終止角度,終止角度a2,橢圓心(,橢圓心(x, y),),x軸半徑軸半徑rx, y軸半徑軸半徑ry . 例:例: ellipse(200,100,0,360, 50,20);畫);畫 一個(gè)橢圓周一個(gè)橢圓周 畫一個(gè)橢圓弧畫一個(gè)橢圓弧 RECTANGLE 函數(shù):函數(shù): 指定矩形的左上角和右下角畫一個(gè)矩形。指定矩形的左上角和右下角畫一個(gè)矩形。 如:如:rectangle ( x1 , y1 ,

11、 x2 , y2 ) ; DRAWPOLY 函數(shù):函數(shù): 畫一條多邊折線。畫一條多邊折線。 如:如:drawpoly ( n,p ) ; 其中,其中,n 為多邊折線的頂點(diǎn)數(shù);為多邊折線的頂點(diǎn)數(shù);p 為存放為存放 頂點(diǎn)坐標(biāo)值的數(shù)組名。數(shù)組頂點(diǎn)坐標(biāo)值的數(shù)組名。數(shù)組元素個(gè)數(shù)為元素個(gè)數(shù)為2*n . 如果如果首尾兩點(diǎn)重合,則可以繪制一個(gè)多邊形首尾兩點(diǎn)重合,則可以繪制一個(gè)多邊形。 例如:例如: #include “graphics.h “ main( ) int gdriver ,gmode ; static int p 8 = 10,20,150,150,200,30,10,20 ; gdriver =

12、 DETECT; initgraph( /* 圖形系統(tǒng)初始化圖形系統(tǒng)初始化 */ drawpoly( 4,p ); /* 畫一個(gè)三角形畫一個(gè)三角形 */ getch ( ); closegraph ( ); /*關(guān)閉圖形系統(tǒng),返回文本方式關(guān)閉圖形系統(tǒng),返回文本方式 */ 圖形的屬性指顏色和線型,顏色又分圖形的屬性指顏色和線型,顏色又分 為背景色和前景色。背景色指的是為背景色和前景色。背景色指的是 屏幕的顏色,即底色;前景色指的是屏幕的顏色,即底色;前景色指的是 繪圖用的顏色。任何繪圖函數(shù)都是在繪圖用的顏色。任何繪圖函數(shù)都是在 當(dāng)前顏色(背景色和前景色)和線型當(dāng)前顏色(背景色和前景色)和線型 的

13、狀態(tài)下作圖的。的狀態(tài)下作圖的。 系統(tǒng)的默認(rèn)值為:背景色為黑色;前系統(tǒng)的默認(rèn)值為:背景色為黑色;前 景色為白色;線型為實(shí)線。景色為白色;線型為實(shí)線。 setbkcolor(背景色);設(shè)置背景色(背景色);設(shè)置背景色 如:如: setbkcolor(BLUE);設(shè)置背景色為蘭色);設(shè)置背景色為蘭色 setbkcolor(12);設(shè)置背景色為);設(shè)置背景色為12號(hào)色號(hào)色 setcolor(畫筆色);設(shè)置畫筆色(畫筆色);設(shè)置畫筆色 如:如: setcolor(YELLOW);設(shè)置畫筆色為黃色);設(shè)置畫筆色為黃色 setcolor(5);設(shè)置畫筆色為);設(shè)置畫筆色為5號(hào)色號(hào)色 注意:背景色和畫筆色可以

14、是名字或數(shù)字。見下表。注意:背景色和畫筆色可以是名字或數(shù)字。見下表。 符號(hào)名數(shù)值顏色 BLACK BLUE GREEN CYAN RED MAGENTA BROWN LIGHTGRAY DARKGRAY LIGHTBLUE 0 1 2 3 4 5 6 7 8 9 黑色 藍(lán)色 綠色 青色 紅色 紫紅色 棕色 淺灰色 深灰色 淺藍(lán)色 P277 表表A-7 符號(hào)名數(shù)值顏色 LIGHTGREEN LIGHTCYAN LIGHTRED LIGHTMAGENTA YELLOW WHITE 10 11 12 13 14 15 淺綠色 淺青色 淺紅色 淺紫色 黃色 白色 putpixel(x,y,color)

15、;); 在(在(x,y)處以)處以color色畫一點(diǎn)色畫一點(diǎn) 例:例: putpixel(10,20,RED);在();在(10,20)處)處 畫一紅點(diǎn)畫一紅點(diǎn) getpixel(x,y); 得到得到(x,y)處的顏色值處的顏色值 例例: if (getpixel(300,270)= =7) outtextxy(x,y,”字符串字符串”);); 從(從(x,y)處開始顯示字符串)處開始顯示字符串 例:例:outtextxy(10,20,”ABCF”);在();在(10,20) 處顯示處顯示ABCF setfillstyle ( p, color ); 設(shè)置填充模式設(shè)置填充模式p(取值為(取值為

16、0-12)及填充色)及填充色 color。 填充模式的含義見填充模式的含義見P290表表A-13。 floodfill (x,y,bcolor); 從從(x,y)開始,用開始,用 setfillstyle設(shè)置好的填充模式及填充色向四設(shè)置好的填充模式及填充色向四 周填充,直到邊界(邊界色為周填充,直到邊界(邊界色為bcolor)為)為 止。止。 例例: setcolor(RED); circle(300,200,50); setfillstyle(2,GREEN); floodfill(300,200,RED); 從(從(300,200)開始,按)開始,按setfillstyle設(shè)置的模式及顏色

17、開始設(shè)置的模式及顏色開始 填充,一直到紅色邊界填充,一直到紅色邊界(圓周邊界圓周邊界)才停止。才停止。 bar(x1,y1,x2,y2); 由由setcolor設(shè)置的顏色畫一個(gè)矩形,設(shè)置的顏色畫一個(gè)矩形,并自并自 動(dòng)動(dòng)按按setfillstyle設(shè)置的模式及顏色對(duì)矩形設(shè)置的模式及顏色對(duì)矩形 填充填充. 矩形的左上角坐標(biāo)矩形的左上角坐標(biāo)(x1,y1),矩形的右下角坐標(biāo)矩形的右下角坐標(biāo)(x2,y2) pieslice(x,y,a1,a2,r); 由由setcolor設(shè)置的顏色畫一個(gè)扇形,并設(shè)置的顏色畫一個(gè)扇形,并自自 動(dòng)動(dòng)按按setfillstyle設(shè)置的模式及顏色對(duì)扇形設(shè)置的模式及顏色對(duì)扇形 填

18、充填充. 起始角度起始角度a1,終止角度,終止角度a2,圓心(,圓心(x,y),半徑),半徑r void fillellipse(int x,int y,int rx,int ry); 畫出一實(shí)心橢圓畫出一實(shí)心橢圓 void sector(int x,int y,int angs,int ange,int rx,int ry); 畫出一實(shí)心橢圓扇區(qū)畫出一實(shí)心橢圓扇區(qū) void fillpoly(int nps,int *pxy); 畫并填充一多邊形。畫并填充一多邊形。 例例1: #include “graphics.h ” main( ) int gdriver ,gmode ; gdrive

19、r = DETECT; initgraph( /*圖形系統(tǒng)初始化圖形系統(tǒng)初始化 */ line(10, 20 , 120, 200 ); /* 從(從(10,20)到)到(120,200) 畫一直線畫一直線 */ getch ( ); /*任擊一個(gè)鍵便繼續(xù)向下運(yùn)行任擊一個(gè)鍵便繼續(xù)向下運(yùn)行*/ closegraph ( ); /*關(guān)閉圖形系統(tǒng),返回文本方式關(guān)閉圖形系統(tǒng),返回文本方式 */ F9 編譯并運(yùn)行,編譯并運(yùn)行, F10 光標(biāo)落在菜單項(xiàng)。光標(biāo)落在菜單項(xiàng)。 (3)繪圖程序例子)繪圖程序例子 例2:# include main ( ) int gd = DETECT , gm ; initgr

20、aph ( setbkcolor ( LIGHTBLUE ) ; setcolor ( RED ) ; circle ( 320 , 240 , 100 ) ; getch ( ) ; closegraph ( ) ; 例3: #include void mydraw() line(160,120,480,120); line(480,120,480,360); line(480,360,160,360); line(160,360,160,120); main() int gdriver=DECTECT,gmode; 等價(jià)于: void mydraw1() moveto(160,120);

21、lineto(480,120); lineto(480,360); lineto(160,360); lineto(160,120); initgraph( cleardevice(); mydraw(); getch(); closegraph(); 例3 例4: #include main() int gdriver=DETECT,gmode; initgraph( setbkcolor(15); setcolor(4); ellipse(320,240,0,360,300,200); setfillstyle(1,6); putpixel(320,240,6); floodfill(32

22、0,240,4); getch(); closegraph(); 例4 例5: #include main() int gdriver=DETECT,gmode; initgraph( setbkcolor(15); setcolor(4); setfillstyle(1,6); fillellipse(320,240,300,200); getch(); closegraph(); 例5 P296例B-1金剛石圖案 #include #include void main() float t; int x0=320,y0=240; int n,i,j,r,x50,y50; int gdrive

23、r=DETECT,gmode; printf( input n(23-31) and r(100- 200)n); scanf(%d,%d , initgraph( cleardevice(); setcolor(9); setbkcolor(4) t=6.28314/n; for(i=0;in;i+) xi=r*cos(i*t)+x0; yi=r*sin(i*t)+y0; for(i=0;in-2;i+) for(j=i+1;jn;j+) line(xi,yi,xj,yj); getch(); closegraph(); 下面是與動(dòng)畫有關(guān)的幾個(gè)函數(shù):下面是與動(dòng)畫有關(guān)的幾個(gè)函數(shù): getima

24、ge(x1,y1,x2,y2,p); 將屏幕左上角將屏幕左上角(x1,y1),右下角右下角(x2,y2)的矩形區(qū)域內(nèi)的圖象存的矩形區(qū)域內(nèi)的圖象存 到指針到指針P所指向的內(nèi)存區(qū)域中。所指向的內(nèi)存區(qū)域中。 putimage(x,y,p,op); 將將p所指向的內(nèi)存區(qū)域的內(nèi)容在屏幕上顯示所指向的內(nèi)存區(qū)域的內(nèi)容在屏幕上顯示,左上角坐標(biāo)左上角坐標(biāo) (x,y)。 op= 0: 預(yù)先對(duì)屏幕不進(jìn)行任何操作預(yù)先對(duì)屏幕不進(jìn)行任何操作; 1: 預(yù)先對(duì)屏幕進(jìn)行預(yù)先對(duì)屏幕進(jìn)行“異或異或”操作操作; 2: 預(yù)先對(duì)屏幕進(jìn)行預(yù)先對(duì)屏幕進(jìn)行“或或”操作操作; 3: 預(yù)先對(duì)屏幕進(jìn)行預(yù)先對(duì)屏幕進(jìn)行“與與”操作操作; 4: 預(yù)先對(duì)緩沖區(qū)內(nèi)容進(jìn)行求預(yù)先對(duì)緩沖區(qū)內(nèi)容進(jìn)行求“反反”操作操作; i m a g e s i z e ( x 1 , y 1 , x 2 , y 2 ) 返回保存位圖象所需的字節(jié)數(shù)。返回保存位圖象所需的字節(jié)數(shù)。 例:圖形移動(dòng)例:圖形移動(dòng) (一個(gè)矩形塊水平右移一個(gè)矩形塊水平右移)。 #include

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(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)論