本站首页    管理页面    写新日志    退出


«January 2026»
123
45678910
11121314151617
18192021222324
25262728293031


公告
暂无公告...

我的分类(专题)

日志更新

最新评论

留言板

链接


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)


阅读全文(8011) | 回复(7) | 编辑 | 精华
 


回复:(一)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)
原创空间,  文章收藏,  软件技术

joinclear发表评论于2006/5/29 23:20:33

源代码 请到(www.vclife.net)下载

个人主页 | 引用回复 | 主人回复 | 返回 | 编辑 | 删除
 


回复:(一)VC界面显示图片(BMP)
原创空间,  文章收藏,  软件技术

cyq(游客)发表评论于2006/5/29 14:43:11

请问,到哪里能下载VC界面显示图片(BMP)的原程序啊,紧用,谢谢!

个人主页 | 引用回复 | 主人回复 | 返回 | 编辑 | 删除
 


» 1 »

发表评论:
昵称:
密码:
主页:
标题:
验证码:  (不区分大小写,请仔细填写,输错需重写评论内容!)



站点首页 | 联系我们 | 博客注册 | 博客登陆

Sponsored By W3CHINA
W3CHINA Blog 0.8 Processed in 0.719 second(s), page refreshed 144822955 times.
《全国人大常委会关于维护互联网安全的决定》  《计算机信息网络国际联网安全保护管理办法》
苏ICP备05006046号