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

下載本文檔

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

文檔簡介

1、C語言圖形、圖像函數(shù)庫 (2007-10-26 10:54 分類: 電源技術(shù)類文章 查看文章 C語言圖形、圖像函數(shù)庫graphics.h2007-10-14 10:59graphics.h (一 像素函數(shù) 56. putpiel( 畫像素點(diǎn)函數(shù) 57. getpixel(返回像素色函數(shù) (二 直線和線型函數(shù) 58. line( 畫線函數(shù) 59. lineto( 畫線函數(shù) 60. linerel( 相對畫線函數(shù) 61. setlinestyle( 設(shè)置線型函數(shù) 62. getlinesettings( 獲取線型設(shè)置函數(shù) 63. setwritemode( 設(shè)置畫線模式函數(shù) (三、多邊形函數(shù) 64

2、. rectangle( 畫矩形函數(shù) 65. bar( 畫條函數(shù) 66. bar3d( 畫條塊函數(shù) 67. drawpoly( 畫多邊形函數(shù) (四、 圓、弧和曲線函數(shù) 68. getaspectratio(獲取縱橫比函數(shù) 69. circle(畫圓函數(shù) 70. arc( 畫圓弧函數(shù) 71. ellipse(畫橢圓弧函數(shù) 72. fillellipse( 畫橢圓區(qū)函數(shù) 73. pieslice( 畫扇區(qū)函數(shù) 74. sector( 畫橢圓扇區(qū)函數(shù) 75. getarccoords(獲取圓弧坐標(biāo)函數(shù) (五、 填充函數(shù) 76. setfillstyle( 設(shè)置填充圖樣和顏色函數(shù) 77. setfil

3、lpattern( 設(shè)置用戶圖樣函數(shù) 78. floodfill( 填充閉域函數(shù) 79. fillpoly( 填充多邊形函數(shù) 80. getfillsettings( 獲取填充設(shè)置函數(shù) 81. getfillpattern( 獲取用戶圖樣設(shè)置函數(shù) (六、圖像函數(shù) 82. imagesize( 圖像存儲大小函數(shù) 83. getimage( 保存圖像函數(shù) 84. putimage( 輸出圖像函數(shù) 四、圖形和圖像函數(shù) 對許多圖形應(yīng)用程序,直線和曲線是非常有用的.但對有些圖形只能靠操作單個像素才能畫出.當(dāng)然如果沒有畫像素的功能,就無法操作直線和曲線的函數(shù).而且通過大規(guī)模使用像素功能,整個圖形就可以保存

4、、寫、擦除和與屏幕上的原有圖形進(jìn)行疊加. (一 像素函數(shù) 56. putpixel( 畫像素點(diǎn)函數(shù) 功能: 函數(shù)putpixel( 在圖形模式下屏幕上畫一個像素點(diǎn). 用法: 函數(shù)調(diào)用方式為void putpixel(int x,int y,int color; 說明: 參數(shù)x,y為像素點(diǎn)的坐標(biāo),color是該像素點(diǎn)的顏色,它可以是顏色符號名,也可以是整型色彩值. 此函數(shù)相應(yīng)的頭文件是graphics.h 返回值: 無 例: 在屏幕上(6,8處畫一個紅色像素點(diǎn): putpixel(6,8,RED; 57. getpixel(返回像素色函數(shù) 功能: 函數(shù)getpixel(返回像素點(diǎn)顏色值. 用法:

5、 該函數(shù)調(diào)用方式為int getpixel(int x,int y; 說明: 參數(shù)x,y為像素點(diǎn)坐標(biāo). 函數(shù)的返回值可以不反映實(shí)際彩色值,這取決于調(diào)色板的設(shè)置情況(參見setpalette(函數(shù). 這個函數(shù)相應(yīng)的頭文件為graphics.h 返回值: 返回一個像素點(diǎn)色彩值. 例: 把屏幕上(8,6點(diǎn)的像素顏色值賦給變量color. color=getpixel(8,6; (二 直線和線型函數(shù) 有三個畫直線的函數(shù),即line(,lineto(,linerel(.這些直線使用整型坐標(biāo),并相對于當(dāng)前圖形視口,但不一定受視口限制,如果視口裁剪標(biāo)志clip為真,那么直線將受到視口邊 緣截斷;如果clip

6、為假,即使終點(diǎn)坐標(biāo)或新的當(dāng)前位置在圖形視口或屏幕極限之外,直線截斷到屏幕極限. 有兩種線寬及幾種線型可供選擇,也可以自己定義線圖樣.下面分別介紹直線和線型函數(shù). 58. line( 畫線函數(shù) 功能: 函數(shù)line(使用當(dāng)前繪圖色、線型及線寬,在給定的兩點(diǎn)間畫一直線. 用法: 該函數(shù)調(diào)用方式為void line(int startx,int starty,int endx,int endy; 說明: 參數(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 返回值: 無 例: 見

7、函數(shù)60.linerel(中的實(shí)例. 59. lineto( 畫線函數(shù) 功能: 函數(shù)lineto(使用當(dāng)前繪圖色、線型及線寬,從當(dāng)前位置畫一直線到指定位置. 用法: 此函數(shù)調(diào)用方式為void lineto(int x,int y; 說明: 參數(shù)x,y為指定點(diǎn)的坐標(biāo),函數(shù)調(diào)用后,當(dāng)前位置改變到指定點(diǎn)(x,y. 該函數(shù)對應(yīng)的頭文件為graphics.h 返回值: 無 例: 見函數(shù)60.linerel(中的實(shí)例. 60.linerel( 相對畫線函數(shù) 功能: 函數(shù)linerel( 使用當(dāng)前繪圖色、線型及線寬,從當(dāng)前位置開始,按指定的水平和垂直偏移距離畫一直線. 用法: 這個函數(shù)調(diào)用方式為void l

8、inerel(int dx,int dy; 說明: 參數(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í)例: #i nclude void main( int driver,mode; driver=DETECT; mode=0; initgraph(&driver,&mode,"" setcolor(15; line(66,66,88,88; lineto(100,100; li

9、nerel(36,64; getch(; restorecrtmode(; 61. setlinestyle( 設(shè)置線型函數(shù) 功能: setlinestyle( 為畫線函數(shù)設(shè)置當(dāng)前線型,包括線型、線圖樣和線寬. 用法: setlinestyle( 函數(shù)調(diào)用方式為void setlinestyle(int stly,unsigned pattern,int width; 說明: 參數(shù)style為線型取值,也可以用相應(yīng)名稱表示,如表1-10中所示. 參數(shù)pattern用于自定義線圖樣,它是16位(bit字,只有當(dāng)style=USERBIT_LINE(值為1時,pattern的值才有意義,使用用戶自

10、定義線圖樣,與圖樣中“1”位對應(yīng)的像素顯示,因此,pattern=0xFFFF,則畫實(shí)線;pattern=0x9999,則畫每隔兩個像素交替顯示的虛線,如果要畫長虛線,那么pattern的值可為0xFF00和0xF00F,當(dāng)style不為USERBIT_LINE值時,雖然pattern的值不起作用,但扔須為它提供一個值,一般取為0. 參數(shù)wigth用來設(shè)定線寬,其取值見表1-11,表中給出了兩個值,即1和3,實(shí)際上,線寬取值為2也是可以接受的. 若用非法參數(shù)調(diào)用setlinestyle(函數(shù),那么graphresult(會返回錯誤代碼,并且當(dāng)前線型繼續(xù)有效. Turbo C提供的線型與線寬定義

11、在頭文件graphics.h中,表1-10和1-11分別 列出了參數(shù)的取值與含義. 表1-10 線型 - 名 稱 取 值 含 義 - SOLID_LINE 0 實(shí)線 DOTTED_LINE 1 點(diǎn)線 CNTER_LINE 2 中心線 DASHED_LINE 3 虛線 USERBIT_LINE 4 用戶自定義線型 - 表1-11 線寬 - 名 稱 取 值 說 明 - NORM_WIDTH(常寬 1 一個像素寬(缺省值 THICK_WIDTH(加寬 3 三個像素寬 - 這個函數(shù)的頭文件是graphics.h 返回值: 無 例: 下面的程序顯示了BC中所提供的線型圖樣: #i nclude void

12、 main( int driver,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(; 62. getlinesettings( 獲取線型設(shè)置函數(shù) 功能: 函數(shù)getlinesettings( 用當(dāng)前設(shè)置的線型、線圖樣和線寬填 寫linesettingstype型結(jié)構(gòu). 用法: 函數(shù)調(diào)用方式為void getlinesett

13、ings(struct linesettingstype *info; 說明: 此函數(shù)調(diào)用執(zhí)行后,當(dāng)前的線型、線圖樣和線寬值被裝入info指向的結(jié)構(gòu)里,從而可從該結(jié)構(gòu)中獲得線型設(shè)置. linesettingstype型結(jié)構(gòu)定義如下: struct linesettingstype int linestyle; unsigned upattern; int thickness; ; 其中l(wèi)inestyle用于存放線型,線型值為表1-10中的各值之一. upattern用為裝入用戶自定義線圖樣,這是16位字,每一位等于一個像素,如果哪個位被設(shè)置,那么該像素打開,否則關(guān)閉. thickness為線寬

14、值存放的變量,可參見表1-11. getlinesettings(函數(shù)對應(yīng)的頭文件為graphics.h 返回值: 返回的線型設(shè)置存放在info指向的結(jié)構(gòu)中. 例: 把當(dāng)前線型的設(shè)置寫入info結(jié)構(gòu): struct linesettingstype info; getlinesettings(&info; 63.setwritemode( 設(shè)置畫線模式函數(shù) 功能: 函數(shù)setwritemode( 設(shè)置畫線模式 用法: 函數(shù)調(diào)用方式為 void setwritemode(int mode; 說明: 參數(shù)mode只有兩個取值0和1,若mode為0,則新畫的線將復(fù)蓋屏幕上原有的圖形,此為缺省

15、畫線輸出模式.如果mode為1,那么新畫的像素點(diǎn)與原有圖形的像素點(diǎn)先進(jìn)行異或(XOR運(yùn)算,然后輸出到屏幕上,使用這種畫線輸出模式,第二次畫同一圖形時,將擦除該圖形.調(diào)用setwritemode(設(shè)置的畫線輸出模式只影響函數(shù)line(,lineto(,linerel(,recangle(和drawpoly(. setwritemode(函數(shù)對應(yīng)的頭文件是graphics.h 返回值: 無 例: 設(shè)置畫線輸出模式為0: setwritemode(0; (三、多邊形函數(shù) 對多邊形,無疑可用畫直線函數(shù)來畫出它,但直接提供畫多邊形的函數(shù)會給用戶很大方便.最常見的多邊形有矩形、矩形 塊(或稱條形、多邊形和

16、多邊形塊,我們還把長方形條塊也放到這里一起考慮,雖然它不是多邊形,但它的特例就是矩形(塊.下面直接介紹畫多邊形的函數(shù). 64. rectangle( 畫矩形函數(shù) 功能: 函數(shù)rectangle( 用當(dāng)前繪圖色、線型及線寬,畫一個給定左上角與右下角的矩形(正方形或長方形. 用法: 此函數(shù)調(diào)用方式為void rectangle(int left,int top,int right,int bottom; 說明: 參數(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)的矩形

17、部分才被畫出. 這個函數(shù)對應(yīng)的頭文件為graphics.h 返回值: 無 例: 下面的程序畫一些矩形實(shí)例: #i nclude void main( int driver,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(; 65. bar( 畫條函數(shù) 功能:

18、 函數(shù)bar(用當(dāng)前填充圖樣和填充色(注意不是給圖色畫出一個指定上左上角與右下角的實(shí)心長條形(長方塊或正方塊,但沒有四條邊線. 用法: bar(函數(shù)調(diào)用方式為void bar(int left,int top,int right,int bottom; 說明: 參數(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,同時t

19、opflag參數(shù)要設(shè)置為真,否則該條形無頂邊線. 這 應(yīng)的頭文件為graphics.h 返回值: 無 例: 見函數(shù)bar3d(中的實(shí)例. 66.bar3d( 畫條塊函數(shù) 功能: 函數(shù)bar3d( 使用當(dāng)前繪圖色、線型及線寬畫出三維長方形條塊,并用當(dāng)前填充圖樣和填 充色填充該三維條塊的表面. 用法: 此函數(shù)調(diào)用方式為void bar3d(int left,int top,int right,int bottom,int depth,int topflag; 說明: 參數(shù)left,top,right,bottom分另為左上角與右下角坐標(biāo),這與bar(函數(shù)中的一樣.參數(shù)depth為條塊的深度,以像素

20、為單位,通常按寬度的四分之一計算.深度方向通過屏顯縱橫比調(diào)節(jié)為約45度(即這時x/y比設(shè)置為1:1. 參數(shù)topflag相當(dāng)于一個布爾參數(shù),如果設(shè)置為1(真那么條塊上放一頂面;若設(shè)置為0(假,則三維條形就沒有頂面,這樣可使多個三維條形疊加在一起. 要使圖形更加美觀,可利用函數(shù)floodfill(或setfillpattern(來選擇填充圖樣和填充色(參見本小節(jié)(五填充函數(shù) . bar3d(函數(shù)對應(yīng)的頭文件為graphics.h 返回值: 無 例: 下面的程序畫一個條形和條塊: #i nclude void main( int driver,mode; driver=DETECT; mode=0

21、; initgraph(&driver,&mode, "" setfillstyle(SOLID-FILL,GREEN; bar(60,80,220,160; setfillstyle(SOLID-FILL,RED; bar3d(260,180,360,240,20,1; getch(; restorecrtmode(; 67. drawpoly( 畫多邊形函數(shù) 功能: 函數(shù)drawpoly( 用當(dāng)前繪圖色、線型及線寬,畫一個給定若干點(diǎn)所定義的多邊形. 用法: 此函數(shù)調(diào)用方式為void drawpoly(int pnumber,int *points; 說明

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

23、形圖: #i nclude void main( int driver,mode; static int polypoints118=100,100,110,120,100,130,120,125,140,140,130,120, 140,110,120,115,100,100; static int polypoints218=180,100,210,120,200,130,220,125,240,140,230,120, 240,110,220,115,220,110; driver=DETECT; mode=0; initgraph(&driver,&mode,"

24、;" drawpoly(9,polypoints1; drawpoly(9,polypoints2; getch(; restorecrtmode(; (四、 圓、弧和曲線函數(shù) 在一個屏幕上畫得很圓的圖形到另一個屏幕上可能被壓扁或拉長,這是因?yàn)槊恳环N顯示卡與之相應(yīng)的顯示模式都有一個縱橫比.縱橫比是指像素的水平方向大小與垂直方向大小的比值.如VGA顯示卡由于偈素基本上是正方形,所以縱橫比為1.000. 為了保證幾何圖形基本按預(yù)計情況顯示在屏幕上,用屏顯的縱橫比來計算和糾正不同硬件及顯示卡產(chǎn)生的畸變.計算縱橫比所需要的水平方向和垂直方向的比例系數(shù)可調(diào)用函數(shù)getaspectratio(獲

25、得. 68. 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(這是因?yàn)榇蠖鄶?shù)屏幕像素高比寬長. 注意縱橫比自動用作下面函數(shù)arc(,circle(和pieslice(中的標(biāo)尺因子,使屏幕上圓或弧正常顯示.但用e

26、llipse(函數(shù)畫橢圓必須調(diào)用本函數(shù)獲取縱橫比作為標(biāo)尺因子,否則不予調(diào)整.縱橫比可用于其它幾何圖形,目的是校正和顯示圖形. getaspectratio(函數(shù)對應(yīng)的頭文件為graphics.h 返回值: 返回x與y方向比例系 數(shù)分別存放在xasp和yasp所指向的變量中. 例: 下面的程序顯示縱橫比: int xasp,yasp; float aspectratio; getaspectratio(&xasp,&yasp; aspectratio=xasp/yasp; printf("aspect ratio: %f",aspectratio; 69. circle(畫圓函數(shù) 功能: 函數(shù)circle(使用當(dāng)前繪圖色并以實(shí)線畫一個完整的圓. 用法:該函數(shù)調(diào)用方式為void circle(int x,int y,int radius; 說明: 參數(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 返回值: 無 例: 畫六個同心圓,圓心在

溫馨提示

  • 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

提交評論