首先从工具箱中选择一个Picture Control 和3个Button到对话框
取Picture Control 的 ID 为IDC_STATIC_PICURE
然后添加bmp资源文件
双击静态显示1.添加代码:
void CMFCdrill4Dlg::OnBnClickedButton1()
{
// TODO: 在此添加控件通知处理程序代码
CBitmap bitmap;
bitmap.LoadBitmapW(IDB_BITMAP1);
CStatic *p = (CStatic*)(GetDlgItem(IDC_STATIC_PICTURE));
p->ModifyStyle(0xf, SS_BITMAP | SS_CENTERIMAGE); // 其中0xf是移除的风格
p->SetBitmap(bitmap);
}
此时就可以显示图片了。
双击静态显示 -2 编写代码:
void CMFCdrill4Dlg::OnBnClickedButton3()
{
// TODO: 在此添加控件通知处理程序代码
CStatic *pwnd = (CStatic*)GetDlgItem(IDC_STATIC_PICTURE);
pwnd->ModifyStyle(0xf, SS_BITMAP | SS_CENTERIMAGE);
pwnd->SetBitmap((HBITMAP)::LoadImage(NULL,
_T("E:\\Code Storage\\资源文件夹\\pic\\2.BMP"),// 添加资源号或本地文件名
IMAGE_BITMAP, // 装载位图IMAGE_CURSOR光标IMAGE_ICON图标
0, // 宽度0为默认大小
0, // 高度像素为单位
LR_CREATEDIBSECTION | LR_DEFAULTSIZE | LR_LOADFROMFILE));
}
点击第二个按钮也可以显示图片了。
双击 打开图片 ,编写代码:
void CMFCdrill4Dlg::OnBnClickedButton2()
{
// TODO: 在此添加控件通知处理程序代码
CString filter = L"所有文件(*.bmp,*.jpg,*.tiff)|*.bmp;*.jpg;*.gif;*.tiff| BMP(*.bmp)|*.bmp|JPG(*.jpg)|*.jpg|GIF(*.gif)|TIFF(*.tiff)|*.tiff";
CFileDialog Ofile(TRUE, NULL, NULL, OFN_HIDEREADONLY, filter, NULL);
if (IDOK == Ofile.DoModal()){
CString fPath = Ofile.GetPathName(); // 获取文件路径
CString fEnt = Ofile.GetFileExt(); // 获取文件扩展名
fEnt.MakeLower(); // 将文件扩展名转化为小写字母
if (fEnt.Compare(_T("bmp")) == 0){ // 如果打开的是bmp文件
// 定义变量存储图片信息
BITMAPINFO *pBmpInfo; // 记录图像信息
BYTE *pBmpData; // 图像数据
BITMAPFILEHEADER bmpHeader; // 文件头
BITMAPINFOHEADER bmpInfo; // 信息头
CFile bmpFile; // 记录打开文件
// 以只读的方式打开文件 读取bmp图片个部分bmp的文件头,信息和数据
if (!bmpFile.Open(fPath, CFile::modeRead | CFile::typeBinary))
return;
if (bmpFile.Read(&bmpHeader, sizeof(BITMAPFILEHEADER)) != sizeof(BITMAPFILEHEADER))
return;
if (bmpFile.Read(&bmpInfo, sizeof(BITMAPINFOHEADER)) != sizeof(BITMAPINFOHEADER))
return;
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();
// 显示图像
CWnd *pwnd = GetDlgItem(IDC_STATIC_PICTURE);
CRect rect;
pwnd->GetClientRect(&rect);
CDC *pDC = pwnd->GetDC(); // 获取picture控件所在的位置
pDC->SetStretchBltMode(COLORONCOLOR);
StretchDIBits(pDC->GetSafeHdc(), 0, 0, rect.Width(), rect.Height(), 0, 0,
bmpInfo.biWidth, bmpInfo.biHeight, pBmpData, pBmpInfo, DIB_RGB_COLORS, SRCCOPY);
}
}
}