根据http://www.vislab.cn/bbs/viewthread.php?tid=223中提供的代码,实现了其效果。
- #include "vtkDistanceWidget.h"
- #include "vtkSphereSource.h"
- #include "vtkPolyDataMapper.h"
- #include "vtkActor.h"
- #include "vtkRenderer.h"
- #include "vtkRenderWindow.h"
- #include "vtkRenderWindowInteractor.h"
- #include "vtkCommand.h"
- #include "vtkInteractorEventRecorder.h"
- #include "vtkRegressionTestImage.h"
- #include "vtkDebugLeaks.h"
- #include "vtkCoordinate.h"
- #include "vtkMath.h"
- #include "vtkHandleWidget.h"
- #include "vtkPointHandleRepresentation2D.h"
- #include "vtkAxisActor2D.h"
- #include "vtkProperty2D.h"
- #include "vtkDistanceRepresentation2D.h"
- ///
- #include "vtkTIFFReader.h"
- #include "vtkImageDataGeometryFilter.h"
- class vtkDistanceCallback : public vtkCommand
- {
- public:
- static vtkDistanceCallback *New()
- { return new vtkDistanceCallback; }
- virtual void Execute(vtkObject *caller, unsigned long, void*);
- vtkDistanceCallback():Renderer(0),RenderWindow(0),DistanceWidget(0),Distance(0) {}
- vtkRenderer *Renderer;
- vtkRenderWindow *RenderWindow;
- vtkDistanceWidget *DistanceWidget;
- vtkDistanceRepresentation2D *Distance;
- };
- void vtkDistanceCallback::Execute(vtkObject*, unsigned long eid, void* callData)
- {
- if ( eid == vtkCommand::InteractionEvent ||
- eid == vtkCommand::EndInteractionEvent )
- {
- double pos1[3], pos2[3];
- // Modify the measure axis
- this->Distance->