基于vtk的mfc应用程序开发

基于vtk的mfc应用程序开发

ID:6710692

大小:248.07 KB

页数:12页

时间:2018-01-23

基于vtk的mfc应用程序开发_第1页
基于vtk的mfc应用程序开发_第2页
基于vtk的mfc应用程序开发_第3页
基于vtk的mfc应用程序开发_第4页
基于vtk的mfc应用程序开发_第5页
资源描述:

《基于vtk的mfc应用程序开发》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

1、基于VTK的MFC应用程序开发(3)分类: VTK应用示例2013-05-1713:37 1681人阅读 评论(17) 收藏 举报目录(?)[+]之前介绍了基于VTK的单文档应用程序开发,并以图像重采样为例,实现了一个简单的图像重采样的应用程序。对于多文档应用程序,与单文档应用程序基本一致,这里就不再讲述。对话框应用程序是MFC应用程序中一个使用非常广泛的框架,本节就以医学图像可视化中常用的四视图框架程序的实现为例,讲述基于VTK的对话框应用程序开发。1. 利用VS和CMake建立一个空的MFC对话框程序框架。利用VS创建一个MFC对话框工程

2、vtkDialog,删除其中的工程文件,完成CMakeLists.txt文件,并添加相应的代码文件和链接VTK动态库,利用CMake配置完毕后,打开生成的工程文件vtkDialog.sln,编译执行,即可得到一个空的对话框程序。其中CvtkDialogDlg为该程序的主对话框类。2. 设计用户界面,添加相应的控件本程序需要实现的功能有(1)图像读取和管理;(2)图像切分和浏览。一个常见的医学图像可视化程序,包括四个视图,横断面视图,矢状面视图,冠状面视图和三维视图。因此,基于以上设计,我们添加一个树控件,MFC中对应的控件类为CTreeCtr

3、l。树控件是最常用的文件管理控件,能够方便的对文件进行层次化组织和管理。四视图的实现则需要四个控件,这里我们选择CStatic控件,将其添加至对话框窗口中。添加完毕后,为控件生成相应的Control类型的变量。按照上述设计,需要在CStatic中显示图像。这就需要对CStatic类继续扩展,使其支持VTK可视化管线。一个可行的方法是,设计一个CStatic类的子类,并在该子类中实现VTK可视化管线和处理。3. 实现VTK图像可视化控件3.1首先添加一个MFC类CvtkView其基类选择为CStatic,并添加至CMakeLists.txt文件

4、中进行管理。3.2重载CvtkView类PreSubclassWindow()函数和OnPaint()函数PreSubclassWindow函数负责创建VTK可视化管线,OnPaint()函数负责客户区内场景渲染。3.3建立VTK可视化管线VTK可视化管线在第二章中已经介绍过,其中最主要包含vtkAcor,vtkRenderer,vtkRenderWindow,vtkRenderWindowInteractor四个部分。当然根据需要还可以设置vtkRenderWindowInteractorStyle,以及光照,材质,颜色等。在CvtkVie

5、w类头文件中定义相关对象,并在PreSubclassWindow函数中实例化和构建可视化管线,代码如下。[cpp] viewplaincopy1.void CvtkView::PreSubclassWindow()  2.{  3.    // TODO: Add your specialized code here and/or call the base class  4.    CRect rect;  5.    GetClientRect(rect);  6.  7.    m_Renderer = vtkSmartPointer<

6、vtkRenderer>::New();  8.      9.    m_RenderWindow = vtkSmartPointer::New();  10.    m_RenderWindow->SetParentId(this->m_hWnd);  11.    m_RenderWindow->SetSize(rect.Width(), rect.Height());  12.    m_RenderWindow->AddRenderer(m_Renderer);  13.  14.    if(m_

7、RenderWindow->GetInteractor() == NULL)  15.    {  16.        vtkSmartPointer RenderWindowInteractor =  17.            vtkSmartPointer::New();  18.        RenderWindowInteractor->SetRenderWindow(m_RenderWindow);  19.     

8、   RenderWindowInteractor->Initialize();  20.    }  21.  22.    m_RenderWindow->St

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。