We estimate that we have spent 3-man years of effort on building and supporting SciChart to-date. About 50% of our time is spent supporting people on the forums and on email, so these editions represent incredible value! Just think, how much do you pay your developers by the hour? And what price can you put on support that helps you build your applications?
We have also announced site-license and renewal pricing. Renewals are offered to customers about to end their 1-year support window and includes a steep discount on your first-year license fee, plus any multi-purchase discount for bulk licensing.
We are actively investing in improving SciChart, both in terms of features, speed, performance and also usability. Over the next year expect to see frequent releases (as we have done for the past 16 months) and our usual high-quality response to issues reported on the forums.
The second optimisation was memory allocation when calling dataSeries.appendRange() which was also a little too conservative. Adjusting the memory resizing algorithm led to better overall performance when creating or updating charts with huge datasets. The result of these two changes is a near 100% performance improvement when working with big-data charts. A couple of numbers below:
We are continuing to monitor the situation and consider alternatives. Our own development builds are predicated on MyGet feeds being up so this is impacting us as much as it is customers that use the feeds.
Whether or not the situation resolves soon we will need to look for alternatives and migrate away from MyGet. Once we do we will notify our users and modify documentation to show alternate package sources.
Each instance of the SciChart.js 3D Engine has a number of buffers which grow up to a maximum size when used. The max size of buffers if all features of SciChart.js are used could be 80MBytes of memory per engine instance. You can now limit the size of these buffers by setting the following property. Lower values will reduce performance slightly but will also lower memory usage. Default value is 8192kbytes and up to 10 buffers are created. Suggest experimenting with values down to (but not below) 1024kb in memory constrained applications.
Totally reworked positioning of Axis Labels and Axis Titles in SciChart 3D in order to provide better experience. Multiple cases of labels and titles overlapping have been resolved with the new positioning system:
Added the AxisTitleOrientation and TickLabelOrientation properties to the Axis3D class. They allow to specify desired orientation for the Axis Title and Axis Labels: Auto, Horizontal, Vertical (Vertical is not available for Axis Labels). Vertical and Horizontal orientation modes are relative to the screen boundaries:
Axis Cube Planes can be hidden via the AxisPlanes API, which is represented by three static classes ZxAxisPlane, XyAxisPlane, ZyAxisPlane in SciChart.Charting3D.Visuals.AxisLabels namespace. The classes define AxisPlaneVisibilityMode and IsPlaneVisible attached properties. They allow configuring visibility for individual planes of the 3D Axis Cube by specifying whether an Axis Plane should appear by setting the IsPlaneVisible property and also choosing the visible side of the Axis Plane via the AxisPlaneVisibilityMode property. This side visibility setting has three options: Negative, Positive or Auto, which correspond to the directions of World Coordinates in SciChart 3D.
The new API allows for improving startup speed of applications that use SciChart with VisualXccelerator renderer and provides more control over the Engine life time. Specifically, it is possible to start/restart the engine, choose when to stop it and inspect its status and configuration options during the runtime.
For example, this API is used to configure the VisualXccelerator Engine in the Bootstrapper of SciChart Examples Demo, as shown in the code snippet below. The full source code can be found in Sandbox on our GitHub:
The VisualXccelerator renderer now supports multiple UI threads. We reworked SciChart API on the C# side that was used to control the VisualXccelerator Engine, adding appropriate synchronization mechanisms and thus allowing multi-threaded rendering. However, please note that underlying VisualXccelerator Engine works in synchronous manner and rendering is still synchronous in the SciChart native code.
This example on SciChart GitHub demonstrates how to create a WPF Application with a couple of Windows, where each Window has its own UI thread. Both Windows show SciChart charts that can be configured to use specific renderer via a Style for SciChartSurface found in App.xaml.
Before SciChart v8, VisualXccelerator Engine that is used for SciChart 3D and hardware-accelerated rendering in SciChart 2D did not allow being shared across multiple Application Domains. Since SciChart v8, the engine allows being used in an application that utilizes multiple Application Domains.
Added the IRenderContext2D.MeasureText(string, float, FontFamily, FontWeight, FontStyle) method to the IRenderContext2D API.
It provides the means for measuring text size for the particualr renderer in use. The method should be used together with the IRenderContext2D.DrawText(Point, string, float, FontFamily, FontWeight, FontStyle, Color) method to find the size of a text and determine whether it should be drawn of not.
For example, this is how Heatmap uses these methods to draw text labels in cells:
Added the ExecuteWhen property to ChartModifiers that allows specifying a key modifier. When the key is pressed, ChartModifier will be enabled to execute its action.
This code snippet shows how to specify key modifiers in XAML:
When exporting examples, there is a new option added that allows to reference the latest SciChart packages from NuGet. This is a handy option to start quickly with a new application that uses SciChart, for creating a demo project, or for making a small example to send to our support:
It can be used in performance-demanding scenarios where display of large amount of line series (tens of thousands) is required. The SlimLineRenderableSeries does not derive from the WPF UI types and therefore has an advantage in construction time. This helps to improve chart loading time significantly (can be up to x5 times) in the use-case mentioned above. On the other hand, the drawback of this approach is that SlimLineRenderableSeries cannot participate in Binding and thus may be considered not suitable for MVVM scenarios.
From time to time our customers ask how to make a resolution-independent chart. This is important for use-cases where multiple scaling levels (or displays) have to be supported by an application that contains charts. When at high-scaling levels, default SciChart charts may appear blurry because it relies on raster graphics.
With almost 600k downloads on NuGet, and 3,000 downloads per week on npmjs, and 150k downloads on Maven SciChart continues to grow in popularity. Check out this graph (provided by npmtrends.com) showing the growth in Nuget Package downloads for SciChart WPF.
Our download / GitHub star numbers might not compare to some popular Open Source libraries, but remember the numbers will always be smaller for paid and closed-source libraries. These stats should show steady growth in user base and give you confidence when choosing our solutions.
On priority support, the average time to first response was slightly longer than the 24-hours we strive for, however, customer satisfaction remains high, with the following ratings (result of user survey after support ticket closed).
One last thing I wanted to talk about. As well as focussing on commercial success we are committed to supporting research & development. For example: new medical advancements, cancer research and more through our free educational licensing program. If you want to take advantage of our educational licensing you can just ask.
In the last year we gave away 33 licenses of SciChart WPF, JS, iOS and Android worth $50,000 to universities & non-profit medical research organisations. Plus, we made the community-license version of SciChart.js meaning it can now be used in non-profit applications.
Neurorestore, a swiss non-profit research organisation, developed implants with precise electro-stimulation implants to allow paralysed patients with severed spine injury to walk again. Watch the video below to see an overview of their incredible research. SciChart makes a cameo appearance at 2m46s!
Neurorestore contacted us to say that SciChart WPF had been used to visualise waveforms provided by the electrostimulation modules during research. Their application is visible in the video above at 2m46s and below, right.
This new microscope is designed to be much faster and produce higher quality images than current models. It uses a special design with custom optics to scan large areas quickly and with great detail, making it practical for analyzing biological samples like tissues without needing special labels or dyes.
This incredible advancement will benefit cancer research by enabling rapid, detailed, and non-invasive imaging of tissues at a molecular level, facilitating better understanding and diagnosis of cancerous changes.
For projects like these two we will gladly donate SciChart licenses under our educational licensing program and we are immensely proud to be able to facilitate this research, and help drive science & technology forward.
Thank you to all our customers who have supported us this year, reviewed us, encouraged us and of course purchased from us. We hope to make you very pleased about your purchasing decisions in the coming 12 months!
93ddb68554