1 利用VS2010向导创建一个MFC单文档应用程序;
2在CMFCTestView.h中引用<atlimage.h>,并创建一个CImage对象;
#include <atlimage.h>
private:
CImage image;
3打开资源文件,选中Menu下面的IDR_MAINFRAME,添加一个新的菜单项“打开图像”,修改其ID为IDM_OPEN,再点击鼠标右键,添加事件处理程序,在弹出的对话框的列表中选择CMFCTestView;
4添加事件处理函数OnOpen;
void CMFCTestView::OnOpen()
{
// TODO: 在此添加命令处理程序代码
CFileDialog dlg(TRUE, _T(".bmp"), _T("*.bmp"), OFN_HIDEREADONLY |
OFN_OVERWRITEPROMPT, _T("位图文件(*.bmp)|*.bmp|JPEG文件(*.jpg)|*.jpg||"));
if(dlg.DoModal() == IDOK)
{
if(!image.IsNull())
{
image.Destroy();
}
image.Load(dlg.GetPathName());
Invalidate();
}
}
5在MFCTestView中加入图像显示的代码;
void CtestshowImgView::OnDraw(CDC* pDC/*pDC*/)
{
CtestshowImgDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
if (!pDoc)
return;
// TODO: 在此处为本机数据添加绘制代码
if(!m_image.IsNull())
{
CRect rectClient;
GetClientRect(rectClient);
CBrush br(0xFFFFFF);每次显示前先将原来的界面刷新成白色(255,255,255)
pDC->FillRect(rectClient, &br);
//获取图片的宽、高
int nWidthOrigin = m_image.GetWidth();
int nHeightOrigin = m_image.GetHeight();
//定义拉伸后图片的宽、高
int nWidthStrectch = nWidthOrigin*1;
int nHeightStrectch = nHeightOrigin*1.5;
m_image.StretchBlt(pDC->m_hDC, 0, 0, nWidthStrectch, nHeightStrectch, 0, 0, nWidthOrigin, nHeightOrigin,SRCCOPY);
}
}
效果如下:
参考:https://blog.csdn.net/foreverling/article/details/40083431