MFC载入JPG图片
生活随笔
收集整理的這篇文章主要介紹了
MFC载入JPG图片
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
##
1.定義畫圖函數(shù)
HRESULT CIPCamDlg::draw(char *lpImageFile, HWND hWnd, int nScrWidth, int nScrHeight) {HDC hDC_Temp=::GetDC(hWnd);IPicture *pPic; IStream *pStm;BOOL bResult;HANDLE hFile=NULL; DWORD dwFileSize,dwByteRead;hFile=CreateFile(lpImageFile,GENERIC_READ,FILE_SHARE_READ,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL);//打開硬盤中的圖形文件if (hFile!=INVALID_HANDLE_VALUE) { dwFileSize=GetFileSize(hFile,NULL);//獲取文件字節(jié)數(shù)if (dwFileSize==0xFFFFFFFF) return E_FAIL; } else { return E_FAIL; }HGLOBAL hGlobal = GlobalAlloc(GMEM_MOVEABLE, dwFileSize);//分配全局存儲空間 LPVOID pvData = NULL;if (hGlobal == NULL) {AfxMessageBox("圖形文件分配出錯.");return E_FAIL; }if ((pvData = GlobalLock(hGlobal)) == NULL)//鎖定分配內(nèi)存塊 {AfxMessageBox("內(nèi)存塊鎖定出問題");return E_FAIL;}ReadFile(hFile,pvData,dwFileSize,&dwByteRead,NULL);//把文件讀入內(nèi)存緩沖區(qū) GlobalUnlock(hGlobal);if(CreateStreamOnHGlobal(hGlobal, TRUE, &pStm) != S_OK){AfxMessageBox("流初始化失敗");return E_FAIL; }bResult=OleLoadPicture(pStm,dwFileSize,TRUE,IID_IPicture,(LPVOID*)&pPic);//裝入圖形文件 if(FAILED(bResult)) {AfxMessageBox("圖形文件裝載出錯.");return E_FAIL; }OLE_XSIZE_HIMETRIC hmWidth;//圖片的真實寬度 OLE_YSIZE_HIMETRIC hmHeight;//圖片的真實高度 pPic->get_Width(&hmWidth); pPic->get_Height(&hmHeight);//char str[20]={'\0'}; bResult=pPic->Render(hDC_Temp,0,0,nScrWidth,nScrHeight,0,hmHeight,hmWidth,-hmHeight,NULL);//將圖形輸出到屏幕上 CloseHandle(hFile);//關(guān)閉打開的文件 pPic->Release(); GlobalFree(hGlobal);// Free memory. if (SUCCEEDED(bResult)) { return S_OK; } else { AfxMessageBox("圖形文件裝載出錯.");return E_FAIL; } }2.調(diào)用
HWND m_hWnd; GetDlgItem(IDC_STATIC_VIEW,&m_hWnd); //IDC_STATIC_VIEW是picture控件(不用做任何修改) draw("D://a.jpg",m_hWnd,寬度,高度);?
轉(zhuǎn)載于:https://www.cnblogs.com/tinaluo/p/7356559.html
總結(jié)
以上是生活随笔為你收集整理的MFC载入JPG图片的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 使用UltraEdit32编辑器格式化源
- 下一篇: GPG软件签名与验证