Learn what's new across releases, with details of features, enhancements, and resolved issues.
Jan
Feb
Mar
Apr
May
Jun
Jul
Aug
Sep
Oct
Nov
Dec
LightningChart .NET v12.1.1Oct 10, 2024
Features
HexagonShape available for Points and Markers - The hexagon shape is now available for the Points (series.PointStyle.Shape) and Markers (Symbol.Shape) properties. Like other geometrical shapes, the Hexagon shape allows body coloring with a two-color gradient, as well as with a separate color for the border. The hexagon shape also supports export to raster/bitmap or vector images.
Improved 3D Interactions - In this release, 3D interactions like zooming, rotation and panning have been improved for objects that render as large surfaces, e.g., SurfaceGridSeries3D, SurfaceMeshSeries3D, and MeshModel. The performance on a mid-level computer will increase two-fold, and when using a high-end graphics card, the speed can be up to 10x faster. Similarly, 2D interactions like zooming and panning will be much faster for the FreeformPointLineSeries when the point count is in millions.
Other Improvements
Large ValueRangePalette Improvement - ValueRangePalette is a property that can be used by line series, intensity series, polar line series, surface 3D, etc. Previously, if the palette had to load more than 20 steps, the chart became slow. Now, the user can feature hundreds of steps in the palette without any performance penalties. However, to create a smooth palette (color bar), you don't need to use hundreds of steps instead, you can use the PaletteType.Gradient with only a few colors that will interpolate in between.
Fixes
Improved VolumeModel binding - While the LightningChart MVVM edition works with VolumeModel, the binding to this class did not work properly. VolumeModel binding errors have now been fixed and overall performance has been improved.
Improved zooming behavior for XY block-line-series - While XY block-series (SampleDataBlockSeries, LiteLineSeries, DigitalLineSeries) greatly improved application performance and reduced memory usage, in certain circumstances they caused AccessViolationException in the past. In particular, when the chart has a lot of points (e.g. 200M for LiteLineSeries) and deep zoom-in is performed. Now the issue has fixed and zooming will not cause AccessViolationException.
ImageLayer (Improves responsiveness) - a new chart layer is introduced for accumulating smaller bitmaps - ImageLayer is very large image layer, which can be gradually filled with smaller images. The accumulation of smaller images is done in the background thread, thus keeping Chart UI thread responsive and fast (for example zooming could be done while images are loaded). While compounding ImageLayer from many smaller bitmaps requires a lot of memory, the chart itself remains very interactive & fast (during and after layer is loaded). On top of ImageLayer all ViewXY series can be rendered. It is possible to create multiple ImageLayers and each layer's visibility can be switched on/off independently.
TransparencyRenderMode property is added to all 3D series - Previously, in version 10.5.1, TransparencyRenderMode property was added to 3D-surface-series and PointLineSeries3D. In the latest version all remaining series also got this feature: BarSeries3D, MeshModels, Polygon3D, VolumeModel and Rectangle3D. When different types of translucent series/objects are rendered in 3D charts, ShaderApproximation option of TransparencyRenderMode should be used. The new feature helps to mitigate artifacts and improve translucent object handling in the chart. This new way to handle translucent surface/lines is available only when the DirectX 11 renderer is used (i.e. RendererDeviceType is either HardwareOnlyD11 or SoftwareOnlyD11).
LightningChart .NET now supports XAML serialization - [BCB] - This means that .NET class XamlWriter can be used to serialize LightningChat object into XAML markup, while .NET class XamlReader can be used to read XAML input and create a LightningChat object. By using XamlWriter.Save() and XamlReader.Load() methods user can save the state of the Chart (save value for the most of properties) and import that state next time user opens the application. As a result of these changes it is perfectly fine to create chart in *.xaml code with non-bindable edition of LightningChart, although if someone needs to bind chart properties, then MVVM edition of LightningChart should be used. Notes: 1) Series Data/Points properties are not serialized. 2) VolumeModel properties are not serialized.
Added IntensityGridSeriesPolar series type to ViewPolar - [BCB] - IntensityGridSeriesPolar is similar to intensity grid series in XY chart. IntensityGrid allows visualizing M x N array of nodes, colored by assigned value-range palette. The colors between the nodes are interpolated. IntensityGridSeriesPolar is an evenly spaced in Polar space. The data is stored in Data property as two-dimensional array of doubles [[Angle, Amplitude]]. MinimumAmplitude and MaximumAmplitude properties define amplitude range grid should be fitted, while BeginAngle and EndAngle set range for the angles.
Improvements
Made ClipAreas utilization more robust - Previously ClipAreas maybe rendered incorrectly or even throw out-of-memory exception, if End smaller than Begin value or ranges are not in order. Now it is fixed by making ClipAreas utilization more robust.
Improved look of ZoomBar control - In version 11.0.1 change of ColorTheme could make ZoomBar's Annotation Box opaque. Now it is fixed.
ViolinPlot custom-control added to WinForms edition of LightningChart - Build-in custom-controls ViolinPlot was added to LightningChart non-bindable WPF edition in version 10.4.1. In v11.0.1 ViolinPlot was partially added to WinForms edition of library, only .NET 6 build. Now ViolinPlot is added to all WinForms edition (.NET 4 and .NET 6 builds).
Now IntensityGridSeries and graph-border fitting YAxis height correctly - Previously, auto-fitted IntensityGridSeries was stretched 1 px too short (at the top and at the bottom). In addition, height of ViewXY Border was 1 px too long (at the top and at the bottom). Now IntensityGridSeries border and ViewXY border are the same length as YAxis. They are also aligned with corresponding YAxis in segmented/stacked YAxesLayout. IntensityGrid series should now fill whole graph area when rendering. Previously there were one pixel gaps on top and bottom near border.
LegendBox texts and CheckBoxes positioning and sizing improved - Previously (in ViewXY), when SeriesTitleFont was much bigger than CheckBox, those two are not aligned by center. Now it is centered as with other size changes in Legendbox. In addition, gap between LegendBox titles in Polar and 3D views is reduced (to be similar to XY).
DataCursor got more properties to customize its colors - [BCB] - Now DataCursor for all views (XY, 3D, Polar or Smith) has Configuration property tree. There user can find properties to control color, style and visibility of label for each axis independently. The default text color is Series.Title.Color, default label's fill color is tracked pixel color and default label's border color is white.
Added Indexed8 bitmap format support - LightningChart can now handle images with Indexed8 format directly (without conversion). This will save memory and increase speed.
Fixes
Fixes:
SeriesEventMarkers rendered with GDI are now obeying ClipInsideGraph - Previously SeriesEventMarkers denoted as clipped were rendered outside graph area in vector format output (emf/svg/wmf).
Fixed DataCursor 3D serialization error - Previously, then WinForms control was dragged from Visual Studio Toolbox and View3D.DataCursor.Visible = True, the application would crash on start (Null Reference Exception).
DataCursor.SnapToNearestDataPoint now works with SampleDataSeries - Previously DataCursor would not track SampleDataSeries if SnapToNearestDataPoint is enabled.
IntensityGridSeries now exported to vector format without errors - File export to EMF/SVG format was missing IntensityGridSeries, if chart-image size was changed. SaveToFile() or SaveToStream() method gave the same (incorrect) result. This particular error appeared in LightningChart version 10.4.1 and 10.5.1.
Fixed PolygonSeries on logarithmic axis graphical glitch - Previously PolygonSeries looked strange when having logarithmic axis (in particular when Polygon's edges make sharp angles). For example, border and fill were a bit off.
Fixed occasional wrong symbol/shape rotation - Previously, some of rotation angles could be incorrectly estimated. For example, for symbol/shape Angle 180 deg, the result could be 0 deg instead (in vector format image output).
Bindable FirstSampleTimeStamp property properly update for SampleDataBlockSeries - Previously, once points deleted by viewXY.DropOldSeriesData or directly by DeleteSamplesBeforeX() method, the SampleDataBlockSeries FirstSampleTimeStamp property was not properly updated in bindable edition of library. As a result reading FirstSampleTimeStamp value would give wrong result, although internally rendering goes fine.
Fixed possible crash with SampleDataBlockSeries - Previously, if SampleDataBlockSeries collection had a mix of visible and hidden series, then chart would crash when DeleteSamplesBeforeX() method was called (indirectly also when ViewXY.DropOldSeriesData properties is enabled).
Bindable marker.Label.Font properties now updated correctly - Previously, setting bindable (MVVM edition) marker.Label.Font properties (like Size, Family etc.) had no effect for rendering result.
Bindable BlockSeries' PointCount/BitCount property now updated correctly - Previously, calling Clear() method for bindable (MVVM edition) BlockSeries' (like SampleDataBlockSeries or DigitalLineSeries) failed to reset properties PointCount/BitCount. Therefore, reading this property in bindable edition of Chart gave incorrect result.
Fixed possible errors when running several Chart export command in sequence - Previously running several Chart export commands in a sequence could cause errors (e.g. rendering error, undisposed objects or raised exception).
Backwards Compatibility Breaks - API changes:
DataCursor got more properties to customize its colors - Some of DataCursor properties at ViewPolar & ViewSmith has been renamed: * renamed "Configure" -> "Configuration"; * word 'Dynamic' replaced with 'UseSeries'. E.g. AngleLabelDynamicColor -> AngleLabelUseSeriesColor; * to clarify renamed '...BorderColor' properties to '...LabelBorderColor'. E.g. AngleBorderColor -> AngleLabelBorderColor; From DataCursor base class (all Views) properties removed (replaced with more specific properties in DataCursor.Configuration): * LabelUseSeriesColor and LabelFillColor.
LightningChart .NET now supports XAML serialization - Changes may effect how user can interact with all List properties in WinForm or non-bindable WPF edition of LightningChart. There are around 60 such properties in the library (e.g. XAxes, SampleDataBlockSeries, SeriesEventMarkers, CustomTicks etc.). In most cases (e.g. adding to or removing from the list) users don't need to change anything in the application's code. However, if a user wants to address such a property as (a whole) a collection, then instead of creating type List, one should create TypeNameList class object. For example, instead of List ticks = new List(); should be CustomAxisTickList ticks = new CustomAxisTickList(); In addition, namespace change for ThemeBasics: LightningChart.ThemeBasics -> ThemeBasics.
Added IntensityGridSeriesPolar series type to ViewPolar - Due to the changes in class inheritance in some Polar series, AreaSeriesPolar and PointLineSeries polar do not include AllowDragging property anymore. Also, it had no implementation before, so it had no use anyway.
In the previous versions of LightningChart .NET, the .NET target framework was 4.6.2 or earlier. But, in this release, LightningChart .NET will be targeting Microsoft .NET Framework 4.8 and .NET 6.0. The new built editions will be available for:
WinForms.
WPF non-bindable.
MVVM bindable version of WPF.
.NET Interactive Examples App
Improved the LightningChart .NET Interactive Examples app. You can now extract example code as .NET 6.0 projects.
Example code can be extracted for .NET Framework 4.8 or 6.0 in 7 different types for WinForms, WPF and MVVM (bindable), and UWP.
The examples have been polished, the code has been cleared, and some errors have been fixed.
Improved DPI awareness
Per-monitor DPI awareness is now handled better (for WPF and WinForms) in regards to text rendering, especially in the .NET 6.0 targeting build of LightningChart.
Assemblies Names and Namespaces
The names of assemblies (DLL names) and namespaces in the LightningChart library has been streamlined. This change helps distinguish between different builds: the 'NET4' affix now signifies the .NET Framework 4.8 build, while the 'NET6' affix corresponds to the .NET 6.0 build. Additionally, the 'Arction' affix has been removed from the library's names.