I have an application that is using 20 fastrederableseries for the purpose of high-speed stripcharting. With only one series visible, the chart fails to render at 20ms intervals. It is very sporadic between 20-150 ms. I have searched the forums and completed the following to improve performance:
resamplingmode = mid
antialiasing = false
renderpriority = low
strokethickness = 1 (although this is too small)
None of these changes resolve the stutter or speed limitations. If I move to a different screen where the chart is not located, speed is no longer an issue. I believe the rendering is slowing things down. How can I imporve this?
Chart XAML:
<s:SciChartSurface x:Name="sciStripChart" Padding="400,45,10,5" s:ThemeManager.Theme="ExpressionDark" Margin="0,0,0,0" RenderPriority="Normal">
<s:SciChartSurface.RenderSurface>
<!-- High Quality subpixel rendering -->
<s:HighQualityRenderSurface/>
</s:SciChartSurface.RenderSurface>
<s:SciChartSurface.XAxis>
<s:NumericAxis x:Name="xAxis" AxisTitle="Time (seconds)" AutoRange="Never" DrawMinorGridLines="False" IsStaticAxis="True" TextFormatting="0.#">
</s:NumericAxis>
</s:SciChartSurface.XAxis>
<s:SciChartSurface.YAxis>
<s:NumericAxis x:Name="yAxis" AxisTitle="Awesomeness (A)" AutoRange="Never" DrawMinorGridLines="False" />
</s:SciChartSurface.YAxis>
<s:SciChartSurface.ChartModifier>
<s:ModifierGroup>
</s:ModifierGroup>
</s:SciChartSurface.ChartModifier>
</s:SciChartSurface>
20 data series created in code using this:
// Create a DataSeries and append some data
var dataSeries = new XyDataSeries<double, double>();
// Create a RenderableSeries and ensure DataSeries is set
var renderSeries = new FastLineRenderableSeries
{
StrokeThickness = 1,
AntiAliasing = false,
ResamplingMode = Abt.Controls.SciChart.Numerics.ResamplingMode.Mid,
SeriesColor = fdctCollection[fdctCollection.Count - 1].color,
DataSeries = dataSeries,
};
renderSeries.DataSeries.SeriesName = "Tag " + (z+1);
// Add the new RenderableSeries
sciStripChart.RenderableSeries.Add(renderSeries);
sciStripChart.RenderableSeries[fdctCollection.Count - 1].IsVisible = fdctCollection[fdctCollection.Count - 1].PenEnable;
Attempting to append data and adjust the x-axis every 20 ms:
sciStripChart.RenderableSeries[CurrentPointCount].DataSeries.XValues.Add(CurrentTimeCounter);
sciStripChart.RenderableSeries[CurrentPointCount]DataSeries.YValues.Add(NewYaxisData);
sciStripChart.RenderableSeries[0].XAxis.AnimatedVisibleRange = (new DoubleRange(CurrentTimeCounter- 100, ((CurrentTimeCounter-0.4))));
- Robert Murchison asked 9 years ago
- last active 9 years ago