


版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、C 語言簡易圖形教程 1-驅(qū)動(dòng)圖形模式C 語言函數(shù)庫中提供了豐富的圖形函數(shù),例如畫圓函數(shù)、畫線函數(shù)、畫矩形函數(shù)、畫點(diǎn)函數(shù)等等,那么如何使用這些函數(shù)呢,C 語言簡易圖形教程系列會(huì)給大家做一個(gè)比較詳細(xì)的講解,那么先來看一下在使用這些函數(shù)前必須先做的一件事驅(qū)動(dòng)圖形模式C 語言一般分成兩種界面,一是字符界面,就是打印最經(jīng)典的“HelloWorl d!” 的那個(gè)界面;另一個(gè)就是圖形界面C 語言將字符界面作為默認(rèn)的顯示界面。當(dāng)我們需要使用圖形界面的時(shí)候,需要先將字符界面驅(qū)動(dòng)為圖形界面,然后才可 以調(diào)用上面說的那些圖形函數(shù),下面來看一下,如何驅(qū)動(dòng)圖形模式。圖形驅(qū)動(dòng)函數(shù)代碼如下:voidinitgr(void
2、)int gd = DETECT,gm = 0; initgraph(&gd,&gm,);函數(shù)說明:該函數(shù) initgr() 為用戶自定義函數(shù),沒有參數(shù)和返回值,如需驅(qū)動(dòng)圖形模式,則直接調(diào)用該函數(shù)即可。gd = DETECT 設(shè)置自動(dòng)檢測顯示器。gm = 0 設(shè)置自動(dòng)檢測分辨率。registerbgidriver(EGAVGA_driver) 建立獨(dú)立圖形運(yùn)行程序, 該語句一般在Win-Tc 環(huán)境下才需要使用,如想在 TurboC 環(huán)境下運(yùn)行,將該語句刪除或注釋掉即可。initgraph(&gd, &gm, ) 該語句中的函數(shù) initgraph() C 語言的庫函數(shù), 包含在頭文件“grap
3、hics.h” 中, 該語句的作用為初始化圖形系統(tǒng)。頭文件: 該自定義函數(shù)中所用到的庫函數(shù)均包含在頭文件 graphics.h 中。返回值: 無返回值。下面我們來看一個(gè)簡單的例子,例子的功能是驅(qū)動(dòng)圖形模式后在屏幕中心畫一些同心圓。代碼如下:/* 打開圖形函數(shù)頭文件 #include/* 驅(qū)動(dòng)圖形模式 */voidinitgr(void)int gd = DETECT,gm = 0; initgraph(&gd,&gm,);voidmain(void)int i;initgr();/*調(diào)用圖形驅(qū)動(dòng)函數(shù) for(i=10;i=100;i+=10)circle(320,240,i);/*畫圓函數(shù),
4、頭兩個(gè)參數(shù)為圓心坐標(biāo), i 為半徑*/getch();closegraph();/*關(guān)閉圖形驅(qū)動(dòng) */C語言簡易圖形教程2設(shè)置前景色和背景色設(shè)置前景色功能: 設(shè)置當(dāng)前畫筆顏色。函數(shù)原型:voidsetcolor(intcolor)函數(shù)說明: 將當(dāng)前畫筆設(shè)置為 color 代表的顏色。Color 可以是 0 至 15 之間的任意整數(shù),也可以是這 16 個(gè)整數(shù)所對應(yīng)的符號(hào)常量,如整數(shù) 0 所對應(yīng)的符號(hào)常量為 BLACK ,而這 16 個(gè)整數(shù)或符號(hào)常量分別代表 C 語言圖形模式下的 16 中顏色。具體情況如下表所示。顏色表符號(hào)常量數(shù)值BLACK0BLUE1GREEN2CYAN3RED4MAGENTA
5、5BROWN6LIGHTGRAY7DARKGRAY8LIGHTBLUE9LIGHTGREEN10LIGHTCYAN11LIGHTRED12LGHTMAGENTA13含義黑色藍(lán)色綠色青色紅色洋紅棕色淡灰深灰淡藍(lán)淡綠淡青淡紅淡洋紅YELLOW14黃色WHITE15白色頭文件:該函數(shù)包含在頭文件 graphics.h中返回值:無返回值。函數(shù)舉例: setcolor(4);設(shè)置背景色功能: 設(shè)置當(dāng)前背景的顏色。函數(shù)原型:voidsetbkcolor(intcolor);函數(shù)說明: 將當(dāng)前的背景設(shè)置為 color 所代表的顏色。color 的取值與設(shè)置前景色中的 color 相同。頭文件:該函數(shù)包含在頭
6、文件 graphics.h中返回值:無返回值。函數(shù)舉例: setbkcolor(RED);下面看一個(gè)例子, 將背景設(shè)為紅色, 前景設(shè)為白色, 在屏幕中畫個(gè)同心圓。/* 打開圖形函數(shù)頭文件 #include/* 驅(qū)動(dòng)圖形模式 */voidinitgr(void)int gd = DETECT,gm = 0; initgraph(&gd,&gm,);voidmain(void)int i;initgr();/*調(diào) 用 圖 形 驅(qū) 動(dòng) 函 數(shù) */ setcolor(WHITE);/*等價(jià)于 setcolor(15);*/ setbkcolor(RED);/*等價(jià)于 setbkcolor(4);*/
7、 for(i=10;i=100;i+=10)circle(320,240,i); getch();closegraph();/*關(guān)閉圖形驅(qū)動(dòng) */C 語言簡易圖形教程 3-設(shè)置線型函數(shù)設(shè)置線型函數(shù)功能:為畫線函數(shù)設(shè)置當(dāng)前線型,包括線型、線圖樣和線寬。函數(shù)原型:void setlinestyle(int stly,unsigned pattern,int width)函數(shù)說明:參數(shù)style 為線型取值,也可以用相應(yīng)名稱表示,如下表中所示。線型名稱取值含義SOLID_LINE0實(shí)線DOTTED_LINE1點(diǎn)線CNTER_LINE2中心線DASHED_LINE3虛線USERBIT_LINE4用戶自
8、定義線型pattern16(bitstyle=USERBIT_LINE1) 時(shí),pattern 的值才有意義,使用用戶自定義線圖樣,與圖樣中“1”位對應(yīng)的像素顯示, 如果要畫長虛線,那么pattern0 xFF000 xF00F,當(dāng)style 不為USERBIT_LINE 值時(shí),雖然pattern0。參數(shù) wigth 用來設(shè)定線寬,通常取值為 1、2、3,單位為像素。若用非法參數(shù)調(diào)用setlinestyle()函數(shù),那么 graphresult()會(huì)返回錯(cuò)誤代碼,并且當(dāng)前線型繼續(xù)有效。頭文件:該函數(shù)包含在頭文件graphics.h 中。返回值:無返回值。函數(shù)舉例:setlinestyle(0,
9、0,1);下面舉個(gè)簡單的小例子,用不同的線型來畫線。#include void initgr(void)int gd = DETECT, gm = 0; registerbgidriver(EGAVGA_driver); initgraph(&gd, &gm, );int main(void)initgr();setcolor(YELLOW);/*設(shè)置前景色為黃色*/setlinestyle(0,0,1); line(100,100,100,300);setlinestyle(1,0,3); line(200,100,200,300);setlinestyle(2,0,3); line(300
10、,100,300,300);getch(); return 0;C 語言簡易圖形教程 4-畫線函數(shù)功能:函數(shù)line()使用當(dāng)前繪圖色、線型及線寬,在給定的兩點(diǎn)間畫一直線。函數(shù)原型:void line(int startx,int starty,int endx,int endy)參數(shù) startx,starty 為起點(diǎn)坐標(biāo),endx,endy (當(dāng)前位置不改變。頭文件:該函數(shù)包含在頭文件graphics.h 中。返回值:無返回值。函數(shù)舉例:line(100,100,200,300);還有兩個(gè)和line void far lineto(int x, int y);畫一條從當(dāng)前光標(biāo)位置到點(diǎn)(x,
11、y)的線。void far linerel(int dx, int dy);畫一條從當(dāng)前光標(biāo)位置(x, y)到按相對增量確定的點(diǎn)(x dx, y dy)的直線。C 語言簡易圖形教程 5-畫圓函數(shù)畫圓函數(shù)功能:函數(shù)circle()使用當(dāng)前繪圖色并以實(shí)線畫一個(gè)完整的圓。函數(shù)原型:void circle(int x,int y,int radius)函數(shù)說明:參數(shù)x,y 為圓心坐標(biāo),radius 為圓半徑,用像素個(gè)素表示。注意,調(diào)用circle()函數(shù)畫圓時(shí)不用當(dāng)前線型。頭文件:該函數(shù)包含在頭文件graphics.h 中。返回值:無返回值。函數(shù)舉例:circle(100,100,50);C6-畫矩形
12、函數(shù)功能:函數(shù) rectangle() 用當(dāng)前繪圖色、線型及線寬,畫一個(gè)給定左上角與右下角的矩形(正方形或長方形)。函數(shù)原型:void rectangle(int left,int top,int right,int bottom)參數(shù) left,top 是左上角點(diǎn)坐標(biāo),right,bottom 點(diǎn)不在當(dāng)前圖形視口內(nèi),且裁剪標(biāo)志 clip (1)視口內(nèi)的矩形部分才被畫出。頭文件:該函數(shù)包含在頭文件graphics.h 中。返回值:無返回值。函數(shù)舉例:rectangle(100,100,300,300);C 語言簡易圖形教程 7-畫點(diǎn)函數(shù)和漢字點(diǎn)陣畫點(diǎn)函數(shù)功能:函數(shù)putpixel() 函數(shù)原型
13、:void putpixel(int x,int y,int color)函數(shù)說明:參數(shù) x,y 為像素點(diǎn)的坐標(biāo),color 可以是整型色彩值。頭文件:該函數(shù)包含在頭文件graphics.h 返回值:無返回值。函數(shù)舉例:在屏幕上(6,8)處畫一個(gè)紅色像素點(diǎn):putpixel(6,8,RED);TC 有的圖形都可以用點(diǎn)來完成。畫點(diǎn)函數(shù)一個(gè)最經(jīng)典的應(yīng)用就是用來實(shí)現(xiàn)打印漢字點(diǎn)陣。下面來看一個(gè)簡單的例子。注:漢字點(diǎn)陣的字??梢允褂?win-tc 自帶的“點(diǎn)陣字模工具”來獲取,具體操作:菜單超級(jí)工具集點(diǎn)陣字模工具#include char wei48F=/* 以下是 唯 的 48 點(diǎn)陣方正粗倩簡體 字模
14、,288 byte */0 x00,0 x00,0 x00,0 x00,0 x00,0 x00,0 x00,0 x00,0 x00,0 x00,0 x00,0 x00,0 x00,0 x00,0 x00,0 x00,0 x00,0 x00,0 x00,0 x00,0 x00,0 x00,0 x00,0 x00,0 x00,0 x00,0 x03,0 xF1,0 xF8,0 x00,0 x00,0 x00,0 x03,0 xF0,0 xF8,0 x00,0 x1F,0 x9C,0 x03,0 xF0,0 xF8,0 x00,0 x1F,0 xBF,0 x03,0 xF0,0 xFC,0 x00,
15、0 x1F,0 x8F,0 x83,0 xF0,0 xFC,0 x00,0 x1F,0 x8F,0 x83,0 xE0,0 x7C,0 x00,0 x1F,0 x8F,0 x87,0 xE0,0 x7E,0 x00,0 x1F,0 x8F,0 x87,0 xE0,0 x0F,0 x00,0 x1F,0 x8F,0 x87,0 xE0,0 x00,0 x00,0 x1F,0 x8F,0 x87,0 xE0,0 x00,0 x00,0 x1F,0 x8F,0 x8F,0 xFF,0 xFF,0 xFC,0 x1F,0 x8F,0 x8F,0 xC0,0 x7E,0 x00,0 x1F,0 x8F,
16、0 x8F,0 xC0,0 x7E,0 x00,0 x1F,0 x8F,0 x8F,0 xC0,0 x7E,0 x00,0 x1F,0 x8F,0 x9F,0 xC0,0 x7E,0 x00,0 x1F,0 x8F,0 x9F,0 xC0,0 x7E,0 x00,0 x1F,0 x8F,0 xBF,0 xC0,0 x7E,0 x00,0 x1F,0 x8F,0 xFF,0 xC0,0 x7E,0 x00,0 x1F,0 x8F,0 x8F,0 xC0,0 x7E,0 x00,0 x1F,0 x8F,0 x8F,0 xC0,0 x7E,0 x00,0 x1F,0 x8F,0 x8F,0 xFF,
17、0 xFF,0 xF8,0 x1F,0 x8F,0 x8F,0 xC0,0 x7E,0 x00,0 x1F,0 x8F,0 x8F,0 xC0,0 x7E,0 x00,0 x1F,0 x8F,0 x8F,0 xC0,0 x7E,0 x00,0 x1F,0 x8F,0 x8F,0 xC0,0 x7E,0 x00,0 x1F,0 x8F,0 x8F,0 xC0,0 x7E,0 x00,0 x1F,0 x8F,0 x8F,0 xC0,0 x7E,0 x00,0 x1F,0 x8F,0 x8F,0 xC0,0 x7E,0 x00,0 x1F,0 x8F,0 x8F,0 xC0,0 x7E,0 x00,
18、0 x1F,0 x8F,0 x8F,0 xC0,0 x7E,0 x00,0 x1F,0 x8F,0 x8F,0 xC0,0 x7E,0 x00,0 x1F,0 x8F,0 x8F,0 xFF,0 xFF,0 xF8,0 x1F,0 x8F,0 x8F,0 xC0,0 x7E,0 x00,0 x1F,0 x8F,0 x8F,0 xC0,0 x7E,0 x00,0 x1F,0 x8F,0 x8F,0 xC0,0 x7E,0 x00,0 x1F,0 x8F,0 x8F,0 xC0,0 x7E,0 x00,0 x1F,0 x8F,0 x8F,0 xC0,0 x7E,0 x00,0 x1F,0 x8F,
19、0 x8F,0 xC0,0 x7E,0 x00,0 x1F,0 x8F,0 x8F,0 xC0,0 x7E,0 x00,0 x1F,0 x8F,0 x8F,0 xC0,0 x7E,0 x00,0 x1F,0 xBF,0 x0F,0 xC0,0 x7E,0 x00,0 x00,0 x00,0 x0F,0 xFF,0 xFF,0 xFC,0 x00,0 x00,0 x0F,0 xC0,0 x00,0 x00,0 x00,0 x00,0 x0F,0 xC0,0 x00,0 x00,;void initgr(void)/* 驅(qū)動(dòng)圖形模式 */int gd = DETECT, gm = 0; regis
20、terbgidriver(EGAVGA_driver); initgraph(&gd, &gm, );void drawmat(char *mat,int matsize,int x,int y,int color)/*漢字點(diǎn)陣輸出函數(shù)*/*參數(shù)說明:char *mat:漢字點(diǎn)陣在內(nèi)存中的地址int matsize:漢字點(diǎn)陣的大小,例如 16*16、24*24int x 和 int y:漢字點(diǎn)陣在屏幕上顯示的坐標(biāo)int color:漢字點(diǎn)陣的顏色*/int i,j,k,m; m=(matsize-1)/8+1; for(j=0;jmatsize;j+)for(i=0;im;i+) for(k=
21、0;kk) putpixel(x+i*8+k,y+j,color);void main(void)initgr();/* 調(diào)用輸出漢字點(diǎn)陣函數(shù) */ drawmat(wei48F,48,150,50,15);/* 調(diào)用結(jié)束 */ getch();C 語言簡易圖形教程 8-字符串的設(shè)置與輸出設(shè)置文本型式函數(shù)功能:函數(shù) settextstyle() 設(shè)置圖形文本當(dāng)前字體、文本顯示方向(水平顯示或垂直顯示) 以及字符大小。函數(shù)原型:void settextstyle(int font,int direction,int charsize)函數(shù)說明:函數(shù)括號(hào)中,font 為文本字體參數(shù),directi
22、on 為文本顯示方向,charsize 為字符大小參數(shù)。頭部文件graphics 中分別對它們進(jìn)行了定義。下表所列為標(biāo)準(zhǔn)字體。圖形文本標(biāo)準(zhǔn)字體字體符號(hào)名字體符號(hào)名等價(jià)值含義DEFAULTDEFAULTFONT08*8 點(diǎn)陣字型(缺省字體)筆劃式三倍字型(三倍字TRIPLEx_FONT1體)SMALL_FONT2筆劃式小字型(小字體)SANS_SERIF_FONT3筆劃式字(Sanserif 字體)GOTHIC_FONT4筆劃黑體字型(哥特體)在設(shè)置字體之前,被選字體的.CHR 文件必須裝在initgraph()中指定的driverpath(驅(qū)動(dòng)程序路徑)目錄或子目錄里。缺省時(shí)圖形文本顯示方向?yàn)?/p>
23、水平方向,但可以設(shè)置圖形文本顯示方向?yàn)榇怪狈较?逆時(shí)針轉(zhuǎn)90 度)。下表給出了這兩個(gè)圖形文本顯示方向。圖形文本顯示方向顯示方向符號(hào)名顯示方向符號(hào)名等價(jià)值說明HORIZ_DIR0從左到右顯示(水平方向)VERT_DIR1從底向上顯示(垂直方向)顯示,但若需要也可設(shè)計(jì)。010)=0 表示以缺省比例顯示即4 倍或由函數(shù)setusercharsize(示。最大有效的charsize。頭文件:該函數(shù)包含在頭文件graphics.h 中。返回值:無返回值。顯示字符串函數(shù)功能:函數(shù)outtextxy() 在圖形模式下屏幕坐標(biāo)像素點(diǎn)(x,y)處顯示一個(gè)字符串。函數(shù)原型:void outtextxy(int x
24、,int y,char *string)函數(shù)說明:參數(shù)(x,y)給定要顯示字符串的屏幕位置,string 指向該字符串。調(diào)用此函數(shù)不影響當(dāng)前光標(biāo)位置,當(dāng)然光標(biāo)是不可見的。頭文件:該函數(shù)包含在頭文件graphics.h 中。返回值:無返回值。函數(shù)舉例如下:#include void initgr(void)圖形驅(qū)動(dòng)函數(shù)*/int gd = DETECT, gm = 0; registerbgidriver(EGAVGA_driver);/*如果在 TorboC 環(huán)境下運(yùn)行,請將該行刪掉*/initgraph(&gd, &gm, );void word(void)setcolor(4);/*設(shè)置畫
25、筆為紅色*/ settextstyle(0,0,1);/* 設(shè) 置 文 本 輸 出 格 式 */ outtextxy(150,200,Welcome to C world!);/* 輸 出 文 本 */ setcolor(14); settextstyle(0,0,2);outtextxy(150,250,Welcome to C world!); setcolor(13);settextstyle(0,1,1); outtextxy(100,100,Welcome to C world);void main(void)initgr();word();getch();/*暫停程序,查看程序結(jié)果
26、*/ closegraph();/*關(guān)閉圖形模式函數(shù)*/C 語言簡易圖形教程 9-圖像的復(fù)制與粘貼功能:函數(shù)imagsize()返回存儲(chǔ)一塊屏幕圖像所需的內(nèi)存大小(即字節(jié)數(shù))。函數(shù)原型:unsigned imagsize(int left,int top,int right,int bottom)函數(shù)說明:參數(shù)(left,top)為所定義的一塊圖像屏幕左上角,(right,bottom)為其右下角。函數(shù)調(diào)用執(zhí)行后,返回存儲(chǔ)該塊屏幕所需要的字節(jié)數(shù)。如果所需要字節(jié)數(shù)大于64KB,那么將返回-1。imagesize()函數(shù)一般與下面getimage()函數(shù)聯(lián)用。頭文件:該函數(shù)包含在頭文件graphi
27、cs.h 中。返回值:返回一塊圖像屏幕存儲(chǔ)所需的字節(jié)數(shù),如果大于64KB,則返回-1。函數(shù)舉例:確定左上角(10,10)與右下角(100,100)所定義的屏幕圖像所需的字節(jié)數(shù):1.1.unsigned size;2.size=imagesize(10,10,100,100);2、保存圖像函數(shù)功能:函數(shù)getimage()保存左上角與右下角所定義的屏幕上像素圖形到指定的內(nèi)存區(qū)域。函數(shù)原型:void getimage(int left,int top,int right,int bottom,void *buf)函數(shù)說明:函數(shù)中參數(shù)(left,tp(right,bottm64KB)以用下面函數(shù)頭文
28、件:該函數(shù)包含在頭文件h返回值:無返回值。3、輸出圖像函數(shù)功能:函數(shù)putimage(將) 一個(gè)先前保存在內(nèi)存中的圖像輸出到屏幕上。函數(shù)原型:void putimage(int left,int top,void *buf,int ops)函數(shù)說明:參數(shù)(left,tpbuf指向要輸ops6-3輸出方式符號(hào)名取 值輸出方式符號(hào)名取 值含 義COPY_PUT0圖像輸出到屏幕上,取代原有圖像XOR_PUT1圖像和原有像素作異或運(yùn)算OR_PUT2圖像和原有像素作或運(yùn)算AND_PUT3圖像和原有像素作與運(yùn)算NOT_PUTNOT_PUT4把求反的位圖像輸出到屏幕上COPy_PUT 輸出方式:圖像中每個(gè)像素都直接繪制到屏幕上,取代原有圖像像素,包括空白的圖像像素(背景)。完全空白的圖像可以用來擦除其它圖像或屏幕的一部分。但通常選擇XOR_PUT 輸出方式擦除原有圖像。XOR_PUT 輸出方式:上。當(dāng)某一
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025屆云南紅河州第一中學(xué)高三3月模擬檢測試題物理試題含解析
- 湖北省普通高中聯(lián)考協(xié)作體2025屆高三下學(xué)期統(tǒng)練(七)化學(xué)試題含解析
- 曲靖師范學(xué)院《信息資源組織與管理》2023-2024學(xué)年第二學(xué)期期末試卷
- 指甲美容市場調(diào)查問卷
- 關(guān)于家庭花草種植調(diào)查問卷
- 粉煤灰施工方案
- 水泥庫清庫施工方案
- 水處理建筑施工方案
- 室外保溫施工方案
- 2025年學(xué)生分班測試題及答案
- 老舍讀書分享名著導(dǎo)讀《貓城記》
- 學(xué)科國際發(fā)展趨勢
- 初一年級(jí)班級(jí)日志記載表(詳)
- 建設(shè)工程安全生產(chǎn)管理習(xí)題庫及答案
- 項(xiàng)目1 多旋翼無人機(jī)的組裝與調(diào)試
- 供應(yīng)鏈管理:高成本、高庫存、重資產(chǎn)的解決方案 第2版
- 馬克筆建筑快速表現(xiàn)
- 日本夏日祭活動(dòng)鑒賞
- 中國教育史筆記全
- 某工業(yè)鍋爐安裝工程監(jiān)理作業(yè)指導(dǎo)書
- 名?!稄?qiáng)基計(jì)劃》初升高銜接數(shù)學(xué)講義(上)
評(píng)論
0/150
提交評(píng)論