#include graphics.h

創(chuàng)新互聯(lián)專注于企業(yè)成都全網(wǎng)營(yíng)銷推廣、網(wǎng)站重做改版、塔城網(wǎng)站定制設(shè)計(jì)、自適應(yīng)品牌網(wǎng)站建設(shè)、H5技術(shù)、商城建設(shè)、集團(tuán)公司官網(wǎng)建設(shè)、外貿(mào)營(yíng)銷網(wǎng)站建設(shè)、高端網(wǎng)站制作、響應(yīng)式網(wǎng)頁(yè)設(shè)計(jì)等建站業(yè)務(wù),價(jià)格優(yōu)惠性價(jià)比高,為塔城等各大城市提供網(wǎng)站開發(fā)制作服務(wù)。
int main()
{
int gdriver, gmode;
gdriver=VGA;
gmode=VGAHI;
initgraph(gdriver, gmode, "c:\\tc");
bar3d(100, 100, 300, 250, 50, 1); /*畫一長(zhǎng)方體*/
getch();
closegraph();
return 0;
}
有時(shí)編程者并不知道所用的圖形顯示器適配器種類, 或者需要將編寫的程序 用于不同圖形驅(qū)動(dòng)器, Turbo C提供了一個(gè)自動(dòng)檢測(cè)顯示器硬件的函數(shù), 其調(diào)用
格式為:
void far detectgraph(int *gdriver, *gmode);
其中g(shù)driver和gmode的意義與上面相同。
例5. 自動(dòng)進(jìn)行硬件測(cè)試后進(jìn)行圖形初始化
#include graphics.h
int main()
{
int gdriver, gmode;
detectgraph(gdriver, gmode); /*自動(dòng)測(cè)試硬件*/
printf("the graphics driver is %d, mode is %d\n", gdriver, gmode); /*輸出測(cè)試結(jié)果*/
getch();
initgraph(gdriver, gmode, "c:\\tc");
/* 根據(jù)測(cè)試結(jié)果初始化圖形*/
bar3d(10, 10, 130, 250, 20, 1);
getch();
closegraph();
return 0;
}
上例程序中先對(duì)圖形顯示器自動(dòng)檢測(cè), 然后再用圖形初始化函數(shù)進(jìn)行初始化設(shè)置, 但Turbo C提供了一種更簡(jiǎn)單的方法, 即用gdriver= DETECT 語(yǔ)句后再跟 initgraph()函數(shù)就行了。采用這種方法后, 上例可改為:
例6.
#include graphics.h
int main()
{
int gdriver=DETECT, gmode;
initgraph(gdriver, gmode, "c:\\tc");
bar3d(50, 50, 150, 30, 1);
getch();
closegraph();
return 0;
}
另外, Turbo C提供了退出圖形狀態(tài)的函數(shù)closegraph(), 其調(diào)用格式為:void far closegraph(void);調(diào)用該函數(shù)后可退出圖形狀態(tài)而進(jìn)入文本方式(Turbo C 默認(rèn)方式), 并釋放用于保存圖形驅(qū)動(dòng)程序和字體的系統(tǒng)內(nèi)存。
Tc中用initgraph()函數(shù)可以切換到圖形模式,用closegraph()可以從圖形模式切換回字符模式。
initgraph()和closegraph()都是圖形函數(shù),使用圖形函數(shù)必須包括頭文件"graphics.h"。
void far i nitgraph(int far *graphdriver, int far *graphmode,char far *pathtodriver);
graphdriver是指向圖形驅(qū)動(dòng)序號(hào)變量的指針,
graphmode是在graphdriver選定后,指向圖形顯示模式序號(hào)變量的指針,
pathtodriver表示存放圖形驅(qū)動(dòng)文件的路徑。
圖形驅(qū)動(dòng)序號(hào)不同,圖形驅(qū)動(dòng)文件也不同。序號(hào)為VGA圖形驅(qū)動(dòng)對(duì)應(yīng)"egavga.bgi"這個(gè)圖形驅(qū)動(dòng)文件。
"egavga.bgi"一般在 Tc目錄下
例如:
-------
#include graphics.h
int Drive,Mode=DETECT;
initgraph(Drive,Mode,""); //圖形顯示器、顯示模式、路徑自動(dòng)檢測(cè)
運(yùn)行時(shí)需要在當(dāng)前目錄下存在 EGAVGA.BGI文件
在TC\BGI目錄底下
-------
如果編譯后的.exe文件在另外一個(gè)目錄(如編譯后的.exe文件在D:\MyTc 目錄下,而編譯器的程序和.BGI文件在C:\Turboc\bin 目錄下,則需要填上BGI文件的路徑
例如:
initgraph(Drive,Mode,"C:\\Turboc\\bgi");
直接調(diào)用并顯示JPG BMP等格式圖片的函數(shù)好像沒有,要自己編寫。
首先要弄清楚圖片格式的編碼方式,然后設(shè)置分辨率,可以顯示出來。
void far getimage(int left,int top,int right,int bottom,void far *buf)
說明:把屏幕圖形部分拷貝到由BUF所指向的內(nèi)在區(qū)域,左上角和右下角圖標(biāo)。用函數(shù)IMAGESIZE()來確定存儲(chǔ)圖像所需字節(jié)數(shù)。用GETIMAGE()存儲(chǔ)的圖像可以用PUTIMAGTE()函數(shù)寫到屏幕上。
例子代碼如下所示:
int Add(int x, int y) { ? ?int sum;
sum = x + y; ? ?return sum;
}void main() { ? ?int z;
z = Add(1, 2); ? ?printf("z=%d\n", z);
}
下面分析一下 Add函數(shù)的調(diào)用過程。
首先斷點(diǎn)在z = Add(1, 2);處, 反匯編如下所示:
int z;
z = Add(1, 2);002C141E 6A 02 ? ? ? ? ? ? ? ?push ? ? ? ?2 ?002C1420 6A 01 ? ? ? ? ? ? ? ?push ? ? ? ?1 ?002C1422 E8 60 FC FF FF ? ? ? call ? ? ? ?002C1087 ?
002C1427 83 C4 08 ? ? ? ? ? ? add ? ? ? ? esp,8 ?002C142A 89 45 F8 ? ? ? ? ? ? mov ? ? ? ? dword ptr [ebp-8],eax
首先壓入?yún)?shù)1和2:
002C141E 6A 02 ? ? ? ? ? ? ? ?push ? ? ? ?2 ?002C1420 6A 01 ? ? ? ? ? ? ? ?push ? ? ? ?1 ?
通過觀察ESP可以看到參數(shù)從右到左依次入棧,ESP往低內(nèi)存方向移動(dòng)8字節(jié):
ESP=0025FCCC
...0x0025FCAA ?00 00 78 4c 33 00 bc fc 25 00 a9 fe aa 0f 78 4c 33 00 c8 fc 25 00 3d 5a b2 0f *** 01 00 00 00 02 00 00 00 ***0x0025FCCC ?00 00 00 00
如果你有圖片(例如 wzzx.jpg) 程序中插一句:
system("mspaint wzzx.jpg"); 就可以 在運(yùn)行時(shí)顯示這張圖片。
用字符串變量調(diào)用也可以:
char pic_name[80]="wzzx.jpg";
char cmd[100];
sprintf(cmd,"mspaint %s",pic_name);
system(cmd); // 顯示圖片
圖片也是一個(gè)文件,
1.你是要打開圖片嗎?(把圖像顯示出來?)
2.還是只需要圖片文件。
如果是1,那么你需要看.bmp的編碼方式和c庫(kù)的圖像類函數(shù)
如果是2,那么你就可以用fopen,fread,fwrite,fprintf,fscanf等調(diào)用即可。
網(wǎng)頁(yè)名稱:c語(yǔ)言怎么調(diào)用圖片函數(shù) 圖片怎么在c語(yǔ)言程序里表達(dá)
文章網(wǎng)址:http://www.chinadenli.net/article6/hipjog.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供營(yíng)銷型網(wǎng)站建設(shè)、動(dòng)態(tài)網(wǎng)站、網(wǎng)站內(nèi)鏈、網(wǎng)頁(yè)設(shè)計(jì)公司、用戶體驗(yàn)、品牌網(wǎng)站建設(shè)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)