Skip to content


# Legend

VTKEx/Java/Visualization/Legend

### Description

vtkLegendBoxActor object is used to associate a symbol with a text string.

The user specifies a vtkPolyData to use as the symbol, and a string associated with the symbol. The actor can then be placed in the scene in the same way that any other vtkActor2D can be used.

Other languages

See (Cxx)

Question

If you have a simple question about this example contact us at VTKExProject If your question is more complex and may require extended discussion, please use the VTK Discourse Forum

### Code

Legend.java

    import vtk.vtkActor;
    import vtk.vtkNamedColors;
    import vtk.vtkNativeLibrary;
    import vtk.vtkPolyDataMapper;
    import vtk.vtkRenderWindow;
    import vtk.vtkRenderWindowInteractor;
    import vtk.vtkRenderer;
    import vtk.vtkSphereSource;
    import vtk.vtkLegendBoxActor;
    import vtk.vtkCubeSource;
    import vtk.vtkPolyData;

    public class Legend
    {
      // -----------------------------------------------------------------
      // Load VTK library and print which library was not properly loaded
      static
      {
        if (!vtkNativeLibrary.LoadAllNativeLibraries())
        {
          for (vtkNativeLibrary lib : vtkNativeLibrary.values())
          {
            if (!lib.IsLoaded())
            {
              System.out.println(lib.GetLibraryName() + " not loaded");
            }
          }
        }
        vtkNativeLibrary.DisableOutputWindow(null);
      }
      // -----------------------------------------------------------------

      public static void main(String s[])
      {
        vtkNamedColors colors = new vtkNamedColors();

        //For boxLegendColor
        double boxLegendColor[] = new double[4];
        //For ballLegendColor
        double ballLegendColor[] = new double[4];
        //Renderer Background Color
        double Bgcolor[] = new double[4];
        //Renderer legend Background Color
        double legendBgcolor[] = new double[4];

        colors.GetColor("Tomato", boxLegendColor);
        colors.GetColor("banana", ballLegendColor);
        colors.GetColor("cyan", Bgcolor);
        colors.GetColor("warm_grey", legendBgcolor);

        vtkSphereSource sphereSource = new vtkSphereSource();
        sphereSource.SetCenter(0.0, 0.0, 0.0);
        sphereSource.SetRadius(5000.0);
        sphereSource.Update();

        vtkPolyData polydata = sphereSource.GetOutput();

        // Create a mapper
        vtkPolyDataMapper mapper = new vtkPolyDataMapper();
        mapper.SetInputData(polydata);

        vtkActor actor = new vtkActor();
        actor.SetMapper(mapper);

        vtkLegendBoxActor legend = new vtkLegendBoxActor();
        legend.SetNumberOfEntries(2);

        vtkCubeSource legendBox = new vtkCubeSource();
        legendBox.Update();
        legend.SetEntry(0, legendBox.GetOutput(), "Box", boxLegendColor);
        legend.SetEntry(1, sphereSource.GetOutput(), "Ball", ballLegendColor);

        // place legend in lower right
        legend.GetPositionCoordinate().SetCoordinateSystemToView();
        legend.GetPositionCoordinate().SetValue(.5, -1.0);

        legend.GetPosition2Coordinate().SetCoordinateSystemToView();
        legend.GetPosition2Coordinate().SetValue(1.0, -0.5);

        legend.UseBackgroundOn();
        legend.SetBackgroundColor(legendBgcolor);

        // Create the renderer, render window and interactor.
        vtkRenderer ren = new vtkRenderer();
        vtkRenderWindow renWin = new vtkRenderWindow();
        renWin.AddRenderer(ren);
        vtkRenderWindowInteractor iren = new vtkRenderWindowInteractor();
        iren.SetRenderWindow(renWin);

        // Visualise
        ren.AddActor(actor);
        ren.AddActor(legend);
        ren.SetBackground(Bgcolor);

        renWin.SetSize(300, 300);
        renWin.Render();

        iren.Initialize();
        iren.Start();
      }
    }