VC++图像处理集中实习指导书.doc

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

数字图像处理集中实习指导书 本文基于VC++6.0开发环境,介绍数字图像处理的基本操作和处理。 一、工程的建立 1、运行Microsoft Visual C++程序,进入VC++主界面。 2、单击“File”菜单,选择“New”来新建,在出现的对话框中选择Project,并选择“MFC AppWizard[exe]”,表示建立一个MFC应用向导支持的工程文件。然后在右边输入工程名称(本文为“B”为例)和该工程存储地址,工程名要求为4位数字,如某同学是3班,学号为4,则工程命名为“0304”,输入完毕后单击“OK”。 3、下面的六个步骤中,前五个选择默认,第六个步骤中,将视图类的基类更改为CSrollView类,然后点击完成。 通过这些步骤就可以建立一个Windows风格的工程,这个工程也是今后进行VC图像处理的基础。点击编译、连接,没有错误和警告,然后运行,会出现一个应用程序界面,界面具有文件、编辑、查看、窗口和帮助这些菜单,点击其子菜单,发现程序什么也没执行,这需要我们为它加入相关的功能。 二、加载位图类 1、将已经写好的位图类文件Dib.h和Dib.cpp拷贝到工程文件夹的根目录下,点击主菜单Project,选择Add to Project下的Files,然后选择位图类的头文件和cpp文件,这时,该视图类就加到工程中了,在左边项目工作区的ClassView中就可以看到该类的列表。展开每个类,可看到每个类的变量和函数。 2、编译、连接无错误后,可以运行。 三、读写位图 1、在视图类的cpp文件中包含dib.h头文件,并生成一个CDib对象:CDib dib; 2、在视图类头文件的构造函数中加入3个成员变量如下: BYTE *m_pBitmap; DWORD m_dwHeight, m_dwWidth; WORD m_flag; 分别表示数据指针、图像的高度、图像的宽度和图像的类型。 在析构函数中加入if(m_pBitmap) delete m_pBitmap; 3、添加“打开”消息响应函数。可用“Ctrl+W”打开类向导对话框,选择视图类中的打开文件ID号,选择COMMAND命令类型,点击“Add Function”按钮,选择默认的函数名,进入该函数,键入如下代码行,进行读图像: CString strFileName; static char szFilter[]=BMP文件(*.bmp)|*.bmp||; CFileDialog dlg(TRUE, bmp, NULL,OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, szFilter); if(dlg.DoModal()!=IDOK) return; strFileName=dlg.GetPathName(); (this-GetDocument())-SetTitle(strFileName); if(!dib.LoadBmpFile(strFileName,m_pBitmap,m_dwHeight,m_dwWidth,m_flag)) return; Invalidate(true); 4、在视图类的OnDraw函数中加如下代码显示图像: RECT rectDoc; GetClientRect(rectDoc); CSize pageSize(rectDoc.right, rectDoc.bottom); CSize lineSize(100,1); CSize docSize(0,0); RECT rect; GetClientRect(rect); BYTE *pImageDisp = NULL; BITMAPINFO *pBmpInfo = NULL; //设置在指定设备内容中(显卡内存)的拉伸模式 pDC-SetStretchBltMode(COLORONCOLOR); if(m_pBitmap) { dib.TransToBmp(m_dwHeight, m_dwWidth, m_pBitmap, pImageDisp, m_flag); dib.CreateBITMAPINFO(pBmpInfo, m_dwHeight, m_dwWidth, m_flag); //拷贝内存数据到显示器 StretchDIBits(pDC-GetSafeHdc(), rect.left, rect.top, m_dwWidth, m_dwHeight, 0,0, m_dwWidth, m_dwHeight, pImageDisp, pBmpInfo, DIB_RGB_COLORS, SRCCOPY);

您可能关注的文档

文档评论(0)

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

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

1亿VIP精品文档

相关文档