您的位置:首页 > 其它

MFC-在控件上显示BMP图片

2016-03-18 17:27 423 查看
在控件上绘制位图信息

// 位图结构体
BITMAPINFO *pBmpInfo;
// 位图二进制数据
BYTE * pBmpData;
// 位图文件的头信息
BITMAPFILEHEADER bmpHeader;
// 位图文件中的位图信息
BITMAPINFOHEADER bmpInfo;
CFile bmpFile;
if (!bmpFile.Open(_T("D://verisign.bmp"), CFile::modeRead | CFile::typeBinary)) {
AfxMessageBox(L"打开失败");
}
// 读取位图文件的头信息
if (bmpFile.Read(&bmpHeader, sizeof(BITMAPFILEHEADER)) != sizeof(BITMAPFILEHEADER))
AfxMessageBox(L"读取bmpHeader");
// 读取位图文件中位图信息
if (bmpFile.Read(&bmpInfo, sizeof(BITMAPINFOHEADER)) != sizeof(BITMAPINFOHEADER))
AfxMessageBox(L"读取bmpInfo");
// 初始化位图信息
pBmpInfo = (BITMAPINFO *)new char[sizeof(BITMAPINFOHEADER)];
// 把位图信息拷贝给位图结构体
memcpy(pBmpInfo, &bmpInfo, sizeof(BITMAPINFOHEADER));
// 计算位图的实际字节数
DWORD dataBytes = bmpHeader.bfSize - bmpHeader.bfOffBits;
// 初始化位图实际数据
pBmpData = (BYTE*)new char[dataBytes];
// 从文件中读取剩下的位图数据
bmpFile.Read(pBmpData, dataBytes);
bmpFile.Close();
//显示图像,获得pictrue控件窗口的句柄
CWnd *pWnd = GetDlgItem(IDC_SHOW);
CRect rect;
//获得pictrue控件所在的矩形区域
pWnd->GetClientRect(&rect);
//获得pictrue控件的DC
CDC *pDC = pWnd->GetDC();
//指定拉伸模式
pDC->SetStretchBltMode(COLORONCOLOR);
StretchDIBits(pDC->GetSafeHdc(), 0, 0, bmpInfo.biWidth, bmpInfo.biHeight, 0, 0,
bmpInfo.biWidth, bmpInfo.biHeight, pBmpData, pBmpInfo, DIB_RGB_COLORS
, SRCCOPY);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: