/********************************************************************** 文件名: 8.1_ObserverCommandDemo2.cpp Copyright (c) 张晓东, 罗火灵. All rights reserved. 更多信息请访问: http://www.vtkchina.org (VTK中国) http://blog.csdn.net/www_doling_net (东灵工作室) **********************************************************************/ #include #include #include #include #include #include #include #include #include #include #include #include //第一步 class vtkMyCallback : public vtkCommand { public: static vtkMyCallback *New() { return new vtkMyCallback; } void SetObject(vtkConeSource* cone) { m_Cone = cone; } virtual void Execute(vtkObject *caller, unsigned long eventId, void* callData) { std::cout<<"Left button pressed.\n" <<"The Height: "<GetHeight()<<"\n" <<"The Radius: "<GetRadius()< cone = vtkSmartPointer::New(); cone->SetHeight( 3.0 ); cone->SetRadius( 1.0 ); cone->SetResolution( 10 ); vtkSmartPointer coneMapper = vtkSmartPointer::New(); coneMapper->SetInputConnection( cone->GetOutputPort() ); vtkSmartPointer coneActor = vtkSmartPointer::New(); coneActor->SetMapper( coneMapper ); vtkSmartPointer ren1= vtkSmartPointer::New(); ren1->AddActor( coneActor ); ren1->SetBackground( 1.0, 1.0, 1.0 ); vtkSmartPointer renWin = vtkSmartPointer::New(); renWin->AddRenderer( ren1 ); renWin->SetSize( 640, 480 ); renWin->Render(); renWin->SetWindowName("ObserverCommandDemo2"); vtkSmartPointer iren = vtkSmartPointer::New(); iren->SetRenderWindow(renWin); vtkSmartPointer style = vtkSmartPointer::New(); iren->SetInteractorStyle(style); //第二步 vtkSmartPointer callback = vtkSmartPointer::New(); callback->SetObject(cone); //第三步 iren->AddObserver(vtkCommand::LeftButtonPressEvent, callback); iren->Initialize(); iren->Start(); return EXIT_SUCCESS; }