基于VC++6.0的BMP图像显示.docx

  1. 1、本文档共6页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多

?

?

基于VC++6.0的BMP图像显示

?

?

摘要:探讨了VC++6.0环境下BMP图像文件的显示。首先详细介绍BMP图像文件的两种类型DDB和DIB的各部分组成及其意义,并对DIB的两种形式WindowsDIB和OS/2DIB加以区别,然后利用VC++6.0的MFC库函数对DDB位图的显示加以实现,对DIB位图的显示过程以程序流程图的形式详细说明。

论文关键词:BMP图像,VC++6.0,图像显示,DDB位图,DIB位图

位图分为设备相关位图(DDB)和设备无关位图(DIB)两种。

1DDB位图

DDB是一种内部位图格式,自身没有调色板,它的显示依赖于计算机显示系统内部的调色板,因此它的显示效果因计算机显示系统的不同而不同。

1.1BITMAP结构

BITMAP结构定义了DDB位图的类型、宽度、颜色格式和像素位值信息,该结构的定义如下:

typedefstructtagBITMAP

{

intbmType;//指定位图的类型,这个值必须为0

intbmWidth;//指定位图的宽度,以像素为单位

intbmHeight;//指定位图的高度,以像素为单位

intbmWidthBytes;//指定位图中每个扫描行的字节数

BYTEbmPlanes;//指定颜色层数

BYTEbmBitsPixel;//指定每个像素所占的位数

viodFAR*bmBits;//存放像素值的内存块的地址

}BITMAP,*PBITMAP

1.2DDB位图的显示

显示DDB位图的基本过程为:首先创建一个位图对象,并将该位图对象装入内存;然后创建一个与显示设备上下文相兼容的内存设备上下文(CDC);再将该位图对象选入创建的内存设备上下文,并保存内存设备上下文中原有位图的指针;接着显示位图;最后恢复设备上下文中原有的位图。函数DisplayDDB展示了DDB位图的显示过程。

BOOLDisplayDDB(CDC*pDC,LPCSTRlpszBitmap)

{

CBitmapBitmap,*poldBitmap;

BITMAPbmp;

CDCdcMemory;

if(!Bitmap.LoadBitmap(lpszBitmap))//加载位图

{returnFALSE;}

if(!dcMemory.CreateCompatibleDC(pDC))//创建CDC

returnFALSE;//创建CDC失败

//把创建的位图选入CDC

poldBitmap=(CBitmap*)dcMemory.SelectObject(Bitmap);

//显示位图

pDC-BitBlt(0,0,bmp.bmWidth,bmp.bmHeight,dcMemory,0,0,SRCCOPY);

//把原始位图选入CDC

dcMemory.SelectObject(poldBitmap);

returnTRUE;

}

2DIB位图

DIB位图是设备无关位图,它自带调色板信息,经常存储为以BMP为后缀的图像。DIB分为WindowsDIB和OS/2DIB两种。

2.1WindowsDIB

WindowsDIB由BITMAPFILEHEADER(位图文件头)、BITMAPINFOHEADER(位图信息头)、RGBQUAD(位图颜色表)和位图图像数据四部分组成。

位图文件头BITMAPFILEHEADER的定义如下:

typedefstructtagMAPFILEHEADER

{

WORDbfType;指定文件的类型,必须是BM

DWORDbfSize;指定位图文件的大小,以字节为单位

WORDbfReserved1;保留位,必须为0

WORDbfReserved2;保留位,必须为0

DWORDbfOffBits;从BITMAPFILEHEADER结构到位图数据的偏移量(字节)

}BITMAPFILEHEADER,FAR*LPBITMAPFILEHEADER,*PBITMAPFILEHEADER;

位图信息头BITMAPFILEHEADER结构的定义如下:

typedefstructtagBITMAPINFOHEADER

{

DWORDbiSize;//指定这个结构的大小,以字节为单位

LONGbiWidthbiWidth;//指定位图的宽度,以像素为单位

LONGbiHeight;//指定位图的高度,以像素为单位

WORDbiPlanes;//该值必须为1

WORDbiBitCount;//指定每个像素所占的位数

DWORDbiCompression;//指定位图的压缩类型

DWORDbiSizeImage;//指定位图数据占用的字节数,bi

文档评论(0)

木槿流年 + 关注
实名认证
内容提供者

悟已往之不谏,知来者之可追

1亿VIP精品文档

相关文档