vtk与MFC联合编程.doc_第1页
vtk与MFC联合编程.doc_第2页
vtk与MFC联合编程.doc_第3页
vtk与MFC联合编程.doc_第4页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

VTK/MFC联合编程(对话框程序) 2011-06-19 18:10:17| 分类: VTK | 标签:vtk mfc |字号大中小 订阅 1 首先,建立一个MFC对话框程序,工程名Viewer,删除掉自动生成的.ncb和.sln文件(在下一步用CMake重新生成)2 使用CMake进行配置工程的VTK环境,CMakeLists.txt文件如下,需要修改的地方:VTK路径; StdAfx,Viewer,ViewerDlg,Viewer.rc,res/Viewer.rc2 则是刚刚建立的工程ImageViewer所自动生成的源文件和资源文件cmake_minimum_required(VERSION 2.6)FIND_PACKAGE(VTK)IF(NOT VTK_DIR)MESSAGE(FATAL_ERROR Please set VTK_DIR.)ENDIF(NOT VTK_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.dllvtkFiltering.dllvtkCommon.dll)ENDIF(VTK_MFC_DELAYLOAD_VTK_DLLS)SET( vtkDLG_SRCS StdAfxViewerViewerDlgViewer.rcres/Viewer.rc2) ADD_EXECUTABLE(vtkDLG WIN32 $vtkDLG_SRCS)IF(VTK_MFC_EXTRA_LIBS)TARGET_LINK_LIBRARIES(vtkDLG $VTK_MFC_EXTRA_LIBS)ENDIF(VTK_MFC_EXTRA_LIBS)TARGET_LINK_LIBRARIES(vtkDLG vtkMFC vtkRendering vtkIO vtkFiltering vtkCommon)3 Viewer程序,直接用对话框作为显示图像的窗口,显示一个球(1) 在CViewDlg.h头文件中添加成员变量和函数,当然不要忘记先添加include,留意VTK_MFC编程的renWin和iren分别是vtkWin32OpenGLRenderWindow ,vtkWin32RenderWindowInteractor ,注意区别.private:void Pipeline();vtkRenderer *ren;vtkWin32OpenGLRenderWindow *renWin;vtkWin32RenderWindowInteractor *iren;vtkSphereSource *sphere;vtkPolyDataMapper *sphereMapper;vtkActor *sphereActor;(2) 考虑VTK管道线,我们按照管道线来向Viewer程序中添加代码,理清思路pipeline:vtkSource-vtkMapper-vtkActor【-vtkProperty】【-vtkLight】【-vtkCamera】-vtkRenderer-vtkRenderWindow【-vtkRenderWindowInteractor】A 在构造函数中实例化对象CViewerDlg: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();sphereActor = vtkActor:New();B OnPaint()中添加管道线void CViewerDlg:OnPaint().elseCDialog:OnPaint();if (!iren-GetInitialized()renWin-AddRenderer(ren);renWin-SetParentId(this-m_hWnd); /注意这一步,设置绘制窗口iren-SetRenderWindow(renWin);CRect rect;GetClientRect(&rect);iren-Initialize();renWin-SetSize(rect.right-rect.left,rect.bottom-rect.top);ren-ResetCamera();/调用管道线pipeline()Pipeline();renWin-Render();C 当然是该写Pipeline()函数了void CViewerDlg:Pipeline()/创建球sphere-SetRadius(1);sphere-SetThetaResolution(18);sphere-SetPhiResolution(18);sphere-LatLongTessellationOn();sphereMapper-SetInput(sphere-GetOutput();sphereActor-SetMapper(sphereMapper);ren-AddActor(sphereActor);D 最后销毁对象,这里是在关闭对话框的响应函数里实现的void CViewerDlg:OnClose()/ TODO: Add your message handler code here and/or call defaul

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论