Pre loader

Zoom to show all before exporting to image

Welcome to the SciChart Forums!

  • Please read our Question Asking Guidelines for how to format a good question
  • Some reputation is required to post answers. Get up-voted to avoid the spam filter!
  • We welcome community answers and upvotes. Every Q&A improves SciChart for everyone

WPF Forums | JavaScript Forums | Android Forums | iOS Forums

Answered
0
0

I’m trying to make sure I can get the full extents of the image before converting to something is useful for inclusion in a report; however, when I run the following code the image is not showing the entire zoomed out chart. The chart is however zoomed out when this function is complete.

Dispatcher.Invoke(() => CrosslineGraph.DoseChart.ZoomExtents());           
        BitmapSource bitmap = CrosslineGraph.DoseChart.ExportToBitmapSource();
        byte[] bytes;

        using (MemoryStream stream = new MemoryStream())
        {
            BitmapEncoder encoder = new PngBitmapEncoder();
            encoder.Frames.Add(BitmapFrame.Create(bitmap));
            encoder.Save(stream);
            bytes = stream.ToArray();
        }
Version
5.2.1.11757
  • You must to post comments
Best Answer
1
0

Because you’re exporting you will need to set SciChartSurface.RenderPriority=Immediate when changing your properties so that the chart will draw immediately, before export.

I would suggest something like this

try
{
    sciChartSurface.RenderPriority = RenderPriority.Immediate;
    sciChartSurface.ZoomExtents();
    var bitmap = sciChartSurface.ExportToBitmapSource();
}
finally
{
    sciChartSurface.RenderPriority = RenderPriority.Normal;
}

Be advised, RenderPriority.Immediate means ‘redraw on anything changed, properties, styles, data’ and will make your application extremely slow if you forget to set it back to Normal.

  • Chris Kirkman
    I have more than one chart in my UI, and they are on separate tabs. As soon as I call .ExportToBitmapSource() for one of the charts that is not shown (it’s tab is not selected) an exception is thrown… UIElement.Measure(availableSize) cannot be called with NaN size. Is there a way around this?
  • You must to post comments
Showing 1 result
Your Answer

Please first to submit.

Try SciChart Today

Start a trial and discover why we are the choice
of demanding developers worldwide

Start TrialCase Studies