打开对话框选择位图到View

来源:互联网 发布:风险矩阵图等级划分 编辑:程序博客网 时间:2024/06/03 15:44
新建一个单文档程序
View中添加三个变量:
CBitmap m_bitmap;   
HBITMAP m_hBmp;
BITMAP m_bmp;    //保存图像数据(高宽)
菜单栏加一菜单项“打开位图”,ID为ID_NEWBITMAP
给该菜单项添加响应函数:
void CTestBltView::OnNewbitmap()
{
// TODO: 在此添加命令处理程序代码

CFileDialog fileDlg(TRUE);
//CString szFileName;    //扩展名
if(IDOK==fileDlg.DoModal())
{
szFileName=fileDlg.GetPathName();
//获得扩展名
//externName = fileDlg.GetFileExt(); 
m_hBmp=(HBITMAP)LoadImage(NULL,szFileName,IMAGE_BITMAP,
0,0,LR_LOADFROMFILE);
//由HBITMAP得到相关联的CBitmap
m_bitmap.Attach(m_hBmp);
  
//m_bmp接收当前位图的信息,
m_bitmap.GetBitmap(&m_bmp);  
Invalidate();
}
}

OnDraw()函数中显示位图:
void CTestBltView::OnDraw(CDC* pDC)
{
CTestBltDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
if (!pDoc)
return;

CDC memDC;
memDC.CreateCompatibleDC(pDC);
memDC.SelectObject(m_bitmap);
CRect rect;
GetClientRect(rect);

pDC->StretchBlt(0,0,rect.Width(),rect.Height(),&memDC,0,0,
m_bmp.bmWidth,m_bmp.bmHeight,SRCCOPY);
}
原创粉丝点击