LoadImage函數與LoadBitmap函數的使用

    首先介紹loadp_w_picpath函數:

        現在的loadp_w_picpath函數已經取代了loadbitmap函數,可能看比較老的書本上會用後者,這二個函數都比較簡單,參數也不多,隨便寫個實例如下,這樣可能懂得比較快:

   

  1. LoadImage(NULL,"bitmap1.bmp",IMAGE_BITMAP,0,0,LR_LOADFROMFILE); 

第一個爲一個實例的句柄,

第二個爲載入的文件名,

第三個爲類型,它支持位圖,光標等的載入,

其它幾個參數基本現在不用,大家可以去看看具體的含義,

下面說下載入的過程:

用CreateCompatibleDC函數來創建個兼容的內存DC,它返回一個兼容DC句柄,

然後把資料載入內存,用loadImage,它會返回當前資源的句柄,HANDLE類型,

再然後獲取資源對象的信息,用GetObject(HDC,size,BITMAP),

第一個參數爲DC的句柄,肯定是用前面兼容DC創建的句柄,

第二個參數爲BITMAP的大小,sizeof(BITMAP);

第三個參數爲一個BITMAP的類型變量,系統會把資源信息住裏面填充信息,比如資源的大小,

信息都有了之後就可以把位圖選進設備描述表了,有的叫設備上下文。

使用SelectObject(HDC,HGDIOBJ);

第一個參數爲往那個設備句柄載入,這裏爲前面CreateCompatibleDC創建的句柄。

第二個參數爲載入的資源句柄,這裏爲loadp_w_picpath返回的句柄

最後就是顯示了,

用BitBlt函數來顯示你載入的圖片到顯示器上。

參數有點長,就不寫了,下面寫上全部的載入代碼吧,非常的簡單:

 


  1. case WM_PAINT:  
  2.     {  
  3. PAINTSTRUCT ps; 
  4.         HDC hdc = BeginPaint(hwnd,&ps);  
  5.         HDC hdcmem = CreateCompatibleDC(hdc);  
  6.         HANDLE hbitmap = LoadImage(NULL,"bitmap1.bmp",IMAGE_BITMAP,0,0,LR_LOADFROMFILE);  
  7.         BITMAP bmap;  
  8.         GetObject(hbitmap,sizeof(BITMAP),&bmap);  
  9.         SelectObject(hdcmem,hbitmap);  
  10.         BitBlt(hdc,11,11,bmap.bmWidth,bmap.bmHeight,hdcmem,0,0,SRCCOPY); 
  11.         DeleteDC(hdcmem); 
  12.         DeleteObject(hbitmap); 
  13.         EndPaint(hwnd,&ps);  
  14.         return 0;  
  15.     }  

 

 

而用loalbitmap函數,其實也差不多的,只不要它一個instance句柄。

    OK,Over!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章