MFC对话框显示图片(使用Picture控件)
2016-04-12 16:01
507 查看
//************************************************************************************************************** // 方法说明: 显示JPG和GIF、BMP图片 // 参数说明: CDC * pDC 设备环境对象 // 参数说明: CString strPath 要显示的图片路径 // 参数说明: int x 要显示的X位置 // 参数说明: int y 要显示的Y位置 // 返回值: BOOL 成功返回TRUE,否则返回FALSE //************************************************************************************************************** BOOL CSIFTDlg::ShowImage(CDC* pDC, CString strPath, int x, int y) { IPicture *pPic = NULL; OleLoadPicturePath(CComBSTR(strPath.GetBuffer()), (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); // 将图像宽度和高度单位转化为像素单位 //#define HIMETRIC_PER_INCH 2540 //int nPicWidth = MulDiv(hmWidth, GetDeviceCaps(GetDC()->m_hDC, LOGPIXELSX),2540); //int nPicHeight = MulDiv(hmHeight, GetDeviceCaps(GetDC()->m_hDC, LOGPIXELSY),2540); // 获取显示图片窗口的宽度和高度 RECT rtWnd; pDC->GetWindow()->GetWindowRect(&rtWnd); int iWndWidth = rtWnd.right - rtWnd.left; int iWndHeight = rtWnd.bottom - rtWnd.top; if (FAILED(pPic->Render(*pDC, x, y, iWndWidth, iWndHeight, 0, hmHeight, hmWidth, -hmHeight, NULL))) { pPic->Release(); return false; } //记得释放资源,不然会导致内存泄露 pPic->Release(); return true; }
//************************************************************************************************************** // 方法说明: 显示图片(按钮点击响应) // 返回值: void //************************************************************************************************************** void CSIFTDlg::OnBnClickedDisplay() { CDC *pDC = NULL; CString strPath; //设置静态控件的样式,使其可以使用位图,并使位图显示居中 ((CStatic*)GetDlgItem(ID_IMG1))->ModifyStyle(0xF, SS_BITMAP | SS_CENTERIMAGE); pDC = GetDlgItem(ID_IMG1)->GetDC(); strPath = CString(_T(ImgPath1)); ShowImage(pDC, strPath, 0, 0); ReleaseDC(pDC); // 记得释放资源,不然会导致内存泄露 }
相关文章推荐
- javaweb 常用内置对象
- Java类加载顺序
- C#实现Excel动态生成PivotTable
- linux 发布脚本
- git常用命令汇总
- Android_ScrollView中嵌套ListView显示不全的解决方法
- Jenkins环境搭建(3)
- 【e2label】查看或定义卷标
- @Transactional spring 配置事务 注意事项
- microsoft windows network 不允许一个用户使用一个以上用户名与服务器或共享资源的多重连接
- iOS学习笔记20-地图(二)MapKit框架
- 统计n!尾部零
- js字符串常用方法
- wing 3.x 插件开发案例
- 树状数组&二维树状数组模板
- iOS URLEcode,URLDecode
- Tyvj_P1002
- 教你怎么干净卸载MySql
- 分布式版本控制系统Git------git工作区和主要对象
- freemarker+spring中文乱码的解决