(1).Picture Control控件中显示图片
1.新建一个MFC对话框工程pictureLoad,手动拖入 Picture Control控件ID为IDC_STATIC
2.在对话框类class CpictureLoadDlg 中加入变量:
CImage m_img;
3.在BOOL CpictureLoadDlg::OnInitDialog()函数中添加获取目标图片的代码:
HRESULT ret = m_img.Load("E:/06_visualstudio2010_Projects/pictureLoad/Desert.jpg"); //需要转换符'\' 从指定路径获取图片m_img
if (FAILED(ret)) //判断获取图片是否成功,成功继续,不成功弹出提示框
{
AfxMessageBox(_T(" img Load failed!"));
return FALSE;
}
4.在void CpictureLoadDlg::OnPaint()函数中添加代码
CStatic* pWnd = (CStatic*)GetDlgItem(IDC_STATIC); //绑定Picture Control控件,用pWnd指针进行操作
CDC *pc = pWnd->GetDC() ; //获取指定窗口pWnd(Picture Control控件)的上下文环境,后面使用pc在该上下文环境中绘图
CRect rctWindowSize; //矩形类对象 rctWindowSize
pWnd->GetClientRect(&rctWindowSize); //获取Picture Control控件当前的客户区域,通常的窗口从上到下依次是标题栏,菜单栏,工具栏,客户区,最底下的是状态栏,客户区就是用来和应用程序交互的地方。
m_img.StretchBlt(pc->m_hDC,0,0, rctWindowSize.Width(),rctWindowSize.Height(), SRCCOPY);//StretchBlt:将位图从源矩阵拷贝到目标矩阵,将该位图进行拉伸或压缩以适应目标矩阵的大小。 这里源目标指的是m_img,目标指的是pc->m_hDC,就是Picture Control控件。
//用StretchBlt函数需要指出源目标m_img,目标矩阵的操作句柄,目标矩阵位置,目标矩形的宽和高。
//pc->m_hDC:目标环境句柄, o:目标位置左上角x坐标,0::目标位置左上角y坐标;rctWindowSize.Width():目标矩形的宽度;rctWindowSize.Height():目标矩形的高度;SRCCOPY:操作方式为:Copies the source bitmap to the destination bitmap.
运行结果:
(2).在Dialog中显示图片
1.新建一个MFC对话框工程pictureLoad
2.在BOOL CpictureLoadDlg::OnInitDialog()函数中添加获取目标图片的代码:
HRESULT ret = m_img.Load("E:/06_visualstudio2010_Projects/pictureLoad/Desert.jpg"); //需要转换符'\' 从指定路径获取图片m_img
if (FAILED(ret)) //判断获取图片是否成功,成功继续,不成功弹出提示框
{
AfxMessageBox(_T(" img Load failed!"));
return FALSE;
}
3.在void CpictureLoadDlg::OnPaint()函数中添加代码
CPaintDC dc(this);
CRect rctWindowSize;
GetClientRect(&rctWindowSize);
m_img.StretchBlt(dc,0,0,rctWindowSize.Width(),rctWindowSize.Height(),SRCCOPY);
运行结果: