Industrial Data Science
in C# and .NET:
Simple. Fast. Reliable.
 
 

ILNumerics - Technical Computing

Modern High Performance Tools for Technical

Computing and Visualization in Industry and Science

tgt

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: 

Even more pre-configured plots and extensions are found in this 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.