| « | January 2026 | » | | 日 | 一 | 二 | 三 | 四 | 五 | 六 | | | | | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | |
| 公告 |
| 暂无公告... |
| Blog信息 |
|
blog名称: 日志总数:21 评论数量:94 留言数量:1 访问次数:145859 建立时间:2006年1月9日 |

| |
|
[Visual C++](一)VC界面显示图片(BMP) 原创空间, 文章收藏, 软件技术
joinclear 发表于 2006/5/13 18:01:54 |
| 转载自: http://www.vclife.net/articles/article_view.asp?atlid=6简述实现步骤如下:
1、通过点击浏览按钮选择BMP图像文件点击浏览按钮打开文件对话框选择BMP图像文件,得到文件所在的路径目录。关键代码如下:char szFilter[] = "BMP Files (*.bmp)|*.bmp|All Files (*.*)|*.*||";CFileDialog dlg( TRUE,"BMP",NULL,OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,szFilter );if(dlg.DoModal() == IDOK){ CString strPathName = dlg.GetPathName(); }
2、加载BMP文件到内存通过得到的BMP图像文件路径目录,加载BMP图像文件到内存中。关键代码如下:BOOL CShowBMPDlg::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.ReadHuge(m_pBMPBuffer,m_nFileLen) != m_nFileLen) return FALSE; return TRUE;}
3、将内存中的BMP文件内容转换到HBITMAP将内存中的BMP文件内容转换成位图句柄。关键代码如下:HBITMAP CShowBMPDlg::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 ;
lpDIBBits=(lpBuffer)+((BITMAPFILEHEADER *)lpBuffer)->bfOffBits; CClientDC dc(this); hShowBMP = CreateDIBitmap(dc.m_hDC,&bmiHeader,CBM_INIT,lpDIBBits,&bmInfo,DIB_RGB_COLORS); return hShowBMP;}
4、在屏幕上显示BMP图像双缓冲实现BMP位图显示在屏幕上。关键代码如下:void CShowBMPDlg::DrawImage(int x, int y, CDC *pDC){ HBITMAP OldBitmap; CDC MemDC; MemDC.CreateCompatibleDC(pDC); OldBitmap=(HBITMAP)MemDC.SelectObject(m_hBitmap);
CRect rect; GetClientRect(&rect); pDC->BitBlt(x,y,rect.Width(),rect.Height(),&MemDC,0,0,SRCCOPY); MemDC.SelectObject(OldBitmap);}
以上是本人对位图显示资料的一个整理,对你而言也许很简单,但这只是我个人的一个整理总结。一方面整理总结一个自己认为不错的知识点,另一方面也希望能够帮助一些需要帮助的人。
具体的程序请参考附带的例子,例子里面有详细的注释。
源代码 请到转载的网上下载(www.vclife.net) |
|
|
回复:(一)VC界面显示图片(BMP) 原创空间, 文章收藏, 软件技术
游客(游客)发表评论于2011/12/21 11:37:37 |
| 您好,你贴的网址 我打不开 能否把源码发到我的邮箱下 谢谢 邮箱:380829593@qq.com |
|
|
回复:(一)VC界面显示图片(BMP) 原创空间, 文章收藏, 软件技术
joinclear发表评论于2007/2/28 8:46:48 |
| http://www.vclife.net/articles/article_view.asp?atlid=22
有代码下载。 |
|
|
回复:(一)VC界面显示图片(BMP) 原创空间, 文章收藏, 软件技术
adong(游客)发表评论于2006/7/28 10:52:33 |
| 有没有直接可以读取得?就是不用"通过点击浏览按钮选择BMP图像文件"的.我邮箱qinshandongrena@163.com
|
|
|
回复:(一)VC界面显示图片(BMP) 原创空间, 文章收藏, 软件技术
adong(游客)发表评论于2006/7/28 10:52:29 |
| 有没有直接可以读取得?就是不用"通过点击浏览按钮选择BMP图像文件"的.我邮箱qinshandongrena@163.com
|
|
|
回复:(一)VC界面显示图片(BMP) 原创空间, 文章收藏, 软件技术
新手(游客)发表评论于2006/7/7 14:40:59 |
| lz能不能把有的源代码发给我研究一下啊 ,我的邮箱
jdming1982@163.com |
|
|
回复:(一)VC界面显示图片(BMP) 原创空间, 文章收藏, 软件技术
cyq(游客)发表评论于2006/5/29 14:43:11 |
| 请问,到哪里能下载VC界面显示图片(BMP)的原程序啊,紧用,谢谢! |
|
» 1 »
|