OleLoadPicture

用API OleLoadPicture來載入JPG、GIF格式的圖片(註:不支持PNG格式,另外GIF只能載入第一幀,且不支持透明) OleLoadPicture 函式實際上創建了一個IPicture類型的COM接口對象,然後我們可以通過這個COM接口來操作圖片(實際上你也可以用API OleCreatePictureIndirect來載入圖片,不過相比而言OleLoadPicture函式簡化了基於流的IPicture對象的創 建)。

基本介紹

  • 外文名:OleLoadPicture
  • 實質:函式名
  • 作用:載入JPG、GIF格式的圖片
  • 注意:不支持PNG格式
簡介,代表案例,

簡介

第一個參數pStream指向包含有圖像數據的流的指針,第二個參數lSize為從流中讀取的位元組數,第三個參數fRunmode為圖像屬性對應的初值,第四個參數riid為涉及到的接口標識描述要返回的接口指針的類型,第五個參數ppvObj為在rrid中用到的接口指針變數的地址。

代表案例

下面是示例代碼:(註:由於只是用來示例,代碼中省去了出錯情況的處理)
/*
*如下代碼段實現的功能是從指定的路徑中讀取圖片,並顯示出來
*/
void DisplayImage(HWND hwnd, LPCTSTR szImagePath)
{
HDC hDC=GetDC(hwnd);
HANDLE hFile=CreateFile(szImagePath, GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL); //從指定的路徑szImagePath中讀取檔案句柄
DWORD dwFileSize=GetFileSize(hFile, NULL); //獲得圖片檔案的大小,用來分配全局記憶體
HGLOBAL hImageMemory=GlobalAlloc(GMEM_MOVEABLE, dwFileSize); //給圖片分配全局記憶體
void *pImageMemory=GlobalLock(hImageMemory); //鎖定記憶體
DWORD dwReadedSize; //保存實際讀取的檔案大小
ReadFile(hFile, pImageMemory, dwFileSize, &dwReadedSize, NULL); //讀取圖片到全局記憶體當中
GlobalUnlock(hImageMemory); //解鎖記憶體
CloseHandle(hFile); //關閉檔案句柄
IStream *pIStream;//創建一個IStream接口指針,用來保存圖片流
IPicture *pIPicture;//創建一個IPicture接口指針,表示圖片對象
CreateStreamOnHGlobal(hImageMemory, false, &pIStream); //用全局記憶體初使化IStream接口指針
OleLoadPicture(pIStream, 0, false, IID_IPicture, (LPVOID*)&(pIPicture));//用OleLoadPicture獲得IPicture接口指針
//得到IPicture COM接口對象後,你就可以進行獲得圖片信息、顯示圖片等操作
OLE_XSIZE_HIMETRIC hmWidth;
OLE_YSIZE_HIMETRIC hmHeight;
pIPicture->get_Width(&hmWidth); //用接口方法獲得圖片的寬和高
pIPicture->get_Height(&hmHeight);
pIPicture->Render(hDC,0,0,100,100,0,hmHeight,hmWidth,-hmHeight,NULL); //在指定的DC上繪出圖片
GlobalFree(hImageMemory); //釋放全局記憶體
pIStream->Release(); //釋放pIStream
pIPicture->Release(); //釋放pIPicture
}

相關詞條

熱門詞條

聯絡我們