想不想把一張圖片加載到窗口上顯示出來?必須的可以!
easyX首先通過loadimage加載圖片,然后使用putimage輸出到窗口上,來看他們的樣子:
void loadimage(IMAGE *pDstImg, LPCTSTR pImgFile, int nWidth = 0, int nHeight = 0, bool bResize = false); // Load image from a file (bmp/gif/jpg/png/tif/emf/wmf/ico) void loadimage(IMAGE *pDstImg, LPCTSTR pResType, LPCTSTR pResName, int nWidth = 0, int nHeight = 0, bool bResize = false); // Load image from resources (bmp/gif/jpg/png/tif/emf/wmf/ico)
putimage呢如下:
void putimage(int dstX, int dstY, const IMAGE *pSrcImg, DWORD dwRop = SRCCOPY); // Put image to device void putimage(int dstX, int dstY, int dstWidth, int dstHeight, const IMAGE *pSrcImg, int srcX, int srcY, DWORD dwRop = SRCCOPY); // Put image to device
如你看到的一樣,easyX中有很多函數(shù)重載,這里我們只為大家講解比較常用的一種。
通常情況下,我們想把一張圖片加載顯示到窗口上,首先我們把這張圖片放到項目里或者某個絕對路徑下,我們就可以使用loadimage函數(shù)先加載,即使得圖片加載到內(nèi)存中,然后再使用putimage輸出到指定窗口的位置。
這里先介紹一下一個重要的數(shù)據(jù)類型,IMAGE *pDstImg,這是這兩步函數(shù)都需要的一個類(C++的概念,不懂也不要緊)
我們只需要簡單知道這個是表示著這個圖片的全部信息的。加載就是加載到這里?,F(xiàn)在如果我們有一個已經(jīng)放在項目下,名字叫l(wèi)ogo.png的圖片,大小為108*108的,那么加載函數(shù)就可以這么調(diào)用:
loadimage(&img,".//logo.png", 108,108,false);
第一個參數(shù)是傳入?yún)?shù),因此需要加地址符,第二個參數(shù)因為再目錄里同級,所以用./,如果是上級則用../,絕對路徑當然也可以。需要注意的是,因為C語言中字符串轉(zhuǎn)義字符的存在,這里需要寫兩個/
之后使用putimage指定位置輸出即可,我們完整的代碼可以這么寫:
//www.sztianhecheng.cn #include <graphics.h> // 引用圖形庫頭文件 #include <conio.h> int main() { IMAGE img; initgraph(640, 480); // 創(chuàng)建繪圖窗口,大小為 640x480 像素 loadimage(&img,".//logo.png", 108,108,false); //加載項目中l(wèi)ogo.png的圖片 putimage(10,10,&img); //向(10,10)位置開始輸出此圖片 getch(); // 按任意鍵繼續(xù) closegraph(); // 關閉繪圖窗口 return 0; }
核心兩個函數(shù)調(diào)用,已經(jīng)為大家加上注釋,大家可以理解
大家可以換成自己的圖片,改變大小親自上機嘗試~
C語言網(wǎng)提供由在職研發(fā)工程師或ACM藍橋杯競賽優(yōu)秀選手錄制的視頻教程,并配有習題和答疑,點擊了解:
一點編程也不會寫的:零基礎C語言學練課程
解決困擾你多年的C語言疑難雜癥特性的C語言進階課程
從零到寫出一個爬蟲的Python編程課程
只會語法寫不出代碼?手把手帶你寫100個編程真題的編程百練課程
信息學奧賽或C++選手的 必學C++課程
藍橋杯ACM、信息學奧賽的必學課程:算法競賽課入門課程
手把手講解近五年真題的藍橋杯輔導課程