Visualization Engine for .NET (C# and Visual Basic)
ILNumerics Ultimate VS delivers powerful 2D and 3D visualization for C# and .NET. Its rendering engine is purpose-built for interactive technical applications and scientific visualization, with an architecture that has much in common with modern game engines. It handles complex scenes with ease and offers far more flexibility and configurability than typical charting libraries.
The API is clear, consistent, and easy to read, hiding platform quirks and low-level graphics details while still delivering top-tier performance. Visual scenes are defined through a flexible, efficient scene graph, and a rich library of ready-to-use plots and charts lets you build and maintain your code quickly.
As with all of ILNumerics, the Visualization Engine is engineered for speed and developer productivity. Hardware-accelerated rendering and a highly optimized core make it one of the fastest visualization technologies available on .NET — even if others claim the same. Take a closer look and see the difference.
Key features of the 2D & 3D visualization API
Fast, easy start
- Simple setup and intuitive API
- Optimized for scientific plotting: line, surface, and contour plots
High performance
- Full hardware acceleration for maximum rendering speed, even with dynamic scenes
- Efficient memory management and buffer sharing through tight integration with the ILNumerics Computing Engine
Clean architecture & maintainable code
- Simple, efficient scene definition based on a flexible scene graph
- Reusable scenes and an MVC-friendly design for clean, maintainable applications
- Dynamic by design: every element can be updated at runtime
Flexible rendering & platform support
- Native interactive controls for WPF and WinForms
- Multiple rendering backends with robust automatic selection between OpenGL and software rendering
- Support for shaders and a clear, transparent multithreading model
Export & integration
- Offscreen rendering to PNG, JPG, BMP, XML on all platforms supporting .NET
- Vector graphics output (SVG) for high-quality publishing
The Big Picture
In ILNumerics Visualization Engine, you create a visualization based on its scene graph representation. The scene graph is composed out of a small number of relatively simple node types: points, lines, triangles and labels serve as building blocks. Group nodes allow to arrange and manage multiple objects and to assemble them to complex, reusable components. All plot types in ILNumerics are created this way. ILNumerics handles all memory management for you.
A scene contains specialized group nodes, serving as Camera objects. They allow for displaying naturally looking, plain 3D objects and data. For plotting of technical / scientific data a special PlotCube container is provided. It greatly simplifies the rendering of your data in multiple scales and aspect ratios, adds axes and labels, legends, colorbars, interaction and more.
ILNumerics Visualization Engine comes with a large number of predefined plot types. The collection is extended by more advanced plots in the ILNumerics.Drawing2 toolbox. All plots can be combined and their behavior configured arbitrarily.
Project Setup
The ILNumerics Visualization Engine can be used to create static and dynamic /interactive visualizations of your data. Static bitmap or vector images can be created on any platform .NET runs on. The only package required:
- ILNumerics.Drawing - defines all types, basic shapes, scene graph and complex plot types. Platform independent.
Interactivitiy is based on hardware accelerated WPF or WindowsForms controls. Reference the following modules/ nuget packages:
- ILNumerics.Drawing - defines all types, basic shapes, scene graph and fundamental plot types.
- ILNumerics.Drawing.Platforms - for interactive WindowsForms- and WPF controls
Even more pre-configured plots and extensions are found in this toolbox:
- ILNumerics.Drawing2 - more and faster plot types, optional extensions toolbox.
In addition, you can optionally add any computing module required for your algorithms. Typically: ILNumerics.Computing, ILNumerics.numpy, ...)
Visit the Getting Started Guide to learn all details about the setup of a new visualization project.
See: https://ilnumerics.net/first-drawing-module.html
The Panel Controls
The ILNumerics.Drawing.Panel control adds an interactive visualization surface to your .NET app. It comes in two flavours: a WPF control and a WindowsForms control. Both are found in the ILNumerics.Drawing.Platforms module / nuget package and are referenced from the ILNumerics.Drawing.Controls.WPF and ILNumerics.Drawing.Controls.WinForms namespaces, respectively. We recommend to set-up the panel in your project programmatically:
Winforms example
The ILNumerics Panel provides the Scene property. This property holds the complete scene to be rendered and serves as the starting point for configuring your visualizations.
WPF Example
This example corresponds to a minimal WPF application and requires only one ILNumerics module: ILNumerics.Drawing.Platforms. The Panel is easily configured in the XAML part of your window. The scene configuration ist more conveniently done in the code-behind part. Below example uses C#:
Note, that the ILNumerics WPF panel is a real WPF panel. It allows to use other controls to create overlays over the ILNumerics scene. In this example, we create a text block over the surface plot. "IsHitTestVisible" was deactivated to make sure that interactive mouse events are send to the background ILNumerics panel for full interactivity.
The result:
Further Readings:
A quick start guide for the Visualization Engine is also found in our tutorials section. Or you can start with the overview on the scene graph, to learn how to create your own scenes. The section specifically dealing with plotting & charting objects contains another quick start guide, too.
Our examples section hosts a large number of example projects. You can download them and modify their code in order to learn how they work.
