MFC界面上显示BMP图片
发布日期:2021-07-01 04:31:16
浏览次数:2
分类:技术文章
本文共 2493 字,大约阅读时间需要 8 分钟。
void ShowBMPDlg::OnButtonSelectiamge() { char szFilter[] = "BMP Files (*.bmp)|*.bmp|All Files(*.*)|*.*||"; CFileDialog dlg( TRUE,"BMP",NULL,OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,szFilter ); if(dlg.DoModal() == IDOK) { strPathName = dlg.GetPathName(); LoadShowBMPFile(strPathName); m_hBitmap = BufferToHBITMAP(); Invalidate(); } }
BOOL ShowBMPDlg::LoadShowBMPFile(const char *pPathname) { CFile file; if( !file.Open( pPathname, CFile::modeRead) ) return FALSE; DWORD m_nFileLen; m_nFileLen = file.GetLength(); m_pBMPBuffer = new char[m_nFileLen + 1]; if(!m_pBMPBuffer) return FALSE; if(file.Read(m_pBMPBuffer,m_nFileLen) != m_nFileLen) return FALSE; return TRUE; }
HBITMAP ShowBMPDlg::BufferToHBITMAP() { HBITMAP hShowBMP; LPSTR hDIB,lpBuffer = m_pBMPBuffer; LPVOID lpDIBBits; BITMAPFILEHEADER bmfHeader; DWORD bmfHeaderLen; bmfHeaderLen = sizeof(bmfHeader); strncpy((LPSTR)&bmfHeader,(LPSTR)lpBuffer,bmfHeaderLen); if (bmfHeader.bfType != (*(WORD*)"BM")) return NULL; hDIB = lpBuffer + bmfHeaderLen; BITMAPINFOHEADER &bmiHeader = *(LPBITMAPINFOHEADER)hDIB ; BITMAPINFO &bmInfo = *(LPBITMAPINFO)hDIB ; m_bmW = bmiHeader.biWidth; m_bmH = bmiHeader.biHeight; lpDIBBits=(lpBuffer)+((BITMAPFILEHEADER *)lpBuffer)->bfOffBits; CClientDC dc(this); hShowBMP = CreateDIBitmap(dc.m_hDC,&bmiHeader,CBM_INIT,lpDIBBits, &bmInfo,DIB_RGB_COLORS); return hShowBMP; }
void ShowBMPDlg::DrawImage(int x, int y, CDC *pDC) { HBITMAP OldBitmap; CDC MemDC; MemDC.CreateCompatibleDC(pDC); OldBitmap=(HBITMAP)MemDC.SelectObject(m_hBitmap); CBitmap* pBitmap = CBitmap::FromHandle(m_hBitmap); if(m_bmW == 0 || m_bmH == 0) return ; CRect rect; GetClientRect(&rect); pDC->BitBlt(x,y,rect.Width(),rect.Height(),&MemDC,0,0,SRCCOPY); MemDC.SelectObject(OldBitmap); }
转载地址:https://my-github.blog.csdn.net/article/details/51617798 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
感谢大佬
[***.8.128.20]2024年04月10日 07时32分16秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
前端权限控制:获取用户信息接口构造数据
2019-05-01
七牛云存储:断点续传
2019-05-01
字节流复制文本文件【应用】
2019-05-01
私钥加密私钥解密
2019-05-01
Java判断字符串是否为数字(浮点类型也包括)
2019-05-01
ubuntu opencv-python 安装很慢问题
2019-05-01
MySQL5.7版本修改了my.ini配置文件后mysql服务无法启动问题
2019-05-01
Azkaban体系结构
2019-05-01
机器学习之重头戏-特征预处理
2019-05-01
synchronized底层实现及锁的升级、降级
2019-05-01
PermGen space-永久区内存溢出
2019-05-01
Maven继承和聚合
2019-05-01
Apache Kafka:优化部署的 10 种最佳实践
2019-05-01
Leetcode 35. 搜索插入位置 c#
2019-05-01
[9] JMeter-常用函数的使用
2019-05-01
[12] JMeter-结果分析之图形图表
2019-05-01
使用aspose.words 18.6实现pdf文档转换
2019-05-01
Java数组详解
2019-05-01