欢迎来到天天文库
浏览记录
ID:40571805
大小:37.97 KB
页数:4页
时间:2019-08-04
《vtk与MFC联合编程》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、VTK/MFC联合编程(对话框程序)2011-06-1918:10:17
2、分类:VTK
3、标签:vtkmfc
4、字号大中小订阅1首先,建立一个MFC对话框程序,工程名Viewer,删除掉自动生成的.ncb和.sln文件(在下一步用CMake重新生成)2使用CMake进行配置工程的VTK环境,CMakeLists.txt文件如下,需要修改的地方:VTK路径;StdAfx,Viewer,ViewerDlg,Viewer.rc,res/Viewer.rc2则是刚刚建立的工程ImageViewer所自动生成的源文件和资源文件cmake_minimum_required(VERSION2.6)F
5、IND_PACKAGE(VTK)IF(NOTVTK_DIR)MESSAGE(FATAL_ERROR"PleasesetVTK_DIR.")ENDIF(NOTVTK_DIR)INCLUDE(${VTK_USE_FILE})INCLUDE("D:/VTK-5.6/vtk-5.6.1/GUISupport/MFC/VTKMFCSettings.cmake")IF(VTK_MFC_DELAYLOAD_VTK_DLLS)VTK_MFC_ADD_DELAYLOAD_FLAGS(CMAKE_EXE_LINKER_FLAGSvtkMFC.dllvtkRendering.dllvtkIO.dllvt
6、kFiltering.dllvtkCommon.dll)ENDIF(VTK_MFC_DELAYLOAD_VTK_DLLS)SET(vtkDLG_SRCSStdAfxViewerViewerDlgViewer.rcres/Viewer.rc2)ADD_EXECUTABLE(vtkDLGWIN32${vtkDLG_SRCS})IF(VTK_MFC_EXTRA_LIBS)TARGET_LINK_LIBRARIES(vtkDLG${VTK_MFC_EXTRA_LIBS})ENDIF(VTK_MFC_EXTRA_LIBS)TARGET_LINK_LIBRARIES(vtkDLGvtkMFCv
7、tkRenderingvtkIOvtkFilteringvtkCommon)3Viewer程序,直接用对话框作为显示图像的窗口,显示一个球(1)在CViewDlg.h头文件中添加成员变量和函数,当然不要忘记先添加include,留意VTK_MFC编程的renWin和iren分别是vtkWin32OpenGLRenderWindow,vtkWin32RenderWindowInteractor,注意区别.private:voidPipeline();vtkRenderer*ren;vtkWin32OpenGLRenderWindow*renWin;vtkWin32RenderWind
8、owInteractor*iren;vtkSphereSource*sphere;vtkPolyDataMapper*sphereMapper;vtkActor*sphereActor;(2)考虑VTK管道线,我们按照管道线来向Viewer程序中添加代码,理清思路pipeline:vtkSource->vtkMapper->vtkActor【->vtkProperty】【->vtkLight】【->vtkCamera】->vtkRenderer->vtkRenderWindow【->vtkRenderWindowInteractor】A在构造函数中实例化对象CViewerDlg::
9、CViewerDlg(CWnd*pParent/*=NULL*/):CDialog(CViewerDlg::IDD,pParent){m_hIcon=AfxGetApp()->LoadIcon(IDR_MAINFRAME);//实例化对象ren=vtkRenderer::New();renWin=vtkWin32OpenGLRenderWindow::New();iren=vtkWin32RenderWindowInteractor::New();sphere=vtkSphereSource::New();sphereMapper=vtkPolyDataMapper::New();
10、sphereActor=vtkActor::New();}BOnPaint()中添加管道线voidCViewerDlg::OnPaint(){..........................................................else{CDialog::OnPaint();if(!iren->GetInitialized()){renWin->AddRenderer(ren);renWin->SetParentId(this->m_hW
此文档下载收益归作者所有