‘壹’ 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);