日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

用API OleLoadPicture通过IStream来加载JPG、GIF格式的图片

發布時間:2025/3/15 编程问答 14 豆豆
生活随笔 收集整理的這篇文章主要介紹了 用API OleLoadPicture通过IStream来加载JPG、GIF格式的图片 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

OleLoadPicture 函數實際上創建了一個IPicture類型的COM接口對象,然后我們可以通過這個COM接口來操作圖片(實際上你也可以用API OleCreatePictureIndirect來加載圖片,不過相比而言OleLoadPicture函數簡化了基于流的IPicture對象的創建),下面是示例代碼:(注:由于只是用來示例,代碼中省去了出錯情況的處理)

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??
}

來自:飛鴿傳書:http://www.freeeim.com/

總結

以上是生活随笔為你收集整理的用API OleLoadPicture通过IStream来加载JPG、GIF格式的图片的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。