mfc编程如何设置用图片控件动态显示jpg图像。

 我来答
cooke1234
推荐于2018-03-30 · TA获得超过6861个赞
知道大有可为答主
回答量:4617
采纳率:72%
帮助的人:3604万
展开全部

jpg显示的步骤:

1。打开图片控件的绘图DC。

2。使用OleLoadPicture函数读取jpg图像到内存中。(导入olepro32.dll)

3。向DC上绘制图像

示例如下:

CDC *pDC = GetDlgItem(IDC_STATIC_IMG)->GetDC(); //获取控件DC
HDC hDC = (HDC)pDC;
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;
OLE_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
ReleaseDC(pDC);
斯大林杜鲁门
推荐于2016-02-22
知道答主
回答量:1
采纳率:0%
帮助的人:2.5万
展开全部
用opencv显示图像。

//opencv头文件
#include "cv.h"
#include "highgui.h"
#include "cxcore.h"
#include "ml.h"
#include "cvaux.h"
#include "cvcam.h"

//显示图片函数
void ShowPic(char *lpstrFile, UINT ID)
{
CDC *pDC = GetDlgItem(ID)->GetDC();
HDC hDC= pDC->m_hDC;
CRect rect;
GetDlgItem(ID)->GetClientRect(&rect);
CvvImage MyImage;
IplImage *image=NULL;
if(image) cvReleaseImage(&image);
image = cvLoadImage(lpstrFile,1);
MyImage.CopyOf(image);
MyImage.DrawToHDC(hDC,&rect);
if(image) cvReleaseImage(&image);
ReleaseDC(pDC);
}
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式