C語言中繪圖的函數(shù)庫全解_第1頁
C語言中繪圖的函數(shù)庫全解_第2頁
C語言中繪圖的函數(shù)庫全解_第3頁
C語言中繪圖的函數(shù)庫全解_第4頁
C語言中繪圖的函數(shù)庫全解_第5頁
已閱讀5頁,還剩5頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

C語言中繪圖的函數(shù)庫圖形和圖像函數(shù)包含在graphics.h里面(一)像素函數(shù)putpiel()畫像素點(diǎn)函數(shù)getpixel()返回像素色函數(shù)(二)直線和線型函數(shù)line()畫線函數(shù)lineto()畫線函數(shù)linerel()相對畫線函數(shù)setlinestyle()設(shè)置線型函數(shù)getlinesettings()獲取線型設(shè)置函數(shù)setwritemode()設(shè)置畫線模式函數(shù)(三)、多邊形函數(shù)rectangle()畫矩形函數(shù)bar()畫條函數(shù)bar3d()畫條塊函數(shù)drawpoly()畫多邊形函數(shù)(四)、圓、弧和曲線函數(shù)getaspectratio()獲取縱橫比函數(shù)circle()畫圓函數(shù)arc()畫圓弧函數(shù)ellipse()畫橢圓弧函數(shù)fillellipse()畫橢圓區(qū)函數(shù)pieslice()畫扇區(qū)函數(shù)sector()畫橢圓扇區(qū)函數(shù)getarccoords()獲取圓弧坐標(biāo)函數(shù)(一)像素函數(shù)56.putpixel()畫像素點(diǎn)函數(shù)功能:函數(shù)putpixel()在圖形模式下屏幕上畫一個像素點(diǎn)。用法:函數(shù)調(diào)用方式為voidputpixel(intx,inty,intcolor);說明:參數(shù)x,y為像素點(diǎn)的坐標(biāo),color是該像素點(diǎn)的顏色,它可以是顏色符號名,也可以是整型色彩值。此函數(shù)相應(yīng)的頭文件是graphics.h返回值:無例:在屏幕上(6,8)處畫一個紅色像素點(diǎn):putpixel(6,8,RED);(二)直線和線型函數(shù)有三個畫直線的函數(shù),即line(),lineto(),linerel()。這些直線使用整型坐標(biāo),并相對于當(dāng)前圖形視口,但不一定受視口限制,如果視口裁剪標(biāo)志clip為真,那么直線將受到視口邊緣截斷;如果clip為假,即使終點(diǎn)坐標(biāo)或新的當(dāng)前位置在圖形視口或屏幕極限之外,直線截斷到屏幕極限。有兩種線寬及幾種線型可供選擇,也可以自己定義線圖樣。下面分別介紹直線和線型函數(shù)。line()畫線函數(shù)功能:函數(shù)line()使用當(dāng)前繪圖色、線型及線寬,在給定的兩點(diǎn)間畫一直線。用法:該函數(shù)調(diào)用方式為voidline(intstartx,intstarty,intendx,intendy);說明:參數(shù)startx,starty為起點(diǎn)坐標(biāo),endx,endy為終點(diǎn)坐標(biāo),函數(shù)調(diào)用前后,圖形狀態(tài)下屏幕光標(biāo)(一般不可見)當(dāng)前位置不改變。此函數(shù)相應(yīng)的頭文件為graphics.h返回值:無例:見函數(shù)60.linerel()中的實(shí)例。lineto()畫線函數(shù)功能:函數(shù)lineto()使用當(dāng)前繪圖色、線型及線寬,從當(dāng)前位置畫一直線到指定位置。用法:此函數(shù)調(diào)用方式為voidlineto(intx,inty);說明:參數(shù)x,y為指定點(diǎn)的坐標(biāo),函數(shù)調(diào)用后,當(dāng)前位置改變到指定點(diǎn)(x,y)o該函數(shù)對應(yīng)的頭文件為graphics.h返回值:無例:見函數(shù)60.linerel()中的實(shí)例。linerel()相對畫線函數(shù)功能:函數(shù)linerel()使用當(dāng)前繪圖色、線型及線寬,從當(dāng)前位置開始,按指定的水平和垂直偏移距離畫一直線。用法:這個函數(shù)調(diào)用方式為voidlinerel(intdx,intdy);說明:參數(shù)dx,dy分別是水平偏移距離和垂直偏移距離。函數(shù)調(diào)用后,當(dāng)前位置變?yōu)樵黾悠凭嚯x后的位置,例如,原來的位置是(8,6),調(diào)用函數(shù)linerel(10,18)后,當(dāng)前位置為(18,24)。返回值:無例:下面的程序?yàn)楫嬀€函數(shù)調(diào)用實(shí)例:#include<graphics.h>voidmain()(intdriver,mode;driver=DETECT;mode=0;initgraph(&driver,&mode,"");setcolor(15);line(66,66,88,88);lineto(100,100);linerel(36,64);getch();restorecrtmode();)setlinestyle()設(shè)置線型函數(shù)功能:setlinestyle()為畫線函數(shù)設(shè)置當(dāng)前線型,包括線型、線圖樣和線寬。用法:setlinestyle()函數(shù)調(diào)用方式為voidsetlinestyle(intstly,unsignedpattern,intwidth);說明:參數(shù)style為線型取值,也可以用相應(yīng)名稱表示,如表1-10中所示。參數(shù)pattern用于自定義線圖樣,它是16位(bit)字,只有當(dāng)style=USERBIT_LINE(值為1)時,pattern的值才有意義,使用用戶自定義線圖樣,與圖樣中“1”位對應(yīng)的像素顯示,因此,pattern=0xFFFF,則畫實(shí)線;pattern=0x9999,則畫每隔兩個像素交替顯示的3線,如果要畫長虛線,那么pattern的值可為0xFF00和0xF00F,當(dāng)style不為USERBIT_LINEt時,雖然pattern的值不起作用,但扔須為它提供一個值,一般取為0。參數(shù)wigth用來設(shè)定線寬,其取值見表1-11,表中給出了兩個值,即1和3,實(shí)際上,線寬取值為2也是可以接受的。若用非法參數(shù)調(diào)用setlinestyle()函數(shù),那么graphresult()會返回錯誤代碼,并且當(dāng)前線型繼續(xù)有效。TurboC提供的線型與線寬定義在頭文件graphics.h中,表1-10和1-11分別列出了參數(shù)的取值與含義。表1-10線型名稱取值含義SOLID_LINE0實(shí)線DOTTED_LINE1點(diǎn)線CNTER_LINE2中心線DASHED_LINE乘線USERBIT_LINE4用戶自定義線型表1-11線寬名稱取值說明NORM_WIDTH隨)1一個像素寬(缺省值)THICK_WIDTH(寬)3三個像素寬這個函數(shù)的頭文件是graphics.h返回值:無例:下面的程序顯示了BC中所提供的線型圖樣:#include<graphics.h>voidmain()(intdriver,mode;driver=DETECT;mode=0;initgraph(&driver,&mode,"");for(i=0;i<4;i++)(setlinestyle(i,0,1);line(i*50,200,i*50+60,200)}getch();restorecrtmode();}getlinesettings()獲取線型設(shè)置函數(shù)功能:函數(shù)getlinesettings()用當(dāng)前設(shè)置的線型、線圖樣和線寬填寫linesettingstype型結(jié)構(gòu)。用法:函數(shù)調(diào)用方式為voidgetlinesettings(structlinesettingstype*info);說明:此函數(shù)調(diào)用執(zhí)行后,當(dāng)前的線型、線圖樣和線寬值被裝入info指向的結(jié)構(gòu)里,從而可從該結(jié)構(gòu)中獲得線型設(shè)置。linesettingstype型結(jié)構(gòu)定義如下:structlinesettingstype{intlinestyle;unsignedupattern;intthickness;};其中l(wèi)inestyle用于存放線型,線型值為表1-10中的各值之一。upattern用為裝入用戶自定義線圖樣,這是16位字,每一位等于一個像素,如果哪個位被設(shè)置,那么該像素打開,否則關(guān)閉。thickness為線寬值存放的變量,可參見表1-11。getlinesettings()函數(shù)對應(yīng)的頭文件為graphics.h返回值:返回的線型設(shè)置存放在info指向的結(jié)構(gòu)中。例:把當(dāng)前線型的設(shè)置寫入info結(jié)構(gòu):structlinesettingstypeinfo;getlinesettings(&info);63.setwritemode()設(shè)置畫線模式函數(shù)功能:函數(shù)setwritemode()設(shè)置畫線模式用法:函數(shù)調(diào)用方式為voidsetwritemode()(intmode);說明:參數(shù)mode只有兩個取值0和1,若mode為0,則新畫的線將復(fù)蓋屏幕上原有的圖形,此為缺省畫線輸出模式。如果mode為1,那么新畫的像素點(diǎn)與原有圖形的像素點(diǎn)先進(jìn)行異或(XOR貶算,然后輸出到屏幕上,使用這種畫線輸出模式,第二次畫同一圖形時,將擦除該圖形。調(diào)用setwritemode()設(shè)置的畫線輸出模式只影響函數(shù)line(),lineto(),linerel(),recangle()和drawpoly()。setwritemode()函數(shù)對應(yīng)的頭文件是graphics.h返回值:無例:設(shè)置畫線輸出模式為0:setwritemode(0);(三)、多邊形函數(shù)對多邊形,無疑可用畫直線函數(shù)來畫出它,但直接提供畫多邊形的函數(shù)會給用戶很大方便。最常見的多邊形有矩形、矩形塊(或稱條形)、多邊形和多邊形塊,我們還把長方形條塊也放到這里一起考慮,雖然它不是多邊形,但它的特例就是矩形(塊)。下面直接介紹畫多邊形的函數(shù)。rectangle。畫矩形函數(shù)功能:函數(shù)rectangle()用當(dāng)前繪圖色、線型及線寬,畫一個給定左上角與右下角的矩形(正方形或長方形)。用法:此函數(shù)調(diào)用方式為voidrectangle(intleft,inttop,intright,intbottom);說明:參數(shù)left,top是左上角點(diǎn)坐標(biāo),right,bottom是右下角點(diǎn)坐標(biāo)。如果有一個以上角點(diǎn)不在當(dāng)前圖形視口內(nèi),且裁剪標(biāo)志clip設(shè)置的是真(1),那么調(diào)用該函數(shù)后,只有在圖形視口內(nèi)的矩形部分才被畫出。這個函數(shù)對應(yīng)的頭文件為graphics.h返回值:無例:下面的程序畫一些矩形實(shí)例:#include<graphics.h>voidmain(){intdriver,mode;driver=DETECT;mode=0;initgrpah(&driver,&mode,"");rectangle(80,80,220,200);rectangle(140,99,180,300);rectangle(6,6,88,88);rectangle(168,72,260,360);getch();restorecrtmode();}bar()畫條函數(shù)功能:函數(shù)bar()用當(dāng)前填充圖樣和填充色(注意不是給圖色)畫出一個指定上左上角與右下角的實(shí)心長條形(長方塊或正方塊),但沒有四條邊線)。用法:bar()函數(shù)調(diào)用方式為voidbar(intleft,inttop,intright,intbottom);說明:參數(shù)left,topright,bottom分別為左上角坐標(biāo)與右下角坐標(biāo),它們和調(diào)用函數(shù)rectangle()的情形相同,調(diào)用此函數(shù)前,可用setfillstyle()或setfillpattern()設(shè)置當(dāng)前填充圖樣和填充色。注意此函數(shù)只畫沒有邊線的條形,如果要畫有邊線的的條形,可調(diào)用下面的函數(shù)bar3d()來畫,并將深度參數(shù)設(shè)為0,同時topflag參數(shù)要設(shè)置為真,否則該條形無頂邊線。這應(yīng)的頭文件為graphics.h返回值:無例:見函數(shù)bar3d()中的實(shí)例。bar3d()畫條塊函數(shù)功能:函數(shù)bar3d()使用當(dāng)前繪圖色、線型及線寬畫出三維長方形條塊,并用當(dāng)前填充圖樣和填充色填充該三維條塊的表面。用法:此函數(shù)調(diào)用方式為voidbar3d(intleft,inttop,intright,intbottom,intdepth,inttopflag);說明:參數(shù)left,top,right,bottom分另為左上角與右下角坐標(biāo),這與bar()函數(shù)中的一樣。參數(shù)depth為條塊的深度,以像素為單位,通常按寬度的四分之一計算。深度方向通過屏顯縱橫比調(diào)節(jié)為約45度(即這時x/y比設(shè)置為1:1)。參數(shù)topflag相當(dāng)于一個布爾參數(shù),如果設(shè)置為1(真)那么條塊上放一頂面;若設(shè)置為0(假),則三維條形就沒有頂面,這樣可使多個三維條形疊加在一起。要使圖形更加美觀,可利用函數(shù)floodfill()或sefillpattern()來選擇填充圖樣和填充色(參見本小節(jié)(五)填充函數(shù))。bar3d()函數(shù)對應(yīng)的頭文件為graphics.h返回值:無例:下面的程序畫一個條形和條塊:#include<graphics.h>voidmain(){intdriver,mode;driver=DETECT;mode=0;initgraph(&driver,&mode,"");sefillstyle(SOLID-FILL,GREEN);bar(60,80,220,160);setfillstyle(SOLID-FILL,RED);bar3d(260,180,360,240,20,1);getch();restorecrtmode();}(四)、圓、弧和曲線函數(shù)在一個屏幕上畫得很圓的圖形到另一個屏幕上可能被壓扁或拉長,這是因?yàn)槊恳环N顯示卡與之相應(yīng)的顯示模式都有一個縱橫比??v橫比是指像素的水平方向大小與垂直方向大小的比值。如VGA?示卡由于偈素基本上是正方形,所以縱橫比為1.0000為了保證幾何圖形基本按預(yù)計情況顯示在屏幕上,用屏顯的縱橫比來計算和糾正不同硬件及顯示卡產(chǎn)生的畸變。計算縱橫比所需要的水平方向和垂直方向的比例系數(shù)可調(diào)用函數(shù)getaspectratio()獲得。circle()畫圓函數(shù)功能:函數(shù)circle()使用當(dāng)前繪圖色并以實(shí)線畫一個完整的圓。用法:該函數(shù)調(diào)用方式為voidcircle(intx,inty,intradius);說明:參數(shù)x,y為圓心坐標(biāo),radius為圓半徑,用像素個素表示。注意,調(diào)用circle()函數(shù)畫圓時不用當(dāng)前線型。不同于ellipse()函數(shù),只用單個半徑radius參數(shù)調(diào)用circle()函數(shù),故屏顯縱橫比可以自動調(diào)節(jié),以產(chǎn)生正確的顯示圖。此函數(shù)對應(yīng)的頭文件為graphics.h返回值:無例:畫六個同心圓,圓心在(100,100)。#include<graphics.h>voidmain()(intdriver,mode;driver=DETECT;mode=0;initgraph(&driver,&mode,"");circle(100,100,10);circle(100,100,20);circle(100,100,30);circle(100,100,40);circle(100,100,50);circle(100,100,60);getch();restorecrtmode();)arc()畫圓弧函數(shù)功能:函數(shù)arc()使用當(dāng)前繪圖色并以實(shí)線畫一圓弧。用法:函數(shù)調(diào)用方式為voidarc(intx,inty,intstartangle,intendangle,intradius);說明:參數(shù)x,y為圓心坐標(biāo),startangle與endangle分別為起始角與終止角,radius為半徑。圓心坐標(biāo)和半徑以像素個數(shù)給出,起始角和終止角以度為單位,0度位于右邊,90度位于頂部,180度位于左邊,底部是270度。同往常一樣,360度與0度重合。角度按逆時針方向增加,但并不要求終止角一定比起始角大。

例如指定300度和90度分別為起始角和終止角,與指定300度和450度分啰為起始角和終止角可畫出相同的弧。大于360度可作為參數(shù),它將被化到0度—360度范圍里。函數(shù)arc()能畫封閉圓,只要取起始角為0度,終止角為360度即可。此函數(shù)中,屏顯縱橫比可自動調(diào)節(jié)。arc()函數(shù)對應(yīng)的頭文件為graphics.h返回值:無例:以(200,200)為圓心,100為半徑,從0度到120度畫圓弧:#include<graphics.hvoidmain(){intdriver,mode;driver=DETECT;mode=0;initgraph(&drivwer,&mode,"");setcolor(WHITE);arc(200,200,0,120,100);getch();restorecrtmode();}setbackc010ro設(shè)置背景顏色函數(shù)setcolor()設(shè)置顏色函數(shù)setbackc010ro設(shè)置背景顏色函數(shù)功能:函數(shù)setbackc010ro把當(dāng)前調(diào)色板顏色的第一個值改成指定的顏色值,以設(shè)置背景顏色。用法:此函數(shù)調(diào)用方式為voidsetbackc010r(intcolor);說明:參數(shù)color為指定的背景色,其有效值可以是顏色符號名,也可以是色彩值。表1-8列出了背景顏色供選取。顏色符號名色彩值名色彩值顏色符號顏色符號名色彩值名色彩值顏色符號DARKGRAY(深LIGHTBLUE(淡LIGHTGREEN(淡TOC\o"1-5"\h\zBLACK(黑色)0灰)8BLUE(藍(lán)色)1藍(lán))9GREEN(綠色)2

ii^)10ii^)10CYAN

溫馨提示

  • 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

提交評論