与设备无关的位图.doc

与设备无关的位图.doc

ID:51601807

大小:930.65 KB

页数:136页

时间:2020-03-13

与设备无关的位图.doc_第1页
与设备无关的位图.doc_第2页
与设备无关的位图.doc_第3页
与设备无关的位图.doc_第4页
与设备无关的位图.doc_第5页
资源描述:

《与设备无关的位图.doc》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、与设备无关的位图涛儿软件工作室整理编译在上一章我们了解到WindowsGDI位图对象(也称为与设备相关的位图,或DDB)有许多程序设计用途。但是我并没有展示把这些位图储存到磁盘文件或把它们加载内存的方法。这是以前在Windows中使用的方法,现在根本不用了。因为位图的位格式相当依赖于设备,所以DDB不适用于图像交换。DDB内没有色彩对照表来指定位图的位与色彩之间的联系。DDB只有在Windows开机到关机的生命期内被建立和清除时才有意义。在Windows3.0中发表了与设备无关的位图(DIB),提供了适用于交换的

2、图像文件格式。正如您所知的,像.GIF或.JPEG之类的其它图像文件格式在Internet上比DIB文件更常见。这主要是因为.GIF和.JPEG格式进行了压缩,明显地减少了下载的时间。尽管有一个用于DIB的压缩方案,但极少使用。DIB内的位图几乎都没有被压缩。如果您想在程序中操作位图,这实际上是一个优点。DIB不像.GIF和.JPEG文件,WindowsAPI直接支持DIB。如果在内存中有DIB,您就可以提供指向该DIB的指标作为某些函数的参数,来显示DIB或把DIB转化为DDB。DIB文件格式有意思的是,DIB

3、格式并不是源自于Windows。它首先定义在OS/2的1.1版中,该操作系统最初由IBM和Microsoft在八十年代中期开始开发。OS/21.1在1988年发布,并且是第一个包含了类似Windows的图形使用者接口的OS/2版本,该图形使用者接口被称之为「PresentationManager(PM)」。「PresentationManager」包含了定义位图格式的「图形程序接口」(GPI)。然后在Windows3.0中(发布于1990)使用了OS/2位图格式,这时称之为DIB。Windows3.0也包含了原始

4、DIB格式的变体,并在Windows下成为标准。在Windows95(以及WindowsNT4.0)和Windows98(以及WindowsNT5.0)下也定义了一些其它的增强能力,我会在本章讨论它们。DIB首先作为一种文件格式,它的扩展名为.BMP,在极少情况下为.DIB。Windows应用程序使用的位图图像被当做DIB文件建立,并作为只读资源储存在程序的可执行文件中。图标和鼠标光标也是形式稍有不同的DIB文件。程序能将DIB文件减去前14个字节加载连续的内存块中。这时就可以称它为「packedDIB(pack

5、ed-DIB)格式的位图」。在Windows下执行的应用程序能使用packedDIB格式,通过Windows剪贴簿来交换图像或建立画刷。程序也可以完全存取DIB的内容并以任意方式修改DIB。程序也能在内存中建立自己的DIB然后把它们存入文件。程序使用GDI函数呼叫就能「绘制」这些DIB内的图像,也能在程序中利用别的内存DIB直接设定和操作图素位。在内存中加载了DIB后,程序也能通过几个WindowsAPI函数呼叫来使用DIB数据,我将在本章中讨论有关内容。与DIB相关的API呼叫是很少的,并且主要与视讯显示器或打

6、印机页面上显示DIB相关,还与转换GDI位图对象有关。除了这些内容以外,还有许多应用程序需要完成的DIB任务,而这些任务Windows操作系统并不支持。例如,程序可能存取了24位DIB并且想把它转化为带有最佳化的256色调色盘的8位DIB,而Windows不会为您执行这些操作。但是在本章和下一章将向您显示WindowsAPI之外的操作DIB的方式。OS/2样式的DIB先不要陷入太多的细节,让我们看一下与首先在OS/21.1中出现的位图格式兼容的WindowsDIB格式。DIB文件有四个主要部分:文件表头信息表

7、头RGB色彩对照表(不一定有)位图图素位您可以把前两部分看成是C的数据结构,把第三部分看成是数据结构的数组。在Windows表头文件WINGDI.H中说明了这些结构。在内存中的packedDIB格式内有三个部分:信息表头RGB色彩对照表(不一定有)位图图素位除了没有文件表头外,其它部分与储存在文件内的DIB相同。DIB文件(不是内存中的packedDIB)以定义为如下结构的14个字节的文件表头开始:typedefstructtagBITMAPFILEHEADER//bmfh{WORDbfType;//s

8、ignatureword"BM"or0x4D42DWORDbfSize;//entiresizeoffileWORDbfReserved1;//mustbezeroWORDbfReserved2;//mustbezeroDWORDbfOffsetBits;//offsetinfileofDIBpixelbits}BITMAPFILEHEADER,*PBITMAPFILEH

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。