回覆列表
  • 1 # 使用者4522173778936

    利用COM介面實現。

    void DisplayImage(HDC hDC, LPCTSTR szImagePath)

    {

    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;

    LE_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

    }

  • 中秋節和大豐收的關聯?
  • 漫威宇宙中黑寡婦到底是跟誰在一起了?