计算机图形学实验二..doc

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

计算机科学系实验报告(首页) 课程名称 计算机图形学 班级 12网络2 实验名称 VC存取BMP图像及其几何变换 教导教师 吴志攀 姓名 李文森 学号 1214080613213 日期 2014 .11.21 一、实验目的 1. 掌握VC中BMP图像的存取方法; 2. 掌握BMP图像平移、旋转、变比等几何变换。 二、实验设备与环境 TC2.0,Windows XP 三、实验内容、程序清单及运行结果 1.打开VC++ 6.0,选择File|New进入界面。在Projects中选择MFC AppWinzard(exe),在Project name中输入项目名称,本例为ReadBMP,在Location中输入项目要保存的文件夹。点击“OK”进入下一步。如下图2-1所示。 图2-1 2.选择文档类型。在本例中使用的是单文档视图结构,所以这里选择Single document。其余部分设置使用VC++ 6.0的默认设置,点击“Finish”完成项目创建。如下图2-2所示: 图2-2 3.为了将BMP中的数据读入到内存中,在项目中导入专门处理BMP文件头和数据的文件:DIBAPI.H和DIBAPI.CPP,在其中实现对BMP文件的大部分处理。 在工作区“FileView”选项卡的“Header Files”中点右键,在“添加文件到目录”添加“DIBAPI.H”文件。如下图2-3所示: 图2-3 在工作区“FileView”选项卡的“Source Files”中点右键,在“添加文件到目录”添加“DIBAPI.CPP”文件。 并在“ReadBMPDoc.h”添加头文件dibapi.h,如下所示: #include dibapi.h 4.在CReadBMPDoc类中添加保护成员变量CPalette* m_palDIB,HDIB m_hDIB和CSize m_sizeDoc。m_hDIB用于保存当前BMP图像句柄,m_palDIB用于指向BMP图像对应的调色板。 protected: HDIB m_hDIB; CPalette* m_palDIB; CSize m_sizeDoc; 5.为了取得保存在当前文档中的HDIB和Palette数据,在“ReadBMPDoc.h”的CReadBMPDoc类中添加方法:GetHDIB,GetDocPalette和GDocSize。如下所示: // Attributes public: HDIB GetHDIB() const { return m_hDIB; } CPalette* GetDocPalette() const { return m_palDIB; } CSize GetDocSize() const { return m_sizeDoc; } 在CReadBMPDoc.cpp的构造函数中初始化: // 初始化变量 m_hDIB = NULL; m_palDIB = NULL; m_sizeDoc = CSize(1,1); 6.响应类CReadBMPDoc OnOpenDocument事件,以实现打开文件的操作。 从View|ClassWizard进入MFC ClassWizard界面,在Message Maps选项中完成消息映射。下图2-4所示: 图2-4 在BOOL CReadBMPDoc::OnOpenDocument(LPCTSTR lpszPathName)函数中添加如下代码: //if (!CDocument::OnOpenDocument(lpszPathName)) //return FALSE; // TODO: Add your specialized creation code here //return TRUE; CFile file; CFileException fe; // 打开文件 if (!file.Open(lpszPathName, CFile::modeRead | CFile::shareDenyWrite, fe)) { // 失败 ReportSaveLoadException(lpszPathName, fe, FALSE, AFX_IDP_FAILED_TO_OPEN_DOC); // 返回FALSE return FALSE; } DeleteContents(); // 更改光标形状 BeginWaitCursor(); // 尝试调用ReadDIBFile()读取图像 TRY { m_hDIB = ::ReadDIBFile(fi

文档评论(0)

dsf80fhg0j + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档