`
nathan09
  • 浏览: 144739 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
文章分类
社区版块
存档分类
最新评论

VC界面显示图片(BMP)

 
阅读更多
1、通过点击浏览按钮选择BMP图像文件
点击浏览按钮打开文件对话框选择BMP图像文件,得到文件所在的路径目录。
关键代码如下:
voidCShowBMPDlg::OnButtonSelectiamge()
...{
charszFilter[]="BMPFiles(*.bmp)|*.bmp|AllFiles(*.*)|*.*||";
CFileDialogdlg(TRUE,
"BMP",NULL,OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT,szFilter);
if(dlg.DoModal()==IDOK)
...{
strPathName
=dlg.GetPathName();
LoadShowBMPFile(strPathName);
m_hBitmap
=BufferToHBITMAP();
Invalidate();
}

}
2、加载BMP文件到内存
通过得到的BMP图像文件路径目录,加载BMP图像文件到内存中。
关键代码如下:
BOOLCShowBMPDlg::LoadShowBMPFile(constchar*pPathname)
...{
CFilefile;
if(!file.Open(pPathname,CFile::modeRead))
returnFALSE;
DWORDm_nFileLen;
m_nFileLen
=file.GetLength();
m_pBMPBuffer
=newchar[m_nFileLen+1];
if(!m_pBMPBuffer)
returnFALSE;
if(file.Read(m_pBMPBuffer,m_nFileLen)!=m_nFileLen)
returnFALSE;
returnTRUE;
}
3、将内存中的BMP文件内容转换到HBITMAP
将内存中的BMP文件内容转换成位图句柄。
关键代码如下:
HBITMAPCShowBMPDlg::BufferToHBITMAP()
...{
HBITMAPhShowBMP;
LPSTRhDIB,lpBuffer
=m_pBMPBuffer;
LPVOIDlpDIBBits;
BITMAPFILEHEADERbmfHeader;
DWORDbmfHeaderLen;

bmfHeaderLen
=sizeof(bmfHeader);
strncpy((LPSTR)
&bmfHeader,(LPSTR)lpBuffer,bmfHeaderLen);

if(bmfHeader.bfType!=(*(WORD*)"BM"))returnNULL;
hDIB
=lpBuffer+bmfHeaderLen;
BITMAPINFOHEADER
&bmiHeader=*(LPBITMAPINFOHEADER)hDIB;
BITMAPINFO
&bmInfo=*(LPBITMAPINFO)hDIB;
m_bmW
=bmiHeader.biWidth;
m_bmH
=bmiHeader.biHeight;
lpDIBBits
=(lpBuffer)+((BITMAPFILEHEADER*)lpBuffer)->bfOffBits;
CClientDCdc(
this);
hShowBMP
=CreateDIBitmap(dc.m_hDC,&bmiHeader,CBM_INIT,lpDIBBits,&bmInfo,DIB_RGB_COLORS);
returnhShowBMP;
}

4、在屏幕上显示BMP图像
双缓冲实现BMP位图显示在屏幕上。
关键代码如下:
voidCShowBMPDlg::DrawImage(intx,inty,CDC*pDC)
...{
HBITMAPOldBitmap;
CDCMemDC;
MemDC.CreateCompatibleDC(pDC);
OldBitmap
=(HBITMAP)MemDC.SelectObject(m_hBitmap);

CBitmap
*pBitmap=CBitmap::FromHandle(m_hBitmap);
if(m_bmW==0||m_bmH==0)
return;
CRectrect;
GetClientRect(
&rect);
/**//*str.Format("%d%d",rect.Width(),rect.Height());
MessageBox(str);
*/

pDC
->BitBlt(x,y,rect.Width(),rect.Height(),&MemDC,0,0,SRCCOPY);

GetRGB(MemDC);

MemDC.SelectObject(OldBitmap);
}
分享到:
评论

相关推荐

    VC界面显示bmp格式图片

    VC界面显示图片。点击浏览按钮打开文件对话框选择BMP图像文件,得到文件所在的路径目录

    vc界面上显示JPG格式图片

    vc上的PICTURE控件只能显示BMP类型的图片,要显示JPG图片必须另外处理, 对于三层结构的程序,用户可能要求客户端能显示业主头像,或者房屋照片 BMP形式显然数据量比较大, 本例子实现了一个能在客户端显示JPG格式的图片...

    vc 动态加载显示jpg、bmp图片

    使用IPicture显示图片,使用步骤已经在界面上显示

    VC 实现BMP图像透明窗体的简单示例.rar

    奇特的VC 透明窗体,利用了BMP图像,BMP可显示的去掉背景的文字,然后将这个BMP位图应用到窗体中,就形成了透明窗体,或许对你来说有点太简单了。希望对透明窗体制作不太懂的编程朋友参考一下。

    VC 在窗体上加载显示BMP位图的例子.rar

    VC 在窗体上加载显示BMP位图的例子,这是一个比较基础的VC 图像使用的例子,在窗口中显示一张BMP格式的图片,虽然只是载入了一张自定义的位图,不过方法基本就是这个样子,自己使用时可再此基础上扩展吧。

    VC++在BMP位图图片上显示文本

    VC++在BMP图片上显示文本,是一个VC++窗口绘图的例子,JPG格式图片未做测试。显示文字主要是使用TextOut方法,完整的过程是:定义位图对象,加载背景位图,获取位图信息(图像宽度和高度),获取窗口客户区域,获取...

    打开BMP文件的所有源程序

    .rar] - bmp转换为jpeg,jpeg压缩的源代码 程序用vc实现了bmp图片转换成jpeg图片 [bmpfor3.rar] - 从文件读取并显示bmp位图,然后保存 [运用Opengl和C实现一个人体面部的三维显示.rar] - 通过VC++和OPenGL实现人脸...

    VC实现透明位图的显示

    VC实现透明位图的显示,可用于UI界面的美化

    VC 使用区域剪裁方法实现椭圆图片.rar

    VC 使用区域剪裁方法实现椭圆图片,操作对象是BMP位图,当然,把图片显示成椭圆的形状,不只是就这一种方法,不过这种方法似乎也不错,多学一种方法毕竟很有用吧。

    VC与Labview、Matlab编程论文资料[2].rar

    基于Flash页面显示的VC_编程实现.pdf 基于HALCON和VC_混合编程的视觉测量系统设计.pdf 基于LabVIEW与OPC的船舶机舱报警系统设计.pdf 基于LabVIEW与USB的虚拟仪器接口设计.pdf 基于LabVIEW串口通信的研究.pdf ...

    VC/VS工具栏图标合成软件

    13. 支持透明色:图片背景色可设置为透明,用户可选择何种颜色作为透明色,此功能对带界面皮肤的软件来说,很有用处,无论皮肤界面的颜色如何变化,北京都能融入新的界面中; 14. 可将多个不同背景色的图片合成一个...

    VC与Labview、Matlab编程论文资料

    基于Flash页面显示的VC_编程实现.pdf 基于HALCON和VC_混合编程的视觉测量系统设计.pdf 基于LabVIEW与OPC的船舶机舱报警系统设计.pdf 基于LabVIEW与USB的虚拟仪器接口设计.pdf 基于LabVIEW串口通信的研究.pdf ...

    基于VC++平台简单数字图像处理界面设计

    该数字图像处理界面是基于Microsoft Visual C++ 6.0 MFC多文档编程的图像处理界面,实现.bmp格式图像的浏览与编辑,导入和导出,图像特效显示,边缘检测,旋转和翻转图片,图片增强优化,以及打印输出图片。...

    VC与Labview、Matlab编程论文资料[4].rar

    基于Flash页面显示的VC_编程实现.pdf 基于HALCON和VC_混合编程的视觉测量系统设计.pdf 基于LabVIEW与OPC的船舶机舱报警系统设计.pdf 基于LabVIEW与USB的虚拟仪器接口设计.pdf 基于LabVIEW串口通信的研究.pdf ...

    VC关于图像、视频、摄像头的多项测试程序

    功能有:(1)用OpenCV打开各种格式的图片显示在VC的picture控件中 (2)鼠标拖动框选指定区域截图,并保存为bmp文件 (3)用opencv打开摄像头显示在picture控件中 (4)用opencv打开视频显示在picture控件中 (5)暂停视频...

    PictureShow(MFC图像浏览显示)

    用C++ MFC 显示多张图像,类型可以是bmp、jpg等多种,实现图像的查看,浏览。下面一排小图像显示所有打开的图像,点击可以查看大图。使用的绘图方法也不错,速度比较快。费了很大劲才搞定的,是图像处理一个很实用的...

    Qt4实现的图像读写显示程序,VC6.0

    利用Qt4设计实现界面,利用VC6.0编译通过,支持jpg,bmp,png,jpeg等主流图像格式的读写显示,其中Qt4设计界面的代码可以作为模板程序使用

    如何使用VC cTree实现树形菜单的例子.rar

    如何使用VC cTree实现树形菜单的例子,也就是一般显示在窗口左侧,可以折叠展开的操作菜单,展开、闭合多个菜单节点,cTree类可以用来完成树控条目中的拖拽以及为您的树控件设置图片(bmp)背景的功能。示例程序中只...

    若干vc源代码.rar

    860,123 360界面的互粉软件VC源码360FORMSRC.rar 3,758,988 ADS1.2实例教程.pdf 57,344 CListCtrl控件用法2.doc 15,829,124 COM原理与应用源码.rar 134,908 C语言写的网页爬虫程序.rar 942,551 JEPG图像中数字...

    数字图像处理大作业合集—四次数字图像处理大作业.zip

    基于VC的多文档界面(MDI )方式,设计数字图像处理程序框架 软件中编程实现BMP格式图像文件的读取、显示 选择实现JPG、 RAW格式文件的读取、显示,以及与BMP格式的转换 完成图像的基本操作:加、求反、几何变换 ...

Global site tag (gtag.js) - Google Analytics