欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

[笔记] 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);

// 显示图片(以下代码和上面相同,此处省略)
相关标签: MFC