『壹』 mfc編程如何設置用圖片控制項動態顯示jpg圖像。
jpg顯示的步驟:
1。打開圖片控制項的繪圖DC。2。使用OleLoadPicture函數讀取jpg圖像到內存中。(導入olepro32.dll)
3。向DC上繪制圖像
示例如下:
CDC*pDC=GetDlgItem(IDC_STATIC_IMG)->GetDC();//獲取控制項DC
HDChDC=(HDC)pDC;
HANDLEhFile=CreateFile(szImagePath,GENERIC_READ,FILE_SHARE_READ,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL);//從指定的路徑szImagePath中讀取文件句柄
DWORDdwFileSize=GetFileSize(hFile,NULL);//獲得圖片文件的大小,用來分配全局內存
HGLOBALhImageMemory=GlobalAlloc(GMEM_MOVEABLE,dwFileSize);//給圖片分配全局內存
void*pImageMemory=GlobalLock(hImageMemory);//鎖定內存
DWORDdwReadedSize;//保存實際讀取的文件大小
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介面指針
//得到IPictureCOM介面對象後,你就可以進行獲得圖片信息、顯示圖片等操作
OLE_XSIZE_HIMETRIChmWidth;
OLE_YSIZE_HIMETRIChmHeight;
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
ReleaseDC(pDC);