MainFrm.h文件中添加头文件#include "atlimage.h"
view.cpp文件中添加头文件#include "MainFrm.h"
添加图片对象CImage image;//图片对象
View.cpp文件中OnDraw函数添加如下代码:
CDC dcMem; //用于缓冲作图的内存DC
CBitmap bmp; //内存中承载临时图象的位图
dcMem.CreateCompatibleDC(pDC); //依附窗口DC创建兼容内存DC
bmp.CreateCompatibleBitmap(pDC,rect.Width(),rect.Height());//创建兼容位图
dcMem.SelectObject(&bmp); //将位图选择进内存DC
dcMem.FillSolidRect(rect,pDC->GetBkColor());//按原来背景填充客户区,不然会是黑色
CMainFrame *pMain = (CMainFrame*)AfxGetApp()->m_pMainWnd;//获取框架类指针
int nImageWidth = 0;
int nImageHeight = 0;
if(!pMain->image.IsNull())
{
nImageWidth = pMain->image.GetWidth();
nImageHeight = pMain->image.GetHeight();
CRect rectImage(0, 0, nImageWidth, nImageHeight);
pMain->image.Draw(dcMem, rectImage, rectImage);//先加载图片,再绘画图形
}
CString CDrawOnPicView::BootOpenDialog() //返回选择的文件名称
{
CString strFile = _T("");
CFileDialog dlgFile(TRUE, NULL, NULL, OFN_HIDEREADONLY, _T("Describe bmp files (*.jpg)|*.jpg||"), NULL);
if (dlgFile.DoModal())
{
strFile = dlgFile.GetPathName();
}
return strFile;
}
void CDrawOnPicView::OnBitmap()//单击菜单栏中的一项的子菜单时调用的函数
{
CMainFrame *pMain = (CMainFrame*)AfxGetApp()->m_pMainWnd;//获取框架类指针
CString strPathName = BootOpenDialog();
pMain->image.Destroy();
pMain->image.Load(strPathName);
Invalidate(true);
}