昆明理工大學(xué)自動顯示實驗2報告全解_第1頁
昆明理工大學(xué)自動顯示實驗2報告全解_第2頁
昆明理工大學(xué)自動顯示實驗2報告全解_第3頁
昆明理工大學(xué)自動顯示實驗2報告全解_第4頁
昆明理工大學(xué)自動顯示實驗2報告全解_第5頁
已閱讀5頁,還剩5頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、10上機(jī)實驗二C語言圖形基礎(chǔ)知識、上機(jī)實驗?zāi)康? 認(rèn)識c語言程序中的圖形參數(shù)和有關(guān)圖形顯示的基礎(chǔ)知識;2. 學(xué)習(xí)C語言各種圖形函數(shù)和圖形命令及其使用;3. 學(xué)習(xí)并運(yùn)行圖形顯示例程,掌握 C語言圖形編程基本常識。、實驗設(shè)備及軟件1.計算機(jī)系統(tǒng) 1套;2.C語言教程軟件CAI2.01 套;3.C預(yù)壓編程軟件TC2.01套;4.課程多媒體教程軟件1套。三、上機(jī)實驗內(nèi)容1. 學(xué)習(xí)教程中有關(guān)圖形的基礎(chǔ)知識圖形模式初始化設(shè)置、顏色代碼調(diào)用、圖形顯示基本功能等;2. 認(rèn)識并掌握C語言圖形函數(shù)及其使用各種圖形的C預(yù)壓函數(shù),如點(diǎn)、直線、矩形、圓、扇形、橢圓機(jī)多邊形等;圖形函數(shù)的 基本表示、含義及基本應(yīng)用;3.

2、初步認(rèn)識C語言圖形函數(shù)的編程與運(yùn)行在C語言環(huán)境下,運(yùn)行圖形程序?qū)嵗^察顯示結(jié)果,分析程序結(jié)構(gòu)和含義,學(xué)習(xí)C語言圖形函數(shù)的編程應(yīng)用;4. 修改相關(guān)程序內(nèi)容,觀察運(yùn)行結(jié)果,總結(jié)經(jīng)驗和結(jié)論分析。四、程序運(yùn)行及修改1.1程序?qū)嵗\(yùn)行截圖及修改后的截圖圖2.2八卦圖修改后截圖1、八卦圖圖2.1八卦圖實例截圖1.2修改后的程序#in elude #i nclude #i nclude #in clude int mai n(void)/* request auto detection */int gdriver = DETECT, gmode, errorcode;int midx, midy;int

3、radius = 120;/* initialize graphics and local variables */ initgraph(&gdriver, &gmode, );/* read result of initialization */ errorcode = graphresult();if (errorcode != grOk) /* an error occurred */printf(Graphics error: %sn, grapherrormsg(errorcode); printf(Press any key to halt:);getch();exit(1); /

4、* terminate with an error code */midx = getmaxx() / 2;midy = getmaxy() / 2;setbkcolor(0);circle(midx, midy, radius); arc(midx-49,midy-35,150,320,60); arc(midx+49,midy+35,320,150,60); circle(midx-49,midy-35,10); circle(midx+49,midy+35,10);setfillstyle(1,15); floodfill(midx-93,midy-36,15);setfillstyle

5、(1,0); floodfill(midx-50,midy+100,15);setfillstyle(1,0); floodfill(midx-49,midy-35,0);setfillstyle(1,15); floodfill(midx+49,midy+35,15);/* 畫中心圖象并填色 */setfillstyle(1,7); bar(30,25,180,50);bar(30,60,180,85); bar(30,95,180,120);/* 畫第一個卦象 */ bar(30,370,180,395); bar(30,405,100,430); bar(110,405,180,430)

6、;bar(30,440,180,465);/*畫第二個卦象*/bar(460,25,530,50);bar(540,25,610,50);bar(460,60,610,85);bar(460,95,530,120);bar(540,95,610,120);/*畫第三個卦象*/bar(460,370,530,395);bar(540,370,610,395);bar(460,405,530,430);bar(540,405,610,430);bar(460,440,530,465);bar(540,440,610,465);/*畫第四個卦象*/getch(); closegraph(); ret

7、urn 0;2、洛克2.1程序?qū)嵗\(yùn)行截圖及修改后的截圖圖2.4斯洛克修改后運(yùn)行截圖圖2.3斯洛克實例運(yùn)行截圖2.2修改后的程序/*斯諾克*/#in clude #i nclude #i nclude #in clude int mai n(void)/* request auto detect ion */int gdriver = DETECT, gmode, errorcode;int midx, midy;/* initialize graphics and local variables */ initgraph(&gdriver, &gmode, );/* read result

8、of initialization */ errorcode = graphresult();if (errorcode != grOk) /* an error occurred */printf(Graphics error: %sn, grapherrormsg(errorcode); printf(Press any key to halt:);getch();exit(1); /* terminate with an error code */midx = getmaxx() / 2;midy = getmaxy() / 2; setcolor(getmaxcolor();/* dr

9、aw the circle */circle(midx=0, midy=0, 40); circle(midx=0,midy=480,40); circle(midx=640,midy=0,40); circle(midx=640,midy=480,40); circle(midx=320,midy=0,30); circle(midx=320,midy=480,30); circle(midx=200,midy=240,10); setfillstyle(1,0); floodfill(midx=200,midy=240,15); circle(midx=280,midy=250,10);

10、setfillstyle(1,1); floodfill(midx=280,midy=250,15); circle(midx=180,midy=130,10); setfillstyle(1,2); floodfill(midx=180,midy=130,15); circle(midx=160,midy=140,10); setfillstyle(1,3); floodfill(midx=160,midy=140,15); circle(midx=60,midy=20,10); setfillstyle(1,4); floodfill(midx=60,midy=20,15); circle

11、(midx=260,midy=360,10); setfillstyle(1,5); floodfill(midx=260,midy=360,15); circle(midx=180,midy=350,10); setfillstyle(1,6);floodfill(midx=180,midy=350,15); circle(midx=340,midy=430,10); setfillstyle(1,7);floodfill(midx=340,midy=430,15); circle(midx=440,midy=270,10); setfillstyle(1,8);floodfill(midx

12、=440,midy=270,15); circle(midx=340,midy=210,10); setfillstyle(1,9);floodfill(midx=340,midy=210,15); circle(midx=420,midy=340,10); setfillstyle(1,10);floodfill(midx=420,midy=340,15); circle(midx=320,midy=420,10); setfillstyle(1,11);floodfill(midx=320,midy=420,15);circle(midx=420,midy=30,10); setfills

13、tyle(1,12); floodfill(midx=420,midy=30,15); circle(midx=400,midy=45,10); setfillstyle(1,13);floodfill(midx=400,midy=45,15); circle(midx=120,midy=280,10); setfillstyle(1,14);floodfill(midx=120,midy=280,15); circle(midx=380,midy=140,10); setfillstyle(1,15);floodfill(midx=380,midy=140,15);line(400,150,

14、640,240);line(401,149,640,230);rectangle(0,0,639,479); setfillstyle(1,2); floodfill(100,100,15); outtextxy(500,230,ye jiaxing); outtextxy(500,250,201210402101); /* clean up */ getch();closegraph();return 0;3、熊貓臉3.1 程序?qū)嵗\(yùn)行截圖及修改后的截圖圖2.6熊貓臉修改后運(yùn)行截圖圖2.5熊貓臉實例運(yùn)行截圖3.2修改后程序/*熊貓臉*/#in elude #i nclude #i nclud

15、e #in elude int main( void)/* request auto detect ion */int gdriver = DETECT, gmode, errorcode; int midx, midy;int radius = 120;/* i nitialize graphics, local variables */in itgraph( &gdriver, &gmode, );/* read result of in itializati on */ errorcode = graphresult();if (errorcode != grOk)/* an error

16、 occurred */prin tf(Graphics error: %sn, grapherrormsg(errorcode);prin tf(Press any key to halt:); getch();exit(1);/* term in ate with an error code */midx = getmaxx() / 2;midy = getmaxy() / 2;setbkcolor(0);setcolor(8);circle(midx, midy, radius+2); arc(midx+80,midy-80,-47,140,50); arc(midx-80,midy-8

17、0,41,228,50); circle(midx+50,midy-30,40); circle(midx-50,midy-30,40); arc(midx,midy-20,50,130,20); arc(midx,midy-10,50,130,20); line(midx+113,midy-40,midx+90,midy-35); line(midx+115,midy-30,midx+90,midy-25); line(midx-113,midy-40,midx-90,midy-35); line(midx-115,midy-30,midx-90,midy-25); line(midx-11

18、3,midy-40,midx-115,midy-30); line(midx+113,midy-40,midx+115,midy-30); arc(midx-90,midy-175,30,330,20); arc(midx-90,midy-175,30,330,22); arc(midx-40,midy-175,0,359,22); arc(midx-40,midy-175,0,359,20); arc(midx+10,midy-175,0,359,22); arc(midx+10,midy-175,0,359,20);line(midx+42,midy-197,midx+42,midy-15

19、5); line(midx+44,midy-197,midx+44,midy-157); line(midx+44,midy-157,midx+64,midy-157); line(midx+42,midy-155,midx+64,midy-155); line(midx+42,midy-197,midx+44,midy-197); line(midx+64,midy-157,midx+64,midy-155); line(midx+76,midy-195,midx+79,midy-161); line(midx+84,midy-195,midx+81,midy-161); arc(midx+

20、80,midy-193,0,180,4);line(midx+79,midy-161,midx+81,midy-161); circle(midx+80,midy-155,2);circle(midx+50,midy-30,20); circle(midx-50,midy-30,20);setfillstyle(3,14); floodfill(midx+51,midy-31,8); floodfill(midx-51,midy-31,8);setfillstyle(1,15);ellipse(midx,midy+50,0,360,60,30); arc(midx,midy+50,180,0,

21、60); floodfill(midx+1,midy+1,8); setfillstyle(1,7);floodfill(1,1,8);/* clean up */getch();closegraph();return 0;五、基本實驗問題1、簡述計算機(jī)圖形顯示功能的基本內(nèi)容。 答:基本內(nèi)容為圖形的表示、生成、處理、存儲、檢索和管理等。2、簡述圖形模式初始化內(nèi)容與相關(guān)函數(shù)的含義。 答:不同的顯示器適配器有不同的圖形分辨率。即是同一顯示器適配器,在不同模式 下也有不同分辨率。 因此, 在屏幕作圖之前, 必須根據(jù)顯示器適配器種類將顯示器設(shè)置成為 某種圖形模式, 在未設(shè)置圖形模式之前, 微機(jī)系統(tǒng)默認(rèn)

22、屏幕為文本模式 (80 列,25 行字符模 式) ,此時所有圖形函數(shù)均不能工作。設(shè)置屏幕為圖形模式,可用下列圖形初始化函數(shù): void far initgraph(int far *gdriver, int far *gmode,char *path); 其中 gdriver和gmode分別表示圖形驅(qū)動器和模式,path是指圖形驅(qū)動程序所在的目錄路徑。3、請列出常用的 C 語言圖形函數(shù)及其基本含義與參數(shù)取值。 答:語言圖形函數(shù)及其基本含義與參數(shù)取值如下:1. 直線類函數(shù) 用直線類函數(shù)繪制直線圖形,可以用兩種坐標(biāo):一種時絕對坐標(biāo);另一種是相對坐標(biāo)。Line ()函數(shù)用line ()函數(shù)可以在指定

23、的兩點(diǎn)之間畫一條直線段。其調(diào)用格式為:line(x1,y1,x2,y2);參數(shù)x1,y1,x2,y2均為整型,使用絕對坐標(biāo)。其中(x1,y1 )和(x2,y2 )分別為直線的兩個端點(diǎn)坐標(biāo)。用 line 函數(shù)畫線時,其當(dāng)前點(diǎn)的位置不變。例如:已知三角形的兩個頂點(diǎn)坐標(biāo)分別為:(x1,y1 )、(x2,y2 )和(x3,y3),則用下面的語句可以把該三點(diǎn)連成一個三角形:line(x1,y1,x2,y2);line(x2,y2,x3,y3);line(x3,y3,x1,y1);lineto ()函數(shù)lineto ()函數(shù)用于從當(dāng)前點(diǎn)位置到指定位置畫一條直線,并改變當(dāng)前點(diǎn)的位置。在畫 線到指定點(diǎn)的同時也

24、把當(dāng)前點(diǎn)的位置移到了指定點(diǎn)(即直線的終點(diǎn))。其調(diào)用格式為:lineto(x,y);參數(shù) x,y 位指定點(diǎn)坐標(biāo),均為整型。moveto ()函數(shù)函數(shù) moveto ()用于移動當(dāng)前點(diǎn)位置,并不畫線。其調(diào)用格式為:moveto(x,y);。調(diào)用的結(jié)果是將當(dāng)參數(shù) x,y 用于指定新的當(dāng)前點(diǎn)位置坐標(biāo)(用整型,使用絕對坐標(biāo))前點(diǎn)位置移到點(diǎn)(x,y )處。例如:moveto(400,10); 結(jié)果是將當(dāng)前點(diǎn)位置移到了(400, 10)處。moveto ()函數(shù)和 lineto ()函數(shù)配合使用,可以在兩點(diǎn)之間畫直線。例如 : moveto(400,10);lineto(240,360);上面的語句實現(xiàn)把當(dāng)

25、前點(diǎn)移到(400, 10)處,然后從該點(diǎn)畫線到(240, 360 )處。畫線結(jié)束后,當(dāng)前點(diǎn)位置在(240, 360 )處。linerel ()函數(shù)linerel ()函數(shù)用相對坐標(biāo)畫線。其功能是從當(dāng)前點(diǎn)位置開始畫線到指定點(diǎn)位置,該指 定點(diǎn)位置的坐標(biāo)不是以絕對坐標(biāo)的形式給出, 而是以其相對于當(dāng)前點(diǎn) (即直線起點(diǎn)) 位置的 坐標(biāo)增量給出的(相對坐標(biāo)) 。其調(diào)用格式為:linerel(dx,dy); 參數(shù)是相對于直線起點(diǎn)的坐標(biāo)增量。 Linerel() 函數(shù)改變當(dāng)前點(diǎn)位置到指定點(diǎn)處。 moverel ()函數(shù)moverel ()函數(shù)的功能與 moveto ()函數(shù)相似,但它使用的是相對坐標(biāo),它使當(dāng)前

26、點(diǎn) 位置在 x 和 y 方向上分別移動一個增量。其調(diào)用格式為:moverel(dx,dy);參數(shù) dx,dy 為整型,是相對于當(dāng)前點(diǎn)位置的增量。2. 圓弧類函數(shù) circle ()函數(shù) 函數(shù) circle ()用于以指定圓心和半徑的方式畫圓。其調(diào)用格式為 circle(x,y,r) ;參數(shù) x,y,r 均為整型。其中 x,y 為指定的圓心坐標(biāo), r 為圓的半徑。 例如:circle(300,200,100) ;的調(diào)用結(jié)果是:以點(diǎn)( 300,200)為圓心,以 100 為半徑畫一個整 圓。arc ()函數(shù)arc()函數(shù)用于畫圓弧。其調(diào)用格式為:arc(x,y,args,ange,r);函數(shù)調(diào)用時所需的五個參數(shù)均為整型。其中:x,y為圓弧所在圓的圓心坐標(biāo)。angs, ange分別為圓弧的起始角和終止角(單位為度),r 為圓弧的半徑。例如 :arc(300,200,90,180,200) ;的結(jié)果是以點(diǎn) (300,200)為圓心, 200為半徑, 從 90度到 180 度畫了四分之一圓弧。當(dāng)圓弧的起始角 angs=O,終止角an

溫馨提示

  • 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)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論