MFC picture control 显示不同格式图片

来源:互联网 发布:程序员示爱网页源代码 编辑:程序博客网 时间:2024/05/20 17:25

先上代码:

添加一个picture control,将ID改为IDC_STATIC_IMAGE,方便查看调用。

BOOL CVQMTDlg::ShowImage(){(CStatic*)GetDlgItem(IDC_STATIC_IMAGE)->ModifyStyle(0xF, SS_BITMAP | SS_CENTERIMAGE);CDC *pDc = NULL;pDc = GetDlgItem(IDC_STATIC_IMAGE)->GetDC();IPicture *pPic = NULL;OleLoadPicturePath(CComBSTR(m_sfiles[m_curImagePos].c_str()), (LPUNKNOWN)NULL, 0, 0, IID_IPicture, (LPVOID*)&pPic);if (NULL == pPic){return FALSE;}// 获取图像宽和高,注意这里的宽和高不是图像的分辨率  OLE_XSIZE_HIMETRIC hmWidth;OLE_YSIZE_HIMETRIC hmHeight;pPic->get_Width(&hmWidth);pPic->get_Height(&hmHeight);// 获取显示图片窗口的宽度和高度  RECT rtWnd;pDc->GetWindow()->GetWindowRect(&rtWnd);int iWndWidth = rtWnd.right - rtWnd.left;int iWndHeight = rtWnd.bottom - rtWnd.top;if (FAILED(pPic->Render(*pDc, 0, 0, iWndWidth, iWndHeight, 0, hmHeight, hmWidth, -hmHeight, NULL))){pPic->Release();return false;}//记得释放资源,不然会导致内存泄露  pPic->Release();return true;}

效果图:


这样就完美的切合了


参考一:http://blog.csdn.net/dafenqie/article/details/53337282

参考二:http://www.cnblogs.com/Forever-Road/p/6800838.html?utm_source=itdadao&utm_medium=referral