基于C語言的花朵繪制程序設(shè)計報告_第1頁
基于C語言的花朵繪制程序設(shè)計報告_第2頁
基于C語言的花朵繪制程序設(shè)計報告_第3頁
基于C語言的花朵繪制程序設(shè)計報告_第4頁
基于C語言的花朵繪制程序設(shè)計報告_第5頁
已閱讀5頁,還剩7頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、滁州學院本科學年設(shè)計基于c語言的花朵繪制摘要:隨著同學們對c語言的學習不斷深入,為了進一步消化和鞏固已學過的c 語言程序設(shè)計基礎(chǔ)理論,學習和實踐程序設(shè)計的各種技能,利用c 語言來設(shè)計各種應用程序和管理系統(tǒng)是幫助同學們培養(yǎng)編程能力的最佳的選擇;這一過程中需要編寫大量的程序, 而vc+6.0就是編寫程序的首選環(huán)境。 可惜在 vc+6.0編程環(huán)境下只能做一些文字性的練習題,想畫條直線畫個圓都很難還要注冊窗口類、建消息循環(huán)等等,為了解決上述問題,于是就有了這個 easyx 庫。easyx 是針對 c+ 的圖形庫,可以幫助 c 語言初學者快速上手圖形和游戲編程,同時是圖形數(shù)據(jù)包graphics.h的相關(guān)

2、插件。在easyx的協(xié)助下,vc+6.0中的花朵繪制變得簡單、快捷,同時運用sleep函數(shù)對花朵繪制過程執(zhí)行掛起一段時間,使花朵呈現(xiàn)綻放的美麗瞬間。關(guān)鍵詞:vc+6.0;easyx;sleep函數(shù);graphics.h函數(shù);花朵繪制1 緒論1.1 研究背景隨著同學們對c語言的學習不斷深入,如何在vc+6.0編程環(huán)境下進行相應的圖形繪制,已經(jīng)成為困擾同學們的難題,圖形繪制要應用圖形數(shù)據(jù)包graphics.h,而圖形數(shù)據(jù)包graphics.h是tc里面的圖形庫,在vc+6.0編程環(huán)境下不能夠直接應用;如何順利運用c語言的圖形數(shù)據(jù)包graphics.h中相關(guān)函數(shù),是成功繪制花朵的前提,也是花朵繪制成

3、功的關(guān)鍵所在。1.2主要工作本設(shè)計根據(jù)vc+6.0編程環(huán)境對圖形繪制的優(yōu)弊端,運用easyx在vc+6.0編程環(huán)境中進行花朵繪制,easyx 是針對 c+ 的圖形庫的一款軟件,可以幫助 c 語言初學者快速上手圖形和游戲編程。在vc+6.0編程環(huán)境下應用c語言的圖形數(shù)據(jù)包graphics.h是困難的、步驟繁瑣的,而運用easyx簡化了c語言的圖形數(shù)據(jù)包graphics.h的應用程序。同時對sleep函數(shù)的應用,起到了對花朵繪制的補充作用,加強了花朵的綻放效果。1.3本文結(jié)構(gòu)本文第1部分緒論主要說明了本文的研究背景、主要工作和實現(xiàn)方法。第2部分相關(guān)知識介紹了vc+6.0編程環(huán)境、easyx庫的功能

4、及運用方法和sleep函數(shù)的調(diào)用。第3部分是相關(guān)函數(shù)的介紹。以及對程序的運行結(jié)果及效果進行分析,說明花朵繪制的進程,并通過程序運行的結(jié)果對程序運行質(zhì)量進行經(jīng)檢測和分析。2相關(guān)知識2.1圖形數(shù)據(jù)包graphics.h 2.1.1 功能簡介因為在 vc 下只能做一些文字性的練習題,想畫條直線畫個圓都很難,還要注冊窗口類、建消息循環(huán)等等,初學者會受嚴重打擊的。還有計算機圖形學,這門課程的重點是繪圖算法,而不是 windows 編程,所以windows 繪圖太復雜了。因此,我們想給大家一個更好的學習平臺,就是 vc 方便的開發(fā)平臺和 tc 簡單的繪圖功能,于是就有了這個 easyx 庫。如果您剛開始學

5、 c 語言,或者您是一位教 c 語言的老師,再或者您在教計算機圖形學,那么這個庫一定會讓您興奮的。2.1.2圖形數(shù)據(jù)包組成(1)putpixel() 畫像素點函數(shù)功能: 函數(shù)putpixel() 在圖形模式下屏幕上畫一個像素點。 用法: 函數(shù)調(diào)用方式為void putpixel(int x,int y,int color); 說明: 參數(shù)x,y為像素點的坐標,color是該像素點的顏色,它可以是顏色符號名,也可以是整型色彩值。 此函數(shù)相應的頭文件是graphics.h 返回值: 無 (2)getpixel()返回像素色函數(shù)功能: 函數(shù)getpixel()返回像素點顏色值。 用法: 該函數(shù)調(diào)用方

6、式為int getpixel(int x,int y); 說明: 參數(shù)x,y為像素點坐標。 函數(shù)的返回值可以不反映實際彩色值,這取決于調(diào)色板的設(shè)置情況(參見setpalette()函數(shù))。 這個函數(shù)相應的頭文件為graphics.h 返回值: 返回一個像素點色彩值。 (3)line() 畫線函數(shù)功能: 函數(shù)line()使用當前繪圖色、線型及線寬,在給定的兩點間畫一直線。 用法: 該函數(shù)調(diào)用方式為void line(int startx,int starty,int endx,int endy); 說明: 參數(shù)startx,starty為起點坐標,endx,endy為終點坐標,函數(shù)調(diào)用前后,圖形

7、狀態(tài)下屏幕光標(一般不可見)當前位置不改變。 此函數(shù)相應的頭文件為graphics.h 返回值: 無 (4)lineto() 畫線函數(shù)功能: 函數(shù)lineto()使用當前繪圖色、線型及線寬,從當前位置畫一直線到指定位置。 用法: 此函數(shù)調(diào)用方式為void lineto(int x,int y); 說明: 參數(shù)x,y為指定點的坐標,函數(shù)調(diào)用后,當前位置改變到指定點(x,y)。 該函數(shù)對應的頭文件為graphics.h 返回值: 無 (5)linerel() 相對畫線函數(shù)功能: 函數(shù)linerel() 使用當前繪圖色、線型及線寬,從當前位置開始,按指定的水平和垂直偏移距離畫一直線。 用法: 這個函

8、數(shù)調(diào)用方式為void linerel(int dx,int dy); 說明: 參數(shù)dx,dy分別是水平偏移距離和垂直偏移距離。 函數(shù)調(diào)用后,當前位置變?yōu)樵黾悠凭嚯x后的位置,例如,原來的位置是(8,6),調(diào)用函數(shù)linerel(10,18)后,當前位置為(18,24)。 返回值:無 (6)setlinestyle() 設(shè)置線型函數(shù)功能: setlinestyle() 為畫線函數(shù)設(shè)置當前線型,包括線型、線圖樣和線寬。 用法: setlinestyle() 函數(shù)調(diào)用方式為void setlinestyle(int stly,unsigned pattern,int wigth); 說明: 參數(shù)st

9、yle為線型取值,也可以用相應名稱表示。 參數(shù)pattern用于自定義線圖樣,它是16位(bit)字,只有當style=userbit_line(值為1)時,pattern的值才有意義,使用用戶自定義線圖樣,與圖樣中“1”位對應的像素顯示,因此,pattern=0xffff,則畫實線;pattern=0x9999,則畫每隔兩個像素交替顯示的虛線,如果要畫長虛線,那么pattern的值可為0xff00和0xf00f,當style不為userbit_line值時,雖然pattern的值不起作用,但扔須為它提供一個值,一般取為0。 若用非法參數(shù)調(diào)用setlinestyle()函數(shù),那么graphre

10、sult()會返回錯誤代碼,并且當前線型繼續(xù)有效。 這個函數(shù)的頭文件是graphics.h 返回值: 無 (7)getlinesettings() 獲取線型設(shè)置函數(shù)功能: 函數(shù)getlinesettings() 用當前設(shè)置的線型、線圖樣和線寬填 寫linesettingstype型結(jié)構(gòu)。 用法: 函數(shù)調(diào)用方式為void getlinesettings(struct linesettingstype *info); 說明: 此函數(shù)調(diào)用執(zhí)行后,當前的線型、線圖樣和線寬值被裝入info指向的結(jié)構(gòu)里,從而可從該結(jié)構(gòu)中獲得線型設(shè)置。 linesettingstype型結(jié)構(gòu)定義如下: struct lin

11、esettingstype int linestyle; unsigned upattern; int thickness; ; 其中l(wèi)inestyle用于存放線型,線型值為中的各值之一。 upattern用為裝入用戶自定義線圖樣,這是16位字,每一位等于一個像素,如果哪個位被設(shè)置,那么該像素打開,否則關(guān)閉。 thickness為線寬值存放的變量。getlinesettings()函數(shù)對應的頭文件為graphics.h 返回值: 返回的線型設(shè)置存放在info指向的結(jié)構(gòu)中。 (8)setwritemode() 設(shè)置畫線模式函數(shù)功能: 函數(shù)setwritemode() 設(shè)置畫線模式 用法: 函數(shù)調(diào)

12、用方式為 void setwritemode()(int mode); 說明: 參數(shù)mode只有兩個取值0和1,若mode為0,則新畫的線將覆蓋屏幕上原有的圖形,此為缺省畫線輸出模式。如果mode為1,那么新畫的像素點與原有圖形的像素點先進行異或(xor)運算,然后輸出到屏幕上,使用這種畫線輸出模式,第二次畫同一圖形時,將擦除該圖形。調(diào)用setwritemode()設(shè)置的畫線輸出模式只影響函數(shù)line(),lineto(),linerel(),recangle()和drawpoly()。 setwritemode()函數(shù)對應的頭文件是graphics.h 返回值: 無 (9)rectangle

13、() 畫矩形函數(shù)功能: 函數(shù)rectangle() 用當前繪圖色、線型及線寬,畫一個給定左上角與右下角的矩形(正方形或長方形)。 用法: 此函數(shù)調(diào)用方式為void rectangle(int left,int top,int right,int bottom); 說明: 參數(shù)left,top是左上角點坐標,right,bottom是右下角點坐標。如果有一個以上角點不在當前圖形視口內(nèi),且裁剪標志clip設(shè)置的是真(1),那么調(diào)用該函數(shù)后,只有在圖形視口內(nèi)的矩形部分才被畫出。 這個函數(shù)對應的頭文件為graphics.h 返回值: 無 (10)函數(shù)bar()畫條函數(shù)功能: 函數(shù)bar()用當前填充圖

14、樣和填充色(注意不是給圖色)畫出一個指定上左上角與右下角的實心長條形(長方塊或正方塊),但沒有四條邊線)。 用法: bar()函數(shù)調(diào)用方式為void bar(int left,int top,int right,int bottom); 說明: 參數(shù)left,topright,bottom分別為左上角坐標與右下角坐標,它們和調(diào)用函數(shù)rectangle()的情形相同,調(diào)用此函數(shù)前,可用setfillstyle()或setfillpattern()設(shè)置當前填充圖樣和填充色。 注意此函數(shù)只畫沒有邊線的條形,如果要畫有邊線的的條形,可調(diào)用下面的函數(shù)bar3d()來畫,并將深度參數(shù)設(shè)為0,同時topfl

15、ag參數(shù)要設(shè)置為真,否則該條形無頂邊線。 這 應的頭文件為graphics.h 返回值: 無 (11)bar3d() 畫條塊函數(shù)功能: 函數(shù)bar3d() 使用當前繪圖色、線型及線寬畫出三維長方形條塊,并用當前填充圖樣和填 充色填充該三維條塊的表面。 用法: 此函數(shù)調(diào)用方式為void bar3d(int left,int top,int right,int bottom,int depth,int topflag); 說明: 參數(shù)left,top,right,bottom分另為左上角與右下角坐標,這與bar()函數(shù)中的一樣。參數(shù)depth為條塊的深度,以像素為單位,通常按寬度的四分之一計算。深

16、度方向通過屏顯縱橫比調(diào)節(jié)為約45度(即這時x/y比設(shè)置為1:1)。 參數(shù)topflag相當于一個布爾參數(shù),如果設(shè)置為1(真)那么條塊上放一頂面;若設(shè)置為0(假),則三維條形就沒有頂面,這樣可使多個三維條形疊加在一起。 要使圖形更加美觀,可利用函數(shù)floodfill()或setfillpattern()來選擇填充圖樣和填充色。 bar3d()函數(shù)對應的頭文件為graphics.h 返回值: 無 (12)drawpoly() 畫多邊形函數(shù)功能: 函數(shù)drawpoly() 用當前繪圖色、線型及線寬,畫一個給定若干點所定義的多邊形。 用法: 此函數(shù)調(diào)用方式為void drawpoly(int pnum

17、ber,int *points); 說明: 參數(shù)pnumber為多邊形的頂點數(shù);參數(shù)points指向整型數(shù)組,該數(shù)組中是多邊形所有頂點(x,y)坐標值,即一系列整數(shù)對,x坐標值在前。顯然整型數(shù)組的維數(shù)至少為頂點數(shù)的2倍,在定義了多邊形所有頂點的數(shù)組polypoints時,頂點數(shù)目可通過計算sizeof(polypoints)除以2倍的sizeof(int)得到,這里除以2倍的原因是每個頂點有兩個整數(shù)坐標值。另外有一點要注意,畫一個n個頂點的閉合圖形,頂點數(shù)必須等于n+1,并且最后一點(第n+1)點坐標必須等于第一點的坐標。 drawpoly()函數(shù)對應的頭文件為grpahics.h 返回值:

18、無 (13)getaspectratio()獲取縱橫比函數(shù)功能: 函數(shù)getaspectratio()返回x方向和y方向的比例系數(shù),用這兩個整型值可計算某一特定屏顯的縱橫比。 用法: 此函數(shù)調(diào)用方式為void getaspectratio(int xasp,int yasp); 說明: 參數(shù)xasp指向的變量存放返回的x方向比例系數(shù);參數(shù)yasp指向的變量存放返回的y方向比例系數(shù)。通常y方向比例系數(shù)為10 000, x方向比例系數(shù)不大于10 000(這是因為大多數(shù)屏幕像素高比寬長)。 注意:縱橫比自動用作下面函數(shù)arc(),circle()和pieslice()中的標尺因子,使屏幕上圓或弧正常

19、顯示。但用ellipse()函數(shù)畫橢圓必須調(diào)用本函數(shù)獲取縱橫比作為標尺因子,否則不予調(diào)整??v橫比可用于其它幾何圖形,目的是校正和顯示圖形。 getaspectratio()函數(shù)對應的頭文件為graphics.h 返回值: 返回x與y方向比例系數(shù)分別存放在xasp和yasp所指向的變量中。 (14)circle()畫圓函數(shù)功能: 函數(shù)circle()使用當前繪圖色并以實線畫一個完整的圓。 用法:該函數(shù)調(diào)用方式為void circle(int x,int y,int radius); 說明: 參數(shù)x,y為圓心坐標,radius為圓半徑,用像素個素表示。注意:調(diào)用circle()函數(shù)畫圓時不用當前線

20、型。 不同于ellipse()函數(shù),只用單個半徑radius參數(shù)調(diào)用circle()函數(shù),故屏顯縱橫比可以自動調(diào)節(jié),以產(chǎn)生正確的顯示圖。 此函數(shù)對應的頭文件為graphics.h 返回值: 無 (15)arc() 畫圓弧函數(shù)功能: 函數(shù)arc()使用當前繪圖色并以實線畫一圓弧。 用法: 函數(shù)調(diào)用方式為void arc(int x,int y,int startangle,int endangle,int radius); 說明: 參數(shù)x,y為圓心坐標,startangle與endangle分別為起始角與終止角,radius為半徑。圓心坐標和半徑以像素個數(shù)給出,起始角和終止角以度為單位,0度位于

21、右邊,90度位于頂部,180度位于左邊,底部是270度。同往常一樣,360度與0度重合。角度按逆時針方向增加,但并不要求終止角一定比起始角大。例如指定300度和90度分別為起始角和終止角,與指定300度和450度分別為起始角和終止角可畫出相同的弧。大于360度可作為參數(shù),它將被化到0度360度范圍里。函數(shù)arc()能畫封閉圓,只要取起始角為0度,終止角為360度即可。此函數(shù)中,屏顯縱橫比可自動調(diào)節(jié)。 arc()函數(shù)對應的頭文件為graphics.h 返回值: 無2.2 conio.hconio.h不是c標準庫中的頭文件,在c standard library,iso c 和posix標準中均沒

22、有定義。 conio是console input/output(控制臺輸入輸出)的簡寫,其中定義了通過控制臺進行數(shù)據(jù)輸入和數(shù)據(jù)輸出的函數(shù),主要是一些用戶通過按鍵盤產(chǎn)生的對應操作,比如getch()函數(shù)等等。 大部分dos,windows 3.x,phar lap,dosx,os/2 or win32平臺上的c編譯器提供此文件,unix 和linux平臺的c編譯器通常不包含此頭文件。2.3 sleep()函數(shù)函數(shù)名: sleep 功 能: 執(zhí)行掛起一段時間 用 法: unsigned sleep(unsigned seconds);3 系統(tǒng)設(shè)計3.1需求分析3.1.1功能需求應用c語言的圖形數(shù)據(jù)

23、包graphics.h中相關(guān)函數(shù),首先繪制一個花瓣逐漸(間隔0.5秒)開放的花朵;然后依次繪制第二朵、第三朵、,直至繪制出一束花朵后停止3.1.2 編程環(huán)境vc+6.0(帶有easyx插件)3.2功能簡述3.2.1 initgraph()函數(shù)名: initgraph() 功 能: 初始化圖形系統(tǒng) 函數(shù)原型: void far initgraph(int far *graphdriver, int far *graphmode, char far *pathtodriver);graphdriver是上漲指向圖形驅(qū)動序號變量的指針;graphmode是在graphdriver選定后,指向圖形顯示

24、模式序號變量的指針。pathtodriver表示存放圖形驅(qū)動文件的路徑。 3.2.2 initgraph()函數(shù)名: initgraph()功 能:該函數(shù)用指定的顏色值來設(shè)置當前的背景色,如果指定的顏色值超出了當前設(shè)備的表示范圍,則設(shè)置為最近似的、設(shè)備可以表示的顏色。 返回值:原背景色的colorref值。3.2.3 cleardevice()函數(shù)名: cleardevice 功 能: 清除圖形屏幕 返回值:無。3.2.4 main()r=d*(1+1/48*sin(24*i)*(1+sin(3*i); /*設(shè)置花朵半徑,使其呈周期性變化。其中1/48用來改變半徑變化幅度,24與3用來改變變化

25、周期*/x=r*cos(0.3*i+pi/60); /*設(shè)置連線坐標x軸的變化,呈周期性變化。其中0.3改變周期,pi/60改變初始位置*/y=r*sin(0.3*i+pi/60); /*設(shè)置連線坐標y軸的變化,呈周期性變化。其中0.3改變周期,pi/60改變初始位置*/4 功能實現(xiàn)總結(jié)與體會:總結(jié):本次的學年設(shè)計我們組題目是基于c語言的花朵繪制(用graphics.h函數(shù)),主要是用c語言編寫一個程序使其在計算機顯示出不同的花瓣,最后出現(xiàn)一束漂亮的花。由于我們之前沒有接觸過graphics.h函數(shù)。于是我們就從網(wǎng)上、相關(guān)書籍找到相應知識,對graphics.h函數(shù)進行學習和運用,并在老師的指

26、導下,我們最終很好的完成了本次的學年設(shè)計!學年設(shè)計最大的一個問題就是程序,如何編寫一個簡單而又實用的程序是一個挑戰(zhàn)。因為我們不知道在編寫程序的過程中會遇到什么樣的問題,所以在編寫程序之前我們已經(jīng)做了還算很充分得準備,但盡管如此,我們在編寫程序以及運行程序的過程中還是遇到了很多棘手的問題。首先是這個程序中要用到很多之前我們沒有了解過的有關(guān)繪圖的函數(shù),我們必須要先熟悉了解這些函數(shù)的特性,然后才能對其加以運用。然而在理解這些函數(shù)過程中,并沒有想象的那么順利,也出現(xiàn)了很多問題,不過在老師的幫助下,還有我們通過網(wǎng)絡(luò)的學習,總算對這些函數(shù)有了深刻的了解,并可以進行熟練地運用,通過這些我們才能在編程的道路上

27、走得很順利。不過除了我們不了解的函數(shù)外,仍有一些不大不小的問題困擾著我們。有一些明顯的程序錯誤,不過仍有一些語法上的錯誤。針對這些問題,我們對程序進行了反復的修改,然后運行,再修改,在運行。就這樣,經(jīng)過我們不斷的實驗,一個完整的程序算編寫出來了。不過由于我們的程序比較簡短,我們又對其進行了一些簡單的修改,使其看起來不那么短小,并且實現(xiàn)的功能又有些增加。 體會:一周的時間很快就這樣過去了,作為c語言graphics.h庫函數(shù)初學者的我們,在一周的時間內(nèi)完成基于c語言的花朵繪制的開發(fā)、設(shè)計并實現(xiàn)相應的要求。對于這個結(jié)果,我們組的每個成員都非常開心,因為我們都對此次設(shè)計做出了一些貢獻,我們享受開心團隊合作的快樂,在設(shè)計過程中我們有過分歧,做過討論,請教過老師,不過最終我們統(tǒng)一了意見,共同努力,很好的完成了老師給我們的題目。俗話說“三個臭皮匠,頂個諸葛亮”,這就是團隊的力量!盡管這次的課程設(shè)計的內(nèi)容我們在書本上沒有學過太多,但是我們每個人都抱有很認真的學習態(tài)度。對我們來說,完成老師給定的任務(wù)固然很重要,但我個人認為我們學習的過程更加重要?,F(xiàn)在覺得自己掌握的c語言知識比課堂上學到的多很多,同

溫馨提示

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

評論

0/150

提交評論