版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、C語(yǔ)言圖形方式下的編程 TC下16位系統(tǒng), graphics 庫(kù) 前言v顯示器有兩種工作方式:文本方式(又稱字符方式)和圖形方式,缺省顯示方式為文本方式。v在文本顯示方式下,顯示的基本單位為字符,顯示屏可利用大小一般為25行*80列。在圖形方式下,顯示的基本單位為像素點(diǎn),顯示屏幕可利用的大小,取決于圖形系統(tǒng)初始化時(shí)設(shè)置的圖形模式。v顯示圖形時(shí),圖形上任意一點(diǎn)的位置均可用坐標(biāo)(x,y)來(lái)表示,顯示器的坐標(biāo)系如圖所示。(0,0)坐標(biāo)原點(diǎn))坐標(biāo)原點(diǎn) XY如何在TC環(huán)境下顯示圖形?程序中應(yīng)包括哪些代碼?v在源程序的開(kāi)頭包含圖形頭文件graphics.hv在使用圖形函數(shù)之前,還必須使用圖形系統(tǒng)初始化函數(shù)
2、initgraph(),將顯示適配器設(shè)置成某一圖形模式。一、TC V2.0圖形功能1.圖形模式的初始化在屏幕作圖之前,必須根據(jù)顯示器適配器的種類將顯示器設(shè)置成為某種圖形模式。1.1圖形系統(tǒng)初始化initgraph()函數(shù)(1)調(diào)用格式:initgraph(&driver,&mode,path);drive圖形驅(qū)動(dòng)程序(擴(kuò)展名為.bgi)。不同的顯示器,要裝入不同的圖形驅(qū)動(dòng)程序。見(jiàn)圖13-3mode圖形模式。見(jiàn)圖13-4path圖形驅(qū)動(dòng)程序路徑。若在當(dāng)前目錄下,可用空串“”代替。 (2)功能:從磁盤上裝入一個(gè)圖形驅(qū)動(dòng)程序來(lái)初始化圖形系統(tǒng),并將顯示器設(shè)置為圖形模式。注意:注意:如果
3、路徑不正確,程序在編譯的時(shí)候就不能找到驅(qū)動(dòng)程序,圖形將無(wú)法正常顯示。若不能顯示圖像,應(yīng)該做哪些其他的設(shè)置?1.TC環(huán)境:Options/Linker中的Graphics library 選為on2.在TC的DOS環(huán)境下:I. 在C:TC子目錄下輸入命令:BGIOBJ EGAVGAII. 在C:TC子目錄下輸入命令:TLIBLIBGRAPHICS.LIB+EGAVGAIII. 在程序中initgraph()函數(shù)調(diào)用之前加上一句: registerbgidriver(EGAVGA_driver);v如何設(shè)置圖形驅(qū)動(dòng)程序和圖形模式?/*案例代碼文件名:AL13_1.C*/*功能:圖形模式的初始化*/
4、#includegraphics.h/*包含graphics.h*/main() int driver, mode; driver = CGA; /*顯示器為CGA */ mode = CGAC0; /*選用CGAC0圖形模式*/ initgraph(&driver, &mode,c:tc20h); /*圖形模式初始化*/ bar(100, 80, 200,180); /*畫(huà)一個(gè)矩形*/ getch(); /*等待按鍵*/ closegraph(); /*關(guān)閉圖形模式返回字符模式*/ v若不知道圖形顯示卡的類型怎么辦?1.2圖形適配器檢測(cè)detectgraph()函數(shù)(1)調(diào)用
5、格式:detectgraph(*driver,*mode);(2)功能:在計(jì)算機(jī)有圖形適配器的情況下,確定其類型,返回適合于適配器的圖形驅(qū)動(dòng)程序的類型代碼,用driver所指向的整型量表示,把mode所指向的變量設(shè)置為適配器所能支持的最高分辨率。 通常利用此函數(shù)確定系統(tǒng)中圖形適配器的類型。v補(bǔ)充例題:1-1 #include graphics.h main( ) int gdriver, gmode; detectgraph(&gdriver, &gmode); /*自動(dòng)測(cè)試硬件*/ printf(driver is %d, mode is %dn, gdriver,gmode
6、); /*輸出測(cè)試結(jié)果*/ getch(); initgraph(&gdriver, &gmode, c:tc20h); /* 根據(jù)測(cè)試結(jié)果初始化圖形*/ circle(320,240,50); circle(320,240,80); circle(320,240,110); getch(); closegraph(); 1.3關(guān)閉圖形模式closegraph()函數(shù)(1)調(diào)用格式:closegraph();(2)功能:關(guān)閉圖形系統(tǒng),釋放用于保存圖形驅(qū)動(dòng)程序和字體的系統(tǒng)內(nèi)存,返回到調(diào)用initgraph()前的狀態(tài)。2. 屏幕顏色的設(shè)置和清屏函數(shù)2.1屏幕顏色的設(shè)置setcol
7、or()和setbkcolor()見(jiàn)圖13-5設(shè)置前景顏色setcolor()函數(shù)(1)調(diào)用格式:setcolor(color);(2)功能:把當(dāng)前畫(huà)點(diǎn)顏色設(shè)置為color所指定的顏色。每個(gè)圖形顯示卡的有效顏色由設(shè)置調(diào)色板函數(shù)setpalette()提供。設(shè)置背景顏色setbkcolor()函數(shù)(1)調(diào)用格式:setbkcolor(color);(2)功能:設(shè)置圖形背景顏色為color。如果不用此函數(shù)指定背景色,系統(tǒng)默認(rèn)為黑色。補(bǔ)充例題:1-3 #include stdio.h #include graphics.h main() int gdriver, gmode, i,j; gdrive
8、r=DETECT; initgraph(&gdriver, &gmode, c:tc20h); /*圖形初始化*/ setbkcolor(0); /*設(shè)置圖形背景*/ cleardevice(); for(i=0; i=15; i+) setcolor(i); /*設(shè)置不同作圖色*/ circle(319, 239, 20+i*15); /*畫(huà)半徑不同的圓*/ delay(3000); /*延遲3000毫秒*/ for(i=0; i=15; i+) setbkcolor(i); /*設(shè)置不同背景色*/ cleardevice(); for(j=0; j=15;j+) setco
9、lor(j); /*設(shè)置不同作圖色*/ circle(319, 239, 20+j*15); /*畫(huà)半徑不同的圓*/ delay(3000); getch(); closegraph(); 2.2清屏函數(shù)cleardevice()見(jiàn)上例。二、基本圖形的顯示基本圖形函數(shù)1.畫(huà)點(diǎn)函數(shù)putpixel()(1)調(diào)用格式:putpixel(x,y,color);(2)功能:在屏幕上(x,y)處,按color規(guī)定的顏色畫(huà)一個(gè)點(diǎn)。見(jiàn)表13-5v補(bǔ)充:對(duì)VGA適配器,它的最高分辨率為640480,其中640為整個(gè)屏幕從左到右所有象元的個(gè)數(shù),480為整個(gè)屏幕從上到下所有象元的個(gè)數(shù)。屏幕的左上角坐標(biāo)為(0,0)
10、,右下角坐標(biāo)為(639,479)。TURBO C的圖形函數(shù)都是相對(duì)于圖形屏幕坐標(biāo)來(lái)說(shuō)的。(0,0)坐標(biāo)原點(diǎn))坐標(biāo)原點(diǎn) XY (639,479)2. 畫(huà)線及線型設(shè)置函數(shù)line()和setlinestyle()從一個(gè)點(diǎn)到另一個(gè)點(diǎn)畫(huà)一條線,由畫(huà)線函數(shù)line()完成。(1)因起點(diǎn)的設(shè)定不同,Turbo C提供了3中畫(huà)線函數(shù): line(x0,y0,x1,y1)函數(shù):從坐標(biāo)(x0,y0)到(x1,y1)畫(huà)一條線。 lineto(x,y)函數(shù):從當(dāng)前坐標(biāo)點(diǎn)到(x,y)畫(huà)一條線。 linerel(dx,dy)函數(shù):從當(dāng)前坐標(biāo)點(diǎn)到(x+dx,y+dy)畫(huà)一條線。(2)線型設(shè)置函數(shù)setlinestyle(
11、) 調(diào)用格式:setlinestyle(linestyle,upattern,thickness);功能:設(shè)置線的形狀和寬度。線型linestyle缺省值為實(shí)線,upattern參數(shù)(用十六進(jìn)制數(shù)表示)只有在線型為用戶自定義時(shí)才有效。線寬thickness可取1或3,缺省值為1,表示線寬為1個(gè)像素寬。如圖13-6當(dāng)linestyle不是用戶自定義線時(shí),upattern參數(shù)取0值。補(bǔ)充例題1-43. 畫(huà)其他基本圖形的函數(shù)(1)rectangle(x0,y0,x1,y1)函數(shù):以(x0,y0)為左上角,(x1,y1)為右下角畫(huà)一矩形框。(2)circle(x,y,radius)函數(shù):以(x,y)為
12、圓心,radius為半徑畫(huà)一個(gè)原型框。(3)ellipse(x,y,s,e,xr,yr)函數(shù):以(x,y)為中心坐標(biāo),s和e為起始角度和結(jié)束角度,xr為橫軸半徑,yr為縱軸半徑,畫(huà)橢圓。(4)arc(x,y,s,e,r)函數(shù):以(x,y)為圓心,s和e為起始角度和結(jié)束角度,r為圓弧半徑畫(huà)一條圓弧線。作業(yè)v將屏幕初始化為圖形方式,并將背景顏色設(shè)為BLUE,用黃色在屏幕上畫(huà)出10個(gè)直徑不同的同心圓。三、畫(huà)填充圖形1.設(shè)置圖形填充模式setfillstyle()函數(shù)(1)調(diào)用格式:setfillstyle(pattern,color);(2)功能:用color顏色和pattern圖形模式,對(duì)后面由填
13、充圖圖形函數(shù)畫(huà)出的輪廓圖進(jìn)行填充。如圖13-72. 畫(huà)填充圖的圖形函數(shù)(1)bar(x0,y0,x1,y1)函數(shù):以(x0,y0)為左上角,(x1,y1)為右下角畫(huà)一條形填充圖。(2)fillellipse(x,y,xr,yr)函數(shù):以(x,y)為中心,xr,yr為水平和垂直軸畫(huà)一填充橢圓。橢圓用當(dāng)前填充顏色和填充格式填充,用當(dāng)前顏色畫(huà)橢圓邊線。(3)pieslice(x,y,s,e,r)函數(shù):以(x,y)為圓心,r為半徑,s、e為起始和終止角度畫(huà)填充扇形圖。(4)bar3d(x1,y1,x2,y2,depth,topflag)函數(shù):畫(huà)三維立體直方圖。3. 填充函數(shù)floodfill(x,y,
14、border)注意:v使用該函數(shù)之前,要先畫(huà)好圖形輪廓。v(X,Y)是封閉圖形中任意一點(diǎn)。vborder:若不適用:若不適用setcolor函數(shù),則函數(shù),則border的值的值必須為白色;若使用了必須為白色;若使用了setcolor函數(shù),則函數(shù),則border的值必須和該函數(shù)設(shè)置的顏色相同。的值必須和該函數(shù)設(shè)置的顏色相同。4. 其他相關(guān)函數(shù)(1)moveto(x,y)函數(shù)(2)getx()和gety()函數(shù)作業(yè)v畫(huà)出一個(gè)矩形,并嘗試以不同的填充方式與顏色進(jìn)行填充。(必做)v畫(huà)一個(gè)小車,畫(huà)一面紅旗(選做)四、圖形方式下的文本輸出1. 當(dāng)前位置輸出文本outtext()函數(shù)(1)調(diào)用格式: out
15、text(textstring);(2)功能:在屏幕的當(dāng)前位置,輸出由字符串指針textstring指出的文本字符串。該函數(shù)沒(méi)有定位參數(shù),只能在當(dāng)前位置輸出字符串。四、圖形方式下的文本輸出2.定位輸出文本outtextxy()函數(shù)(1)調(diào)用格式: outtextxy (x,y,textstring);(2)功能:在指定的(x,y)位置開(kāi)始,輸出由字符串指針textstring指出的文本字符串。四、圖形方式下的文本輸出3. 設(shè)置文本輸出位置settextjustify()函數(shù)(1)調(diào)用格式: settextjustify(horiz,vert) ;(2)功能:確定輸出字符串時(shí),如何定位(x,y)
16、。即當(dāng)用文本輸出函數(shù)輸出字符串時(shí),horiz將決定(x,y)點(diǎn)的水平位置相對(duì)輸出字符串如何確定,vert參數(shù)決定(x,y)點(diǎn)的垂直位置相對(duì)輸出字符串如何確定。如表13-8四、圖形方式下的文本輸出4. 設(shè)置文本字型settextstyle()函數(shù)(1)調(diào)用格式: settextstyle(font,direction,charsize) ;(2)功能:設(shè)置文本輸出的字型、大小和方向。參數(shù)front用來(lái)設(shè)置字型,如表13-9;參數(shù)direction用來(lái)設(shè)置輸出方向,如表13-10;charsize用來(lái)設(shè)置字符點(diǎn)陣的大小,如表13-11#include graphics.hmain()char *s=DEMO 3D;int i,gdriver,gmode;gdriver=DETECT;initgraph(&gdriver,&gmode,“c:t
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 黑龍江省哈爾濱市六校2025屆高三上學(xué)期期末聯(lián)合考試生物試卷(含答案)
- 廣東省深圳市光明區(qū)2025-2026學(xué)年七年級(jí)數(shù)學(xué)上冊(cè)期末模擬試卷(含答案)
- 2025~2026學(xué)年山東省濟(jì)南市槐蔭區(qū)七年級(jí)數(shù)學(xué)第一學(xué)期期末考試試題(含答案)
- 無(wú)領(lǐng)導(dǎo)小組討論題目及答案
- 危重患者護(hù)理考試試題及答案
- 初中教師校本培訓(xùn)課件
- 人教部編版八年級(jí)物理上冊(cè)期末考試卷(參考答案)
- 冬期施工技術(shù)要領(lǐng)
- 森林法知識(shí)試題及答案
- 《GAT 925-2011拘留所管理信息系統(tǒng)基本功能》專題研究報(bào)告
- 麻醉科術(shù)后疼痛管理流程
- 營(yíng)銷管理(第16版)核心框架
- 天空地一體化智慧水利監(jiān)測(cè)體系構(gòu)建
- 營(yíng)運(yùn)助理轉(zhuǎn)正述職報(bào)告
- 高一數(shù)學(xué)單元復(fù)習(xí)(人教A版必修第一冊(cè))基本不等式全題型與技巧歸納(11大重點(diǎn)題型)含解析
- 二年級(jí)有余數(shù)的除法口算練習(xí)題300道
- 耳鼻咽喉的應(yīng)用解剖生理教案(2025-2026學(xué)年)
- 征兵言語(yǔ)測(cè)試真題及答案
- 2025至2030脫氧穿心蓮內(nèi)酯行業(yè)項(xiàng)目調(diào)研及市場(chǎng)前景預(yù)測(cè)評(píng)估報(bào)告
- 案例-華為從戰(zhàn)略到執(zhí)行的SDBE領(lǐng)先模型
- 江蘇省無(wú)錫市2025屆高三上學(xué)期期末教學(xué)質(zhì)量調(diào)研測(cè)試-數(shù)學(xué)試卷(含答案)
評(píng)論
0/150
提交評(píng)論