Basic plotting control - ILPanel
All plot controls internally use the one and only plot panel: ILPanel. Those ILPanels basically show the universe of numeric data in a cube.
The data limits of the cube is determined by the data limits of its graphs. An arbitrary number of graphs can get added to a panel, each showing the graphical representation of a numeric object
like a vector (ILPlot2DGraph) or a matrix (ILSurfaceGraph, ILImageSCGraph).
The panels data limits are visualized by axes having ticks, tick labels, corresponding grid lines and axis labels. The panel automatically arranges all components optimal in a way, that all information is always readable - no matter, which position the camera has.

In addition to all common member of the ILPanel's base class System.Windows.Forms.Control,
ILPanel provide the following important new members. They are used to access and configure ILPanel elements and
to control the behavior of the panel.
| member | type | purpose |
|---|---|---|
Axes | ILNumerics.Drawing. Collections. ILAxisCollection | Gives access to all 3 axis and its properties. |
BackgroundFilled | bool | Determines if background of the rendering cube will be filled with the CubeBackgroundColor. |
Camera | ILNumerics.ILViewport | Location of the camera looking at the scene. Used to rotate/zoom the scene. |
ClipViewData | bool | Determine, if the graphs will be draw only inside the unit cube or (on zooming) also outside the unit cube. |
BackColorCube | System.Drawing.Color | Controls the color of the drawing cube |
DrawInactive | bool | Determine, if the control will always be drawn, even if it does not own the focus. |
GraphicDeviceType | ILNumerics.Drawing. GraphicDeviceType | The type of the underlying graphics device (readonly). |
Graphs | ILNumerics.Drawing. Collections. ILGraphCollection | Manages and give access to all graphs - the actual visual representation of numeric data. |
InteractiveMode | ILNumerics.Drawing. InteractiveModes | Controls how the panel is reacting on mouse interaction: Rotation/ zooming |
Limits | ILNumerics.Drawing. ILClippingData | Controls the visible view limits for all graphs in the panel. |
Projection | ILNumerics.Drawing. Projection | Controls the projection of the scene (perspective/orthographic) |
SelectionRectangle | System.Drawing.Color | Determine the line properties for selection rectangles, if such an rectangle is dragged with the mouse (on some interaction modes only). |
TextRendererManager | ILNumerics.Drawing. TextRenderer. ILTextRendererManager | Gives access to available (graphic device specific) text rendering methods. A plugin mechanism enables those text renderer to be extended by own implementations. |
Creating ILPanel controls by code
Since ILPanel is an abstract control class,
it is created by use of factory patterns, which in turn are provided by the static ILPanel.Create() method. The following example shows how to create ILPanel objects programmatically. The
panel is then resized and added to the Controls collection of an existing form. The code can be executed
in context of an existing Windows.Forms.Form. Make sure you have included all neccessary libraries, like described here.
using ILNumerics.Drawing;
using ILNumerics.Drawing.Controls;
...
ILPanel panel = ILPanel.Create();
panel.SetBounds(100,100,500,400);
// expecting this code to run in the context of a form
this.Controls.Add(panel);
...
This will create an empty ILPanel. The control uses OpenGL for plotting. So far, no graphs have been added, so the panel only shows an empty box. However, we can already rotate the box with the mouse.
ILPanel is an abstract base class, it currently is not possible to add ILPanel by dragging it from the toolbox onto a form in Microsoft Visual Studio. This is possible with the next higher level control: ILSubfigure.