实验1:编程显示BMP图像.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
实验1:编程显示BMP图像

实验一 编程显示BMP图像 矿大信电学院 蔡利梅 一、实验目的 了解和掌握BMP图像文件格式。 了解用C++语言读取BMP格式的图像文件,并进行显示,为下一步编程进行图像处理打下基础。 二、实验要求 掌握BMP图像的格式; 掌握如何读取并显示图像。 三、实验原理 BMP图像文件格式: BITMAPFILEHEADER BITMAPINFOHEADER 调 色 板RGBQUAD 实际的位图数据ImageData 三、实验原理 编程函数简介 virtual BOOL Open( LPCTSTR lpszFileName, UINT nOpenFlags, CFileException* pError = NULL ); virtual UINT Read( void* lpBuf, UINT nCount ); void UpdateAllViews( CView* pSender, LPARAM lHint = 0L, CObject* pHint = NULL ); Call this function after the document has been modified COLORREF SetPixel( int x, int y, COLORREF crColor ); 四、实验步骤 生成应用程序框架 采用VS2005的框架环境 选择“文件/新建/项目”,在打开的对话框中,项目类型选“Visual C++/MFC”,模板选择“MFC应用程序”,在对话框的下侧,输入名称“Clm”和项目的位置,点击确定,进入MFC应用程序向导。 在MFC应用程序向导中,进行各项设置 应用程序类型选择“单文档” 其余各项采用默认设置 在最后一步,点击“完成” 选择“调试/开始执行(不调试)”菜单命令,生成一个简单的Windows界面。 四、实验步骤 设置“文件/打开”菜单函数 打开项目工作区“资源视图”,双击“Menu”项下的“IDR_MAINFRAME”,在右侧的编辑区选中“文件/打开”菜单,点击右键,在弹出菜单中选择“添加事件处理程序”,进入事件处理程序向导 ‘消息类型’选择“COMMAND”,‘类列表’中选择“CClmDoc”类,可以设置函数名称;点击“添加编辑”,自动转到文档类实现文件“ClmDoc.cpp”中该函数处 四、实验步骤 添加变量 项目工作区“解决方案资源管理”标签页,双击ClmDoc.h文件打开,添加以下变量: public: BITMAPFILEHEADER* fileheader; BITMAPINFOHEADER* infoheader; CString FileName; CFile file; BYTE* BMPData; RGBQUAD *pal; bool flag; int linebytes; 四、实验步骤 添加宏定义,计算存储一行像素需要的字节数 在 OnFileOpen( )函数前,定义宏定义 #define WIDTHBYTES(x) (((x)+31)/32*4) 在CClmDoc类构造函数中初始化,添加以下代码: flag=false; fileheader=NULL; infoheader=NULL; pal=NULL; BMPData=NULL; 五、程序代码 编辑void CClmDoc::OnFileOpen( )函数,添加以下代码: CFileDialog dlg(TRUE,0,0,OFN_HIDEREADONLY, _T(位图文件|*.bmp|所有文件|*.*||)); if(dlg.DoModal()==IDOK) { FileName=dlg.GetPathName(); if(fileheader) delete fileheader; if(infoheader) delete infoheader; if(pal) delete pal; if(BMPData) delete BMPData; if(flag) flag=false; if(!file.Open(FileName,CFile::modeRead)) return; fileheader=new BITMAPFILEHEADER[1]; infoheader=new BITMAPINFOHEADER[1]; file.Read(fileheader,14); if(fileheader-bfType!=0x4D42) return; 五、程序代码 file.Read(infoheader,40); if(infoheader-bi

文档评论(0)

xcs88858 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

版权声明书
用户编号:8130065136000003

1亿VIP精品文档

相关文档