vtkOrientationMarkerWidget的用法

 下面的代码是添加一个坐标系  

vtkTextProperty tprop = new vtkTextProperty();
   tprop.SetColor(1,1,1);
   tprop.ShadowOff();
   vtkCubeAxesActor2D axes2 = new vtkCubeAxesActor2D();
   axes2.SetInput(cast.GetOutput());
   axes2.SetCamera(panel.GetRenderer().GetActiveCamera());
   axes2.SetFlyModeToOuterEdges();
   axes2.SetFontFactor(1.1);
   axes2.SetAxisLabelTextProperty(tprop);
  
   //axes.SetFontFactor(8);
   panel.GetRenderer().AddViewProp(axes2);

   //   
   // vtkTextActor textActor = new vtkTextActor();
   // textActor.ScaledTextOn();
   // textActor.SetDisplayPosition(90, 50);
   // textActor.SetInput("This is a sphere");
   // textActor.GetPosition2Coordinate().SetCoordinateSystemToNormalizedViewport();
   // textActor.GetPosition2Coordinate().SetValue(0.6, 0.1);
   //
   // vtkTextProperty tprop2 = textActor.GetTextProperty();
   // tprop2.SetFontSize(18);
   // tprop2.SetFontFamilyToArial();
   // tprop2.SetJustificationToCentered();
   // tprop2.BoldOn();
   // tprop2.ItalicOn();
   // tprop2.ShadowOn();
   // tprop2.SetColor(0, 0, 1);
   // panel.GetRenderer().AddActor2D(textActor);

   // vtkCubeSource cubeSrc = new vtkCubeSource();
   // cubeSrc.SetXLength(100);
   // cubeSrc.SetYLength(100);
   // cubeSrc.SetZLength(100);
   //  
   // vtkPolyDataMapper cubeMapper = new vtkPolyDataMapper();
   // cubeMapper.SetInputConnection(cubeSrc.GetOutputPort());

   vtkAnnotatedCubeActor cube = new vtkAnnotatedCubeActor();
   cube.SetXPlusFaceText("R");
   cube.SetXMinusFaceText("L");
   cube.SetYPlusFaceText("A");
   cube.SetYMinusFaceText("P");
   cube.SetZPlusFaceText("I");
   cube.SetZMinusFaceText("S");
   cube.SetXFaceTextRotation(180);
   cube.SetYFaceTextRotation(180);
   cube.SetZFaceTextRotation(-90);

   cube.SetFaceTextScale(0.65);
   cube.GetCubeProperty().SetColor(1, 1, 1);
   cube.GetTextEdgesProperty().SetLineWidth(1);
   cube.GetTextEdgesProperty().SetDiffuse(0);
   cube.GetTextEdgesProperty().SetAmbient(1);
   cube.GetTextEdgesProperty().SetColor(0, 0, 0);
   //    
   //    
   cube.GetXPlusFaceProperty().SetColor(0, 0, 0);
   cube.GetXPlusFaceProperty().SetInterpolationToFlat();

   cube.GetXMinusFaceProperty().SetColor(0, 0, 0);
   cube.GetXMinusFaceProperty().SetInterpolationToFlat();
   //    
   cube.GetYPlusFaceProperty().SetColor(0, 0, 0);
   cube.GetYPlusFaceProperty().SetInterpolationToFlat();
   //   
   cube.GetYMinusFaceProperty().SetColor(0, 0, 0);
   cube.GetYMinusFaceProperty().SetInterpolationToFlat();
   //    
   cube.GetZPlusFaceProperty().SetColor(0, 0, 0);
   cube.GetZPlusFaceProperty().SetInterpolationToFlat();
   //    
   cube.GetZMinusFaceProperty().SetColor(0, 0, 0);
   cube.GetZMinusFaceProperty().SetInterpolationToFlat();

   vtkAxesActor axes = new vtkAxesActor();
   axes.SetShaftTypeToCylinder();
   axes.SetXAxisLabelText("x");
   axes.SetYAxisLabelText("y");
   axes.SetZAxisLabelText("z");
   axes.SetTotalLength(1.5, 1.5, 1.5);
   vtkTextProperty tprop4 = new vtkTextProperty();
   // tprop.ItalicOn();
   tprop4.ShadowOn();
   tprop4.SetFontFamilyToArial();

   // tprop.SetFontFamilyToTimes();
   axes.GetXAxisCaptionActor2D().SetCaptionTextProperty(tprop4);
   //
   vtkTextProperty tprop2 = new vtkTextProperty();
   tprop2.ShallowCopy(tprop4);
   axes.GetYAxisCaptionActor2D().SetCaptionTextProperty(tprop2);
   //    
   vtkTextProperty tprop3 = new vtkTextProperty();
   tprop3.ShallowCopy(tprop4);
   axes.GetZAxisCaptionActor2D().SetCaptionTextProperty(tprop3);

   vtkPropAssembly assembly = new vtkPropAssembly();

   assembly.AddPart(cube);
   assembly.AddPart(axes);

// vtkOrientationMarkerWidget产生的对象和原来的窗口不是在一个层次上,
   // 并且自动激活了该对象的单击和移动事件,也就是可以改变这个对象的
   // 大小和位置
   vtkOrientationMarkerWidget widget = new vtkOrientationMarkerWidget();
   widget.SetOutlineColor(0, 0, 0);
   widget.SetOrientationMarker(assembly); // 必须:传一个vtkProp对象
   widget.SetInteractor(panel.getIren());// 必须:传一个交互对象
   widget.SetViewport(0.8, 0.0, 1, 0.2);
   widget.SetEnabled(1);
   widget.InteractiveOff();
   // widget.InteractiveOn();
   // widget.SetOutlineColor(0, 0, 0);

注意:   widget.EnabledOn();
这个一定要写,不然切换或者刷新的时候,widget就不动了。

 

本文来源:http://hi.baidu.com/onlywater/item/b46e497bef8bbf3f714423c0

你可能感兴趣的:(C++,c)