- 1、本文档共35页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第三章 VC++图像编程基础 一、与设备无关位图(DIB) 与设备无关位图(DIB)可以在不同的机器或系统中显示位图所固有的颜色。与DDB相比,DIB是一种外部的位图格式,经常存储以BMP为后缀的位图文件。 1.BMP文件组成 BMP文件由文件头、位图信息头、颜色信息表和图像数据四部分组成。 位图结构如下: 2.BMP文件头 P30 BMP文件头数据结构含有BMP文件的类型、文件大小和位图起始位置等信息。其结构定义如下: typedef struct tagBITMAPFILEHEADER { WORD bfType; //文件类型,必须为BMP,即0x4d42 DWORD bfSize; // 文件大小,包括这14个字节 WORD bfReserved1; // 保留字,必须为0 WORD bfFeserved2; // 保留字,必须为0 DWORD bfOffBIts; //从文件头到实际位图数据的偏移量字节数 }BITMAPFILEHEADER; 这个结构的长度是固定的,为14个字节(WORD为无符号16位整数,DWORD为无符号32位整数)。 说明:为什么文件类型为BMP,即0x4d42? 原因:(4d)16 = (77)10,即字母m的ASCII码,(42)16 = (66)10,即字母b的ASCII码 3.位图信息头 位图信息头数据用于说明位图的尺寸等信息 typedef struct tagBITMAPINFOHEADER { DWORD biSize; //本结构所占用字节数,为40 LONG biWidth; //位图的宽度,以像素为单位 LONG biHeight; //位图的高度,以像素为单位。 WORG biPlanes; //目标设备的级别,必须为1 WORD biBitCount; // 表示颜色时所需的位数,常用的有1(二值图),4(16色),8(256色)或24(真彩色)。 DWORD biCompression; //位图压缩类型,必须是0(不压缩,基本采用该形式),1(BI_RLE8压缩类型)或2(BI_RLE4压缩类型)之一。 DWORD biSizeImage; //实际位图数据占用的字节数。 ………… }BITMAPINFOHEADER; 4.颜色表(调色板) 用于说明位图中的颜色,他有若干个表项,每个表项是一个RGBQUAD类型的结构,定义一种颜色。其定义如下: typedef struct tagRGBQUAD { BYTE rgbBlue; //蓝色的亮度(范围是0——255) BYTE rgbGreen; //绿色的亮度(范围是0——255) BYTE rgbRed; //红色的亮度(范围是0——255) BYTE rgbReserved; //保留值 }RGBQUAD; 位图信息头和颜色表组成位图信息BITMAPINFO,定义如下: typedef struct tagBITMAPINFO { BITMAPINFOHEADER bmiHeader; // 位图信息头 RGBQUAD bmiColors[1]; // 颜色表 }BITMAPINFO; 5.Windows位图结构数据域的含义P30 二、CDib类库的建立 P40 MFC中没有处理DIB位图的类,所以需要定义一个处理DIB位图的专用类CDib类,在其中封装必要的DIB数据成员和处理函数。 void LoadFile(const char* dibFileName); //装载BMP位图文件 BOOL SaveFile( const char *pszFilename ); //存储BMP位图文件 1. CDib类的设计目标 1)功能 主要包括: ①DIB文件的读、写操作 ②提供位图的宽度、高度、颜色数目等位图相关信息 ③提供有关位图占据内存空间的信息,包括图像数据区首地址、颜色表首地址、位图信息结构首地址等信息。 2)父类 MFC中的Cobject类是MFC中其他大多数类的根类和基类。他提供了许多有用的特性。另外,Cobject类具有最低限度的成员数据和函数,从Cobject类派生类所花的代价是最低的。因此,采用Cobject类作为CDib类的父类。 3)数据封装 他是面向对象的重要特征。但是在设计像CDib这样的类时,因为操作DIB的Win 32API函数大多需要一些DIB的属性作为参数,因此在设计CDib时应该注意程序的效率,不要过分封装。 4)继承 在设计CDib类时,在程序中即要打开原图,又要对原图进行各种处理,为了能够对照处理结果,即要显示原图,又要显示处理结果图,因此对原图不做任何处理; 将原图
您可能关注的文档
- 201172计算题练习1.ppt
- 2011aokao.doc
- 2011B933300-G基于纳米结构的新型柔性纤维基可编织光伏器件重要基础.doc
- 2011《电子技术》复习修改版.doc
- 2011《财经法规与会计职业道德》模拟试题一.doc
- 2011上会计继续教育模拟试题5.doc
- 2011上半年《会计基础》综合练习一及答案.doc
- 2011下半年会计从业资格考试《财经法规与会计职业道德》.doc
- 2011下半年_全国计算机等级考试二级C语言、二级VFP、二级access、二级VB、二级JAVA必备复习资料.doc
- 2011会计从业考试《财经法规与会计职业道德》模拟试卷三及答案.doc
- SCGZ2023022-化学实验技术-赛题-第5套.pdf
- SCGZ2023022-化学实验技术-赛题-第4套.pdf
- 2024-2030年中国汽车制造设备行业市场现状供需分析及投资评估规划分析研究报告.docx
- 人工智能在工业行业市场深度分析报告.docx
- SCGZ2023022-化学实验技术-赛题-第6套.pdf
- 2024-2030年中国汽车刹车消声膏行业市场发展趋势与前景展望战略分析报告.docx
- 2024-2030年中国汽车刹车片行业发展分析及发展前景与趋势预测研究报告.docx
- 2024-2030年中国汽车刹车片行业市场全景调研及投资价值评估咨询报告.docx
- SCGZ2023022-化学实验技术-赛题-第7套.pdf
- 2024-2030年中国汽车减震器行业市场深度调研及前景趋势与投资研究报告.docx
文档评论(0)