[笔记] MFC Picture控件加载显示磁盘图片文件或内存图片数据
程序员文章站
2024-03-23 11:36:10
...
语言: VC++, IDE: VS2017
本例中使用一个已经存在的磁盘文件“D:\image.jpg”,和一段地址为imageData,大小为imageSize的.jpg内存数据,显示在一个ID为IDC_PICTURE的Picture控件上,
一、加载显示磁盘图片文件
// 加载图片资源
CImage image;
image.Load(_T("D:\\image.jpg"));
// 显示图片
// 获取图片客户区位置
CRect imgRect;
GetDlgItem(IDC_PICTURE)->GetClientRect(&imgRect);
// 获取并在使用后释放DC
CDC* picDC = GetDlgItem(IDC_PICTURE)->GetDC();
image.Draw(picDC->m_hDC, imgRect);
ReleaseDC(picDC);
二、加载显示内存图片数据
// 申请内存,获取地址,并拷贝数据
HGLOBAL hMem = GlobalAlloc(GMEM_MOVEABLE, imageSize);
BYTE* pMem = (BYTE*)GlobalLock(hMem);
memcpy(pMem, imageData, imageSize);
GlobalUnlock(hMem);
// 创建流对象
IStream* pIStm;
CreateStreamOnHGlobal(hMem, TRUE, &pIStm);
// 加载数据流
CImage image;
image.Load(pIStm);
pIStm->Release();
GlobalFree(hMem);
// 显示图片(以下代码和上面相同,此处省略)