1.4.5 使用ImgCenterDib进行图像可视化编程(www.cppentry.com)(1)
为了后续编程(www.cppentry.com)算法的需要,本节采用多文档应用程序实现图像的可视化编程(www.cppentry.com)。该应用程序在工程chap1_5中。
(1)利用多文档框架生成向导生成一个多文档应用程序chap1_5。
(2)将文件“ImgCenterDib.h”和“ImgCenterDib.cpp”加入工程。
(3)在文档类头文件中把“ImgCenterDib.h”头文件包含进来,并在CChap1_5Doc文档类定义一个私有属性的ImgCenterDib类对象m_dib,用来为打开的BMP文件创建一个ImgCenterDib类对象。
private: ImgCenterDib m_dib; |
并定义实现一个公有函数GetPDib(),用来返回m_dib的指针,为视图类访问文档类m_dib数据提供支持。
ImgCenterDib *GetPDib() { return &m_dib; }
} |
(4)在文件“chap1_5View.cpp”中把“ImgCenterDib.h”头文件包含进来,并改写OnDraw()函数如下:
void CChap1_5View::OnDraw(CDC* pDC) { //获取文档类指针 CChap1_5Doc* pDoc = GetDocument(); //返回m_dib的指针 ImgCenterDib *pDib=pDoc->GetPDib(); //获取DIB的尺寸 CSize sizeFileDib = pDib->GetDimensions(); //显示DIB pDib->Draw(pDC, CPoint(0, 0), sizeFileDib); } |
(5)根据DIB的尺寸设置视图窗口大小。
void CChap1_5View::OnInitialUpdate() { CScrollView::OnInitialUpdate(); //获取文档类指针 CChap1_5Doc* pDoc = GetDocument(); //获取DIB的指针 ImgCenterDib *pDib=pDoc->GetPDib(); //根据DIB尺寸设置视窗大小 if(pDib!=NULL) SetScrollSizes(MM_TEXT, pDib->GetDimensions()); else{ //如果m_dib为空,则设置一个固定的尺寸 CSize sizeTotal; sizeTotal.cx = sizeTotal.cy = 100; SetScrollSizes(MM_TEXT, sizeTotal); } } |
(6)双击ResourceView窗口的String Table,修改第二行的字符串资源如图1-20所示,它保证了打开的文件扩展名为“.bmp”。
|
| (点击查看大图)图1-20 字符串资源修改图示 |
【责任编辑:
夏书 TEL:(010)68476606】