Pre loader

Category: WPF

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

0 votes
7k views

Hi, I am trying to export an XyScatterRenderableSeries based on a XyzDataSeries<double,double,double> to XPS. The coloring is based on the z value and works perfectly in the application itself. The problem is that when exporting all the data and labels are perfectly visible ( no more vertical mirroring etc.), however all points are grey. I do see by setting a breakpoint on the OverridePointMarker below that the palette is used, just don’t see it in the end result. Anyone any tips or ideas what is going wrong?

Part of the Palette Provider;

    public PointPaletteInfo? OverridePointMarker(IRenderableSeries rSeries, int index, IPointMetadata metadata)
    {
        var rxyz = rSeries as XyScatterRenderableSeries;
        var xyz = rxyz?.DataSeries as XyzDataSeries<double, double, double>;
        if (xyz == null) return null;
        var z = xyz.ZValues[index];
        var i = Convert.ToInt32((_colormap.GetUpperBound(0) * z) / _max);
        var c = _colormap[i];
        return new PointPaletteInfo()
        {
            Fill = c,
            Stroke = c
        };
    }

Code to generate the chart in memory and export it to XPS

        var colormap = new ColorMappingAgain((Brush)Resources["DefaultBrush"], 100);
        var x = new ObservableCollection<IRenderableSeries>() {HeatmapSeries};

        foreach (var y in x)
            y.PaletteProvider = colormap;

        var surface = new SciChartSurface()
        {
            RenderSurface = new XamlRenderSurface(),
            ChartTitle = name,
            FontSize = (double) dpi * fontsize / 96,
            XAxes = xAxes,
            YAxes = yAxes,
            RenderableSeries = x,
        };

        foreach (var y in x)
            y.PaletteProvider = colormap;

        SciChart.ExportToFile(@"C:\Temp\again.xps",ExportType.Xps,true);
        SciChart.ExportToFile(@"C:\Temp\again2.xps", ExportType.Xps, false);
0 votes
7k views

I’v tried the latest version[6.5] of SciChart WPF suite and THEN I activated an older version [6.2] in the same computer. Of course, the serial key was left by an ex-colleague. It’s strange that I can activate ver 6.2 and succeed to get a run-time key. But the key cannot be recongnized by the program. It said I didn’t input a run time key in the render surface.
What’ worse, there are no entities rendered in the SciChartSurface. Just show a blank one.

This issue could be reproduced by the following steps:
1. use a trial version of the latest SciChart;
2. activate an older version using an expired license key. [royalty use, right?]

If I reinstall the OS, and use ver 6.2 directly, all works well.

We’ve brought several 6.2 s, I think reinstall OS is not a smart method to solve this. Could it be solved in a more easy way?

  • Niu mag asked 2 years ago
  • last active 2 years ago
1 vote
11k views

I cannot figure out how to setup SciChartSurface so that it would be initialized right away and IsSizeValidForDrawing returned true.

Now I have the special case for the first call to the view with SciChartSurface and I start working with it after receiving SizeChanged event. In this event handler and afterwards IsSizeValidForDrawing gets true and later on all my requests to the view are OK. It’s quite inconvenient.

When does SciChartSurface get resized? What makes it resize?
Which moment does IsSizeValidForDrawing get true?
What should I do to make the size valid after instantiating or receiving first bunch of data ?
How can I make it progmammatically?

This is my xaml:

        <s:SciChartSurface.RenderableSeries>
            <s:FastLineRenderableSeries XAxisId="XAxis1" YAxisId="YAxis1" AntiAliasing="False" />
            <s:FastLineRenderableSeries XAxisId="XAxis2" YAxisId="YAxis2" AntiAliasing="False"  />
            <s:FastLineRenderableSeries XAxisId="XAxis1" YAxisId="YAxis1" AntiAliasing="False" />
            <s:FastLineRenderableSeries XAxisId="XAxis2" YAxisId="YAxis2" AntiAliasing="False" />
            <s:FastLineRenderableSeries XAxisId="XAxis1" YAxisId="YAxis1" AntiAliasing="False"/>
            <s:FastLineRenderableSeries XAxisId="XAxis2" YAxisId="YAxis2" AntiAliasing="False"/>
        </s:SciChartSurface.RenderableSeries>

        <s:SciChartSurface.XAxes>
            <s:NumericAxis Id="XAxis1" />
            <s:NumericAxis Id="XAxis2" />
        </s:SciChartSurface.XAxes>

        <s:SciChartSurface.YAxes>
            <s:NumericAxis Id="YAxis1"  />
            <s:NumericAxis Id="YAxis2" />
        </s:SciChartSurface.YAxes>
    </s:SciChartSurface>

    <Grid Grid.Row="1" x:Name="myOverviews">
        <Grid.RowDefinitions>
            <RowDefinition Height="*" />
            <RowDefinition Height="*" />
        </Grid.RowDefinitions>

        <s:SciChartOverview  Grid.Row="0" 
                    XAxisId="XAxis1"
                    ParentSurface="{Binding ElementName=mySurface}"
                    DataSeries="{Binding ElementName=mySurface, Path=RenderableSeries[4].DataSeries}"
                    SelectedRange="{Binding ElementName=mySurface, Path=XAxes[0].VisibleRange, Mode=TwoWay}"
                    Visibility ="Collapsed"
                    s:ThemeManager.Theme="BlackSteel">
        </s:SciChartOverview>

        <s:SciChartOverview Grid.Row="1" 
                    XAxisId="XAxis2"
                    ParentSurface="{Binding ElementName=mySurface}"
                    DataSeries="{Binding ElementName=mySurface, Path=RenderableSeries[4].DataSeries}"
                    SelectedRange="{Binding ElementName=mySurface, Path=XAxes[1].VisibleRange, Mode=TwoWay}"
                    Visibility ="Collapsed"
                    s:ThemeManager.Theme="BlackSteel">
        </s:SciChartOverview>
    </Grid>

All visibilities besides SciChartSurface are “Collapsed”

SciChart version 3.1.0.5077

Thank you

0 votes
11k views

Hello,

I have a line series with 500k to 8 million data points and I use the StrokePaletteProvider to highlight certain peaks in different colors. But the colors only appear right at a certain zoom level, without zooming in it is a mixture of my default line color and the chosen StrokePaletteProvider color. Is there anything I can do about this?

  • Roland D asked 5 years ago
  • last active 5 years ago
0 votes
21k views

The topic title speaks for itself. Will SciChart ever support non-Sci types like the pie chart?

Thanks…

  • RMittelman asked 12 years ago
  • last active 6 years ago
0 votes
10k views

Good day.

Changing RolloverModifier SourceMode property to AllSeries, AllVisibleSeries and etc. take no effect.
In collection RolloverModifier.SeriesData.SeriesInfo we have only charts, that currently visible in chart field.
Is that bug?

Best regards
Sam

1 vote
16k views

Hello,

I have been working with an application that plots real-time serial data using a FIFO buffer. I have started programming around the ECG-Monitor example as this is exactly what I am creating.

I have a device that broadcasts real-time ECG data via Bluetooth (HC-05), to be exact. I have paired the device and opened a SerialPort in my program to receive the data. My sampling rate is 256 Hz.

When I used a text file to simulate ECG data, it works perfectly well. However, when I use real-time data, there is a delay in charting that increases as the time increases. An easier way to understand this is, the chart continues plotting for a significant period of time even after I have switched off my hardware device.

I have then come to the conclusion that my data is being received at the rate that I want it to, but the plotting gets delayed at an increasing rate as the time increases.

I am currently using the Direct-X rendering type as this gives me a very smooth plot. I receive the data via SerialPort, write to an array and then to the FIFO buffer.

I’m attaching my code for the same.

namespace SciChart.Examples.Examples.SeeFeaturedApplication.ECGMonitor
{
    public class ECGMonitorViewModel : BaseViewModel
    {
    private Timer _timer;
    private IXyDataSeries<double, double> _series0;
    public static double[] _sourceData = new double[50000];
    private int _currentIndex = 0;
    private int _totalIndex = 0;
    private DoubleRange _yVisibleRange;
    private bool _isBeat;
    private int _heartRate;
    private bool _lastBeat;
    private DateTime _lastBeatTime;
    private ICommand _startCommand;
    private ICommand _stopCommand;
    private const double WindowSize = 5.0;
    private const int TimerInterval = 40;
    public static int counter = 0;
    public static SerialPort mySerialPort=new SerialPort("COM3",9600);

    public ECGMonitorViewModel()
    {
        mySerialPort.Open();
        ECGMonitorViewModel.mySerialPort.WriteLine("A");
        ECGMonitorViewModel.mySerialPort.WriteLine("F");

        _series0 = new XyDataSeries<double, double>() { FifoCapacity = 2460, AcceptsUnsortedData = true };

        YVisibleRange = new DoubleRange(-20, 500);
        _startCommand = new ActionCommand(OnExampleEnter);
        _stopCommand = new ActionCommand(OnExampleExit);
    }

    public ICommand StartCommand
    {
        get
        {
            return _startCommand;
        }
    }

    public ICommand StopCommand
    {
        get
        {
            return _stopCommand;
        }
    }

    public IXyDataSeries<double, double> EcgDataSeries
    {
        get
        {
            return _series0;
        }
        set
        {
            _series0 = value;
            OnPropertyChanged("EcgDataSeries");
        }
    }

    public DoubleRange YVisibleRange
    {
        get
        {
            return _yVisibleRange;
        }
        set
        {
            _yVisibleRange = value;
            OnPropertyChanged("YVisibleRange");
        }
    }

    public bool IsBeat
    {
        get
        {
            return _isBeat;
        }
        set
        {
            if (_isBeat != value)
            {
                _isBeat = value;
                OnPropertyChanged("IsBeat");
            }
        }
    }

    public int HeartRate
    {
        get { return _heartRate; }
        set
        {
            _heartRate = value;
            OnPropertyChanged("HeartRate");
        }
    }

    public void OnExampleExit()
    {
        if (_timer != null)
        {
            _timer.Stop();
            _timer.Elapsed -= TimerElapsed;
            _timer = null;
        }
    }

    public void OnExampleEnter()
    {
        _timer = new Timer(TimerInterval) { AutoReset = true };
        _timer.Elapsed += TimerElapsed;
        _timer.Start();
    }

    private void TimerElapsed(object sender, EventArgs e)
    {
        lock (this)
        {
            for (int i = 0; i < 10; i++)
            {
                AppendPoint(250);
            }

            if ((DateTime.Now - _lastBeatTime).TotalMilliseconds < 120) return;

            IsBeat = _series0.YValues[_series0.Count - 3] > 120 ||
                     _series0.YValues[_series0.Count - 5] > 120 ||
                     _series0.YValues[_series0.Count - 8] > 120;

            if (IsBeat && !_lastBeat)
            {
                HeartRate = (int)(60.0 / (DateTime.Now - _lastBeatTime).TotalSeconds);
                _lastBeatTime = DateTime.Now;
            }
        }
    }

    private void AppendPoint(double sampleRate)
    {
        if (_currentIndex >= _sourceData.Length)
        {
            _currentIndex = 0;
        }

        double voltage = _sourceData[_currentIndex];
        double time = _totalIndex / sampleRate %10;

        if(time==0.00)
        {
            voltage = double.NaN;
        }

        _series0.Append(time, voltage);

        _lastBeat = IsBeat;
        _currentIndex++;
        _totalIndex++;
    }

    public static void mySerialPort_DataReceived(object sender, SerialDataReceivedEventArgs e)
    {
        while (mySerialPort.BytesToRead > 0)
        {
            int b;
            b = mySerialPort.ReadByte();
            _sourceData[counter] = b;
            counter++;
        }
    }
}
}

namespace SciChart.Examples.Examples.SeeFeaturedApplication.ECGMonitor
{
    public partial class ECGMonitorView : UserControl
    {
        public ECGMonitorView()
        {
            InitializeComponent();
            ECGMonitorViewModel.mySerialPort.DataReceived += new SerialDataReceivedEventHandler(ECGMonitorViewModel.mySerialPort_DataReceived);
        }
    }
}

The xaml code is as follows,

<UserControl
         xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
         xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
         xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
         xmlns:i="http://schemas.microsoft.com/expression/2010/interactivity"
         xmlns:local="clr-namespace:SciChart.Examples.Examples.SeeFeaturedApplication.ECGMonitor"
         xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
         xmlns:s="http://schemas.abtsoftware.co.uk/scichart"
         xmlns:s3D="http://schemas.abtsoftware.co.uk/scichart3D" xmlns:XamlRasterizer="clr-namespace:SciChart.Drawing.XamlRasterizer;assembly=SciChart.Drawing" x:Class="SciChart.Examples.Examples.SeeFeaturedApplication.ECGMonitor.ECGMonitorView"
         d:DesignHeight="400"
         d:DesignWidth="600"
         mc:Ignorable="d">

<UserControl.Resources>

    <Style TargetType="{x:Type s:RenderSurfaceBase}">
        <Setter Property="Effect">
            <Setter.Value>
                <DropShadowEffect BlurRadius="5"
                                  ShadowDepth="0"
                                  Color="#FFB3E8F6" />
            </Setter.Value>
        </Setter>
    </Style>

    <local:BeatToScaleConverter x:Key="BeatToScaleConverter" />
</UserControl.Resources>

<i:Interaction.Triggers>
    <i:EventTrigger EventName="Loaded">
        <i:InvokeCommandAction Command="{Binding StartCommand}" />
    </i:EventTrigger>
    <i:EventTrigger EventName="Unoaded">
        <i:InvokeCommandAction Command="{Binding StopCommand}" />
    </i:EventTrigger>
</i:Interaction.Triggers>

<Grid>

    <s:SciChartSurface RenderPriority="Low" MaxFrameRate="25" AutoRangeOnStartup="False">

        <s:SciChartSurface.RenderableSeries>
            <s:FastLineRenderableSeries DataSeries="{Binding EcgDataSeries}"
                Stroke="#FFB3E8F6"                                      
                StrokeThickness="2" />
        </s:SciChartSurface.RenderableSeries>

        <s:SciChartSurface.YAxis>
            <s:NumericAxis AxisTitle="Voltage (mV)"
                DrawMinorGridLines="True"
                MaxAutoTicks="5"
                VisibleRange="{Binding YVisibleRange, Mode=TwoWay}" />
        </s:SciChartSurface.YAxis>

        <s:SciChartSurface.XAxis>
            <s:NumericAxis AxisTitle="Seconds (s)" TextFormatting="0.000s" VisibleRange="0, 10" AutoRange="Never"/>
        </s:SciChartSurface.XAxis>

        <s:SciChartSurface.RenderSurface>
            <s3D:Direct3D10RenderSurface/>
        </s:SciChartSurface.RenderSurface>

    </s:SciChartSurface>

    <StackPanel Margin="30,30" Orientation="Horizontal">
        <StackPanel.Effect>
            <DropShadowEffect BlurRadius="5"
                ShadowDepth="0"
                Color="#FFB3E8F6" />
        </StackPanel.Effect>

        <Grid HorizontalAlignment="Left" VerticalAlignment="Top">
            <Canvas x:Name="layer1"
                Width="20"
                Height="20"
                Margin="12,34,10,0">
                <Canvas.RenderTransform>
                    <ScaleTransform CenterX="-6"
                        CenterY="-6"
                        ScaleX="{Binding IsBeat, Converter={StaticResource BeatToScaleConverter}}"
                        ScaleY="{Binding IsBeat, Converter={StaticResource BeatToScaleConverter}}" />
                </Canvas.RenderTransform>
                <Path Data="m 0 0 c -4 -4 -8.866933 -10.79431 -10 -15 0 0 0 -5 5 -5 5 0 5 5 5 5 0 0 0 -5 5 -5 5 0 5.242535 4.02986 5 5 -1 4 -6 11 -10 15 z" Fill="#FFB0E6F4" />
            </Canvas>
        </Grid>

        <TextBlock HorizontalAlignment="Left"
            VerticalAlignment="Top"
            FontFamily="ArialBlack"
            FontSize="36"
            FontWeight="Bold"
            Foreground="#FFB0E6F4"
            Text="{Binding HeartRate}" />
        <TextBlock HorizontalAlignment="Left"
            VerticalAlignment="Top"
            FontFamily="ArialBlack"
            FontSize="36"
            FontWeight="Bold"
            Foreground="#FFB0E6F4"
            Text="BPM" />

    </StackPanel>

    <TextBlock Margin="5"
        HorizontalAlignment="Left"
        VerticalAlignment="Bottom"
        FontSize="9"
        FontStyle="Italic"
        Foreground="#FFB0E6F4"/>

</Grid>

I’ve attached pictures of what my program currently does. I have also attached a file with sample data in case anybody wants to test the program. I have also tried building in release mode and that doesn’t help, either.

The only issue is the delay in plotting of real-time data. Otherwise, the graphing and rendering is really smooth. As I am a complete beginner to this, can somebody help with me with what I might have done wrong?

Thanks a ton,

Jaivignesh Jayakumar

0 votes
11k views

Is there any way to change the view of a 3d chart so the Y and Z axis are switched?

0 votes
4k views

Hi,

we have a graph which it’s x axis visible range changed when the graph draw until the max (as a travel graph)
we also have logic for each serie a minimum\maximum range, outside of this range the color should be red
so, we use the ExtremePointMarkerPaletteProvider and set for each value the suttible color in the colors list.

our problem is when the graph visible range changed – the serie points is draw correctly but it’s color is not match.
the colors are stay the same as they was before the range changed.
we looked at the colors list and YValues list – the value and the color on each index was match.
the problem is only in the view.

also, after some time it’s fixed, we don’t know what cause it to be fixed…

Thanks

0 votes
4k views

I’ve verified it steps thru the code as I would expect; however, it only ever zooms in further. The intent of this modifier is to only zoom out when the mouse is dragged up and left. I.e.

Mouse down
Drag up/left
Mouse up

    class ZoomOutModifier : ZoomExtentsModifier
{
    double _x;
    double _y;
    MouseButtons _button = MouseButtons.None;

    public override void OnModifierDoubleClick(ModifierMouseArgs e)
    {
        // do not zoom to extents on a double click
        e.Handled = true;
    }

    public override void OnModifierMouseDown(ModifierMouseArgs e)
    {
        base.OnModifierMouseDown(e);

        // where was the mouse button on the chart surface?            
        _x = e.MousePoint.X;
        _y = e.MousePoint.Y;

        // which button was clicked?  we're only going to zoom 
        // out on a left button click.
        _button = e.MouseButtons;
    }

    public override void OnModifierMouseUp(ModifierMouseArgs e)
    {            
        // are we left and up from where the mouse was clicked?
        if (MouseButtons.Left == _button &&
            e.MousePoint.X < _x &&
            e.MousePoint.Y < _y)
        {
            using (var updater = ParentSurface.SuspendUpdates())
            {
                ParentSurface.ZoomExtents();
                ParentSurface.ResumeUpdates(updater);
            }

            e.Handled = true;
        }
        else
            base.OnModifierMouseUp(e);
    }
}
1 vote
19k views

Hi

I would like to do some logic after zooming in but can not find to witch event I should subscribe or overwrite ?

0 votes
9k views

Hi!

I’ve tried to access the values to print them in a different view, but I cant reach them. So my question is there a specific way to reach them?

1 vote
6k views

Hi SciChart team,

first of all I want to say that I still think SciChart is great! However, I am quite frustrated at the moment. In small applications, the chart and its annotations work very well (yes “Annotations are Easy!”), but in large industrial applications with many views and millions of lines of code, there are from time to time difficult complications with the chart. This is also the case now with the Annotation Creation Modifier. As far as I can see, the AnnotationCreationModifier.OnModifierMouseUp method uses the annotation’s IsSelected state to determine whether to create a new annotation or complete one. With custom composite annotation it can happen that a mouse click first selects the annotation and only then AnnotationCreationModifier.OnModifierMouseUp is called (see attached screenshots).
Sometimes it works, sometimes it doesn’t, depending on where the mouse is.
The AnnotationCreationModifier should not use the annotation’s IsSelected state to complete its internal “edit mode” and call “OnAnnotationCreated”.
Or is there already a solution for this?

regards,
Tobias

  • Tobias asked 12 months ago
  • last active 11 months ago
1 vote
17k views

I am trying to change the background color to match the background of the SciChartSurface but it just doesn’t want to change colors. I have a property bound to enable and disable the legend and that works fine. I tried doing the same for the “Background” property for SciChartLegend but nothing works. Even hard coding a brush doesn’t work. What am I missing?

I am using SciChart v3.42.0.6778

SciChartSurface instantiation in XAML. I am using the BrightSpark default theme.

<s:SciChartSurface Name="SciChartSurface"
Grid.Row="0"
Background="{Binding BackgroundColor, Converter={StaticResource ColorToSolidColorBrushConverter}}"
ChartTitle="{Binding GraphTitle}"
SeriesSource="{Binding GraphRenderModels}"
s:ThemeManager.Theme="BrightSpark">

Modifiers

<s:SciChartSurface.ChartModifier>
<s:ModifierGroup>
    <s:RubberBandXyZoomModifier IsAnimated="True"
                                IsEnabled="True"
                                IsXAxisOnly="False"
                                RubberBandFill="#99AAAAAA"
                                ZoomExtentsY="False" />
    <s:ZoomPanModifier ExecuteOn="MouseMiddleButton" IsEnabled="True" />
    <s:ZoomExtentsModifier ExecuteOn="MouseDoubleClick"
                           IsEnabled="True"
                           XyDirection="XDirection" />
    <s:MouseWheelZoomModifier IsEnabled="True" XyDirection="YDirection" />
    <s:YAxisDragModifier AxisId="LeftAxis" />
    <s:YAxisDragModifier AxisId="RightAxis" />
    <s:XAxisDragModifier ClipModeX="None" />
    <s:CursorModifier Name="CursorModifier" IsEnabled="{Binding ShowCursors, Mode=TwoWay}">
        <s:CursorModifier.LineOverlayStyle>
            <Style TargetType="Line">
                <Setter Property="Stroke" Value="LightGray" />
            </Style>
        </s:CursorModifier.LineOverlayStyle>
    </s:CursorModifier>
    <s:LegendModifier Margin="6"
                      GetLegendDataFor="AllSeries"
                      LegendPlacement="Inside"
                      Orientation="Horizontal"
                      ShowLegend="{Binding ShowLegend}"
                      ShowVisibilityCheckboxes="False" />
</s:ModifierGroup>

</s:SciChartSurface.ChartModifier>

When I attempt to change the background, I use the following:

<s:LegendModifier Margin="6"
GetLegendDataFor="AllSeries"
LegendPlacement="Inside"
Orientation="Horizontal"
    Background="{Binding BackgroundColor, Converter={StaticResource ColorToSolidColorBrushConverter}}"
ShowLegend="{Binding ShowLegend}"
ShowVisibilityCheckboxes="False" />

Which doesn’t work, though other color bindings in XAML work fine. If I change the color directly, say Background=”Red” or Background=”#FF0000″ It does not change either.

  • Alex Helms asked 9 years ago
  • last active 9 years ago
0 votes
10k views

Hello all,
I have a candle-chart with the following x-Axis:

<s:SciStockChart.XAxisStyle>
    <Style TargetType="s:CategoryDateTimeAxis">
        <Setter Property="BarTimeFrame" Value="{Binding BarTimeFrame, Mode=OneWay}"/>
        <Setter Property="DrawMinorGridLines" Value="False"/>
        <Setter Property="DrawMajorBands" Value="True"/>
        <Setter Property="VisibleRange" Value="{Binding XVisibleRange, Mode=TwoWay}"/>
        <Setter Property="DrawMinorGridLines" Value="False"/>
        <Setter Property="AutoRange" Value="{Binding AutoRange, Mode=TwoWay}" />
        <Setter Property="GrowBy" Value="0, 0.1"/>
    </Style>
</s:SciStockChart.XAxisStyle>

I want to add a vertical line at a specific date:

VerticalLineAnnotation newVerticalLine = new VerticalLineAnnotation();
newVerticalLine.X1 = ((DateTime)pAnnotationAttributes.GetValue(GUI_AnnotationAttributes.TimeValue)).;

Doing this I get the following exception:
Ein Ausnahmefehler des Typs “System.InvalidCastException” ist in mscorlib.dll aufgetreten.
Zusätzliche Informationen: Invalid cast from ‘DateTime’ to ‘Int32’.

Regards

Michael

1 vote
9k views

I have just finished my first pass evaluation of the SciChart performance. When drawing a lesser number of points (<100000), SciChart outperforms two other packages I have evaluated. However, when drawing more points (200,000 – 2,000,000), SciChart does not meet the performance of the other packages.

The evaluation involved selecting a different number of lines and number of points per line. The transition to worse performance occurred in the following setups:

Line Count Points/Line Loop Count Total Time (ms)
2 100,000 25 1890
5 100,000 25 4670
2 1,000,000 10 7400
2 10,000,000 10 74000

These setups average out to about 0.37 usec per point. This is where the other packages outperformed SciChart, as their per point times kept improving.

I have tried to follow all of the performance tips I found on your website. I have included the code used to evaluate SciChart and would appreciate any help in improving the results.

Thanks,
Dave

  • Dave Leach asked 8 years ago
  • last active 8 years ago
0 votes
11k views

How can I shift my X Axis position upwards? I need to shift X Axis so that I can place some labels below it.

  • Anil Soman asked 5 years ago
  • last active 5 years ago
0 votes
7k views

Hi,

I am using Scichart 6.1 in WPF application. I want to access ScichartSurface in my view model to call some commands like ZoomExtentsModifier or SuspandUpdate. So I created all controls like surface, Axis, Series and annotations in my code according to your example ‘Creating your First SciChartSurface’.
My question is how can I attach this view model to my view [*.xaml file] ? I couldn’t find any example of xaml file in this case.

Regards

0 votes
9k views

Hi Guys,

I am creating and placing my custom annotation on my chart and its all fine.

Just a simple question :

When the annotation is created and placed I can see its anchor point which disappears (hide) when I select (click) on the chart surface.

Is there a way (programmatically) to “unselect” the custom annotation just after it has been placed in order the anchor points disappear ?

Thanks to you all

Kind Regards

Giuseppe

  • jp13 asked 9 years ago
  • last active 8 years ago
1 vote
7k views

I am trying to implement a peak detection functionality in wpf. I have a DateTime axis as X and double as Y. When I add the second series (containing the peaks) to the chart it renders the points by their index, not by their date. (picture second chart red dots)

Is there any way I can plot two series with different sampling in a way that the sample points are aligned according to their dateTime values?

I attached some of my codes below.

0 votes
9k views

I would like to implement a custom DateTime axis LabelProvider with the following behavior:

  • Show full date and time at the start of the visible region
  • Show only time on all other ticks unless the date changes from the previous tick.

So, an axis might look like:

10/01/2016 23:00 23:30 10/02 00:00 00:30 01:00

It seems this is doable as long as 00:00:00 appears as one of the label values, but I’m not sure l can be guaranteed. It is likely that none of the entries in the series would contain that exact value. One entry might be 23:59:17 and the next 00:01:13.

Is there any way for a LabelProvider to determine what the preceding label value was?

Bill

0 votes
14k views

Hello support team.

I have a question about the resampling modes and their behavior.
I have a LineRenderableSeries with the resampling mode.mid. Therefore, depending on the zoom level and available pixels of the display screen, the information of the min and max values are lost. I had the idea to create a second LineRenderableSeries with the Opacity 0.5 and the ResamplingMode.Min Max. Thus I have behind the main line with the resampling mode.mid a “cloud” with the MinMax info. This allows the user to see this information as well. However, I would deactivate this cloud if it is not necessary due to the zoom level and the pixels.
How can I request this from SciChartControl? Or does it make more sense to use a different functionality?
I use the Mvvm classes LineRenderableSeriesViewModel, and XyDataSeries.

Thank you very much!

0 votes
7k views

Can I use the 30 day trial version to run a newly built exe file from the “exported” Visual Studio solution files which then runs into the “Sorry! You need to have a license to use SciChart.” run-time error? How can I find and activate the 30 day license to avoid this run-time error?

0 votes
11k views

Hi,

I’m in the process of evaluating SciChart and had a couple of questions. I’m using SciChart to display realtime OHLC values for a trading application. I’m using the CategoryDateTimeAxis for the X Axis.

My questions are
1. The XAxisDragModifier doesn’t seem to work with the CategoryDateTimeAxis. It does seem to work with the DateTime Axis. Is there something different I need to do for it work with the CategoryDateTimeAxis ?

  1. Is it possible to anchor a newly added point to the same area of the chart ie..the chart would scroll to the left after each data point is added so that the new data point is still located in the same area of the screen.

Please let me know.
Thanks,
Deepak

  • deepakb1 asked 11 years ago
  • last active 6 months ago
1 vote
17k views

I have a WPF TextBlock control that I want to set the foreground color for based on the colors in the current SciChart theme (I want to make it the same color as, say, the axis titles). How do I access the color values for the current theme?

0 votes
13k views

Hi,

TX and TY in XyDataSeries<TX,TY> are currently subject to some unclear constraints to do with the internal implementation of SciChart. Would it be possible to either remove these constraints or expose them as interfaces and .NET generic type constraints on XyDataSeries<TX,TY>?

Specifically, I’d like to enable ulong as a valid TX and my own complex data type as a TY. I’m creating a CustomRenderableSeries where each point has x, y, shape, colour and size. I can encode these data within the bytes of e.g. an XyzDataSeries<DateTime,double>, but its inconvenient, hacky and unclear. It would seem more natural to create a type to contain those fields and then have a XyDataSeries<DateTime, MyPointData>

I can make MyPointData IComparable and anything else that is required.

Any thoughts?

Cheers
Felix

  • F W asked 9 years ago
  • last active 9 years ago
1 vote
9k views

Hi,

I can’t for the life of me work out how to do this!

We’re using vertical markers to show particular points of data on the graph. It all works fine, except there is a hovering ‘tooltip’ style on the chart surface (see image – the zero next to the marker dot).

Here is the initialisation of the markers: (slightly condensed)

        VerticalLineAnnotation newMarker = new VerticalLineAnnotation();

        newMarker.ShowLabel = true;
        newMarker.Stroke = Brushes.Red;
        newMarker.StrokeThickness = 4.0;
        newMarker.IsEditable = true;
        newMarker.LabelPlacement = LabelPlacement.Axis;
        newMarker.DragDelta += Marker_DragUpdate;
        newMarker.DragEnded += Marker_DragUpdate;
        if (!Value.HasValue)
          newMarker.X1 = Value.Value;

        GraphMarkers.Add(newMarker);

GraphMarkers is a property that is bound through our view model.

Kind Regards,

Simon.

1 vote
12k views

Upon your advice for a recent question, I have converted my annotations over to an XY scatter point series, using custom point markers to render them. That is working beautifully and is much faster than creating annotations as WPF UIElements. I now need to figure out if/how I can get the tooltips displaying like I would prefer.

I currently have a cursor modifier that I’m using to display a consolidated rollover tooltip for all of the visible series. However, now that the annotations are data series also, their information is getting included in this tooltip and I don’t want it to. I would like to have a separate tooltip that appears when the mouse is hovering over a custom point marker that displays the custom metadata for the point. This was the functionality I had working when I was creating the annotations as actual annotations. I’m hoping I can achieve it when creating them as regular data points.

So I guess my questions are: Is there a way to only include certain data series for a given chart modifier so I can keep my “regular” data and “annotation” data segregated? And, is there a way to show a tooltip with metadata only when the actual point is hovered? I was looking at the Series With Metadata example which is similar to what I want to achieve, but the tooltip appears whenever the mouse hovers over anything, not just when it’s over an actual point.

Thanks,
Scott

  • sdamge asked 8 years ago
  • last active 2 years ago
0 votes
8k views

I have created a custom annotation for displaying averages for a selected section of the displayed data. It works fine for printing, or copying to the clipboard, or saving a BMP file without specifying a size. However, if I export to XPS or try to specify a size for the BMP, I get the following exception:

    SciChart.Charting.Common.Helpers.ExportException occurred
  HResult=0x80131500
  Message=Exception occured during serialization of the AverageAnnotation type. The Content property of the Object type cannot be processed. Please be advised that SciChart doesn't handle serialization of objects with propeties of interface type, collection type or custom type.You need to implement IXmlSerializible in such objects to have them handled properly. For more details, please check the InnerException.
  Source=SciChart.Charting
  StackTrace:
   at SciChart.Charting.Visuals.SciChartSurfaceBase.CreateCloneOfSurfaceInMemory(Size newSize)
   at SciChart.Charting.Visuals.SciChartSurface.CreateCloneOfSurfaceInMemory(Size newSize)
   at SciChart.Charting.Visuals.SciChartSurfaceBase.GE(ExportType D, Boolean I, Nullable`1 J)
   at SciChart.Charting.Visuals.SciChartSurfaceBase.ExportToFileInternal(String fileName, ExportType exportType, Boolean useXamlRenderSurface, Nullable`1 size)
   at SciChart.Charting.Visuals.SciChartSurfaceBase.ExportToFile(String fileName, ExportType exportType, Boolean useXamlRenderSurface)
   at SciChart.Charting.Common.Extensions.SciChartSurfaceExtensions.ExportToXPS(SciChartSurface surface, String filePath, Nullable`1 size)
   at Profile6.ProfileTestResultsWindow.SaveGraph() in C:\Vericom\vc5000configurator\Profile6\ProfileTestResultsWindow.xaml.cs:line 75

Inner Exception 1:
InvalidOperationException: Cannot serialize a generic type 'System.Collections.Generic.KeyValuePair`2[System.String,System.Collections.Generic.List`1[Profile6.TestResultsViewModels.AverageAnnotationViewModel+AverageInfo]]'.

I tried wrapping the Averages list in a class that implemented IXmlSerializable, but that didn’t change anything. Does anyone know what I need to do to make this work?

I tried attaching the source code in various formats, but keep getting Forbidden errors. So, I put it inline below. (The AverageAnnotation.xaml.cs is the default code with only InitializeComponent();)

AverageAnnotation.xaml

   <sci:CustomAnnotationForMvvm x:Class="Profile6.TestResultsViewModels.AverageAnnotation"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
             xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
             xmlns:local="clr-namespace:Profile6.TestResultsViewModels"
                             xmlns:localization="clr-namespace:VC5000Configurator.Localization;assembly=VC5000Configurator.Localization"
             xmlns:sci="http://schemas.abtsoftware.co.uk/scichart"
             mc:Ignorable="d" 
             d:DesignHeight="300" d:DesignWidth="300">
    <Border BorderBrush="Black" BorderThickness="1">
        <StackPanel Background="White">
            <StackPanel.Resources>
                <ResourceDictionary>
                    <!-- Disable the highlighting for the lists -->
                    <Style TargetType="{x:Type ListViewItem}" x:Key="NoHighlight">
                        <Setter Property="Background" Value="Transparent" />
                        <Setter Property="Margin" Value="0"/>
                        <Setter Property="Padding" Value="0"/>
                        <Setter Property="Template">
                            <Setter.Value>
                                <ControlTemplate TargetType="{x:Type ListViewItem}">
                                    <ContentPresenter />
                                </ControlTemplate>
                            </Setter.Value>
                        </Setter>
                    </Style>
                </ResourceDictionary>
            </StackPanel.Resources>

            <Label Content="{x:Static localization:I18N.Averages}"
                   HorizontalAlignment="Center"
                   FontSize="12" FontWeight="Bold"/>  
            <ListView ItemsSource="{Binding Averages}" 
                      Background="Transparent"
                      ItemContainerStyle="{StaticResource NoHighlight}">
                <ListView.ItemTemplate>
                    <DataTemplate>
                        <StackPanel Background="Transparent">
                            <Label Content="{Binding Key}" 
                                   Visibility="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType=ItemsControl}, Path=DataContext.HasMultipleRuns, Converter={StaticResource FalseToCollapsedConverter}}"
                                   FontSize="10" FontWeight="Bold"/>
                            <ListView ItemsSource="{Binding Value}"
                                      ItemContainerStyle="{StaticResource NoHighlight}">
                                <ListView.ItemTemplate>
                                    <DataTemplate>
                                        <Grid Margin="10,0,0,0"
                                              Background="Transparent">
                                            <Grid.ColumnDefinitions>
                                                <ColumnDefinition Width="Auto" SharedSizeGroup="Name"/>
                                                <ColumnDefinition Width="Auto" SharedSizeGroup="Average"/>
                                            </Grid.ColumnDefinitions>
                                            <Grid.RowDefinitions>
                                                <RowDefinition Height="Auto"/>
                                            </Grid.RowDefinitions>
                                            <Label Content="{Binding SensorName}" 
                                                   Padding="0"
                                                   FontSize="10" FontWeight="Bold"
                                                   Foreground="{Binding TextBrush}"
                                                   Background="Transparent"/>
                                            <Label Content="{Binding Average}"
                                                   Padding="0"
                                                   FontSize="10" FontWeight="Bold"
                                                   Foreground="{Binding TextBrush}"
                                                   Grid.Row="0" Grid.Column="1"/>
                                        </Grid>
                                    </DataTemplate>
                                </ListView.ItemTemplate>
                            </ListView>
                        </StackPanel>
                    </DataTemplate>
                </ListView.ItemTemplate>
            </ListView>
        </StackPanel>
    </Border>
</sci:CustomAnnotationForMvvm>

AverageAnnotationViewModel.cs

using System;
using System.Collections.Generic;
using System.Windows.Media;
using SciChart.Charting.Model.ChartSeries;

namespace Profile6.TestResultsViewModels
{
    public class AverageAnnotationViewModel : CustomAnnotationViewModel
    {
        public override Type ViewType => typeof(AverageAnnotation);

        private List<KeyValuePair<string, List<AverageInfo>>> averages;
        public List<KeyValuePair<string, List<AverageInfo>>> Averages
        {
            get => averages;
            set
            {
                averages = value;
                OnPropertyChanged(nameof(Averages));
                OnPropertyChanged(nameof(HasMultipleRuns));
            }
        }

        public bool HasMultipleRuns => Averages.Count > 1;

        public class AverageInfo
        {
            public AverageInfo(string sensorName, double average, Color textColor)
            {
                SensorName = sensorName;
                Average = average;
                TextColor = textColor;
                TextBrush = new SolidColorBrush(TextColor);
            }

            public string SensorName { get; }
            public double Average { get; }
            public Color TextColor { get; }
            public Brush TextBrush { get; }
        }
    }
}
2 votes
11k views

Hi guys,

I’ve been trying to select data points in my heat map for the whole without success. I’ve read, re-read and re-re-read the documentation, but I can’t figure out what I’m doing wrong.

Here’s the XAML.

...

<s:SciChartSurface.RenderableSeries>
    <s:FastUniformHeatmapRenderableSeriesForMvvm
        x:Name="heatmapSeries" 
        Opacity="0.9" 
        DataSeries="{Binding UniformHeatmapDataSeries}"
        s:DataPointSelectionModifier.IncludeSeries="True" >

        <s:FastUniformHeatmapRenderableSeriesForMvvm.ColorMap>
            <s:HeatmapColorPalette Maximum="60" Minimum="6">
                <s:HeatmapColorPalette.GradientStops>
                    <GradientStop Offset="0" Color="Transparent"/>
                    <GradientStop Offset="0.1" Color="DarkBlue"/>
                    <GradientStop Offset="0.2" Color="CornflowerBlue"/>
                    <GradientStop Offset="0.4" Color="DarkGreen"/>
                    <GradientStop Offset="0.6" Color="Chartreuse"/>
                    <GradientStop Offset="0.8" Color="Yellow"/>
                    <GradientStop Offset="1" Color="Red"/>
                </s:HeatmapColorPalette.GradientStops>
            </s:HeatmapColorPalette>
        </s:FastUniformHeatmapRenderableSeriesForMvvm.ColorMap>

        <s:FastUniformHeatmapRenderableSeriesForMvvm.PointMarker>
            <s:XPointMarker Fill="Pink" Width="5" Height="5"/>
        </s:FastUniformHeatmapRenderableSeriesForMvvm.PointMarker>

        <s:FastUniformHeatmapRenderableSeriesForMvvm.SelectedPointMarker>
            <s:TrianglePointMarker Fill="White" Width="12" Height="12"/>
        </s:FastUniformHeatmapRenderableSeriesForMvvm.SelectedPointMarker>

    </s:FastUniformHeatmapRenderableSeriesForMvvm>

    ...

</s:SciChartSurface.RenderableSeries>
...

Here’s the MVVM code.

...
class SelectedPointMetadata : IPointMetadata
{
    public bool IsSelected { get; set; }

    public event PropertyChangedEventHandler PropertyChanged;
}
...

double[,] heatMap = new double[heatMapHeight + glowRadius * 2, heatMapWidth + glowRadius * 2];
double[,] glowMatrix = this.getGlowEffectMatrix(glowRadius);

SelectedPointMetadata[,] selectablePoints = new SelectedPointMetadata[heatMapHeight + glowRadius * 2, heatMapWidth + glowRadius * 2];

for (int i = 0; i < spectrogram.SpectrogramAtoms.Count; i++) {
    var atom = spectrogram.SpectrogramAtoms[i];
    int x = Math.Min((int)(atom.Frequency.Hertz / frequencyStep) + glowRadius, heatMapHeight - 1);
    int y = Math.Min((int)(atom.Time.Seconds / xStep) + glowRadius, heatMapWidth - 1);
    this.applyEffectMatrix(x, y, atom.SNR, ref heatMap, ref glowMatrix, glowRadius);

}

var xBound = heatMap.GetLength(0);
var yBound = heatMap.GetLength(1);

Random rnd = new Random();

for (var i = 0; i < xBound; i++)
{
    for (var j = 0; j < yBound; j++)
    {
        var x = rnd.Next(1, 10);

        selectablePoints[i, j] = new SelectedPointMetadata() { IsSelected = false };

        if (x == 5)
        {
            selectablePoints[i, j].IsSelected = true;
        }

    }
}

this.UniformHeatmapDataSeries = new UniformHeatmapDataSeries<double, double, double>(
    heatMap,
    (-xStep * glowRadius),
    xStep,
    (-frequencyStep * glowRadius),
    frequencyStep,
    selectablePoints
    );

...

What am I missing?

0 votes
4k views

I have a license for SciChart 5.1 and 3.6. I cannot access the 3.6 versions any more from NuGet, they seem to have disappeared.

0 votes
2k views

Hi All!

I have a syncfusion theme (MaterialDark) applied to my WPF app.

Without the theme applied, I can set the background color of a TextAnnotaion in the normal way in bothe XAML and c#, no problem.

When I apply the theme, it overrides this setting and renders the TextAnnotation with a black background and no matter what I try, I

can’t seem to get rid of it.

I have tried:

  1. setting up a Resource dictionary in XAML

  2. setting the style to null and then applying inline style (in both code behind and XAML)

Nothing seems to work!

Has anyone encountered this issue beforew or know of any solutions?

It’s driving me mad!

1 vote
2k views

Hi,

The axis labels are not always showing when zoomed in/out.
Is there a way/workaround to persist the end labels and also make it editable?

Please see attached pic

Thanks
Pramesh

0 votes
9k views

Dear all,

I am evaluating the graph control and I need to cover a request for my customer project.

The thing is that my customer have a bunch of data which gets display as scatter graph view.

The idea is that if the user is placing the mouse over a point, I need to display the current point value (x,y) as an information.
Then in an other hand, if the user click on the point, I need to open a text box and enter a description for that point. The comment and point link will be store in a database to be able to recall.

How cqn I do the 2 operations of displaying values on mouse over and poo up a text box for comment on point ckick ?

Thanks for your help on this

regards

  • sc sc asked 6 years ago
  • last active 2 years ago
0 votes
10k views

Good morning,

i need to draw a bitmap (specifically a RenderTargetBitmap object) to a surface during a Draw method of a CustomRenderableSeries, so using the IRenderContext2D argument.

I see there is a DrawTexture method but can’t find any example on this.
Can you provide a snippet to show the correct use of this method?

Thank you.

WPF project
.Net framework 4.6.1
Schichart 5.5.0.12225

0 votes
8k views

Hi,

Does SciChart use automation peers? Is there any documentation about UI test automation for SciChart?

My company uses SciChart to develop a WPF desktop application. We want to automate our testing using toolts like Coded UI or Test Complete.

Thanks

0 votes
7k views

Hi,

I have an application where I can potentially create, plot and export (as png) hundreds of graphs. It all runs smoothly but the “ExportToFile” method of the SciChartSurface. It seems to never de-allocate the memory it uses even after disposing the SciChartSurface itself. After a few hundred graphs, the application ends up using 70Gb+ of ram but if I just comment out the ExportToFile line, the application never uses more than 2Gb of ram (as expected).

I’ve tried putting:
GC.Collect();
GC.WaitForPendingFinalizers();
…both after the ExportToFile and after disposing the graphs, but it makes no difference.

Has anyone experienced this issue? Is there anything else that I can try?

Thanks
/Daniel

0 votes
6k views

Hi,

InvalidatateParentSurface does’t seem to update the text in the heatmap cell however the change seems to be detected and the color value is getting updated. Can you please suggest how to fix this?

Attached is a sample.

Thanks,
-Tom

  • mijothomas asked 7 years ago
  • last active 7 years ago
2 votes
11k views

Good afternoon,

In the project Im working I need to save the annotations created so I can load generate them when the graph is generated.
I have tried to serialize them but maybe because its obfuscated I get an exception I try serialization:
There was an error reflecting type ‘Abt.Controls.SciChart.LineArrowAnnotation’
inner exception: There was an error reflecting property ‘InputBindings’.
Do you have an easy solution for this?

I would like to ask if its possible to have such a feature included, a method that would return the xml of the current state of the object.
or the list of minimum properties needed for annotation base:
X1, X2, Y1, Y2, YAxisId

then each different annotation type has different properties, thats why serialization would be extremely useful in this case.

Thank you for your attention

0 votes
6k views

Hi,

I’m having some problems plotting a graph with pointmetadata. Every time the graph updates, it seems like the id’s of the metadata are different (giving each point new metadatas). Looking at both lists, the count of both are way off and both vary a lot on each update. Shouldn’t both of those lists always match with each other? What could be the problem?

0 votes
10k views

How do I serialize custom annotation, as I am not able to serialize using Annotation collection as it only serializes the iAnnotation properties and not extended properties like TEXT.

  • Selva Arun asked 7 years ago
  • last active 7 years ago
0 votes
5k views

We have annotations placed based on mouseposition. To snap the annotation to the position of the datapoints, we use IDataSeries.FindClosestPoint(..) method to step to the nearest point, then applying it to the “X1”-property of the belonging annotation. This works well for most of the Series, but it fails for

XyDataSeries<int, double>

error:

InvalidCastException Specified cast is not valid.

Is this a known issue, any work-arounds for this ?

0 votes
4k views

The following code works just fine in SciChart 3.3, 3.6. Since 4.2.5 up to 6.0 it does not show a line any more, even if you pinch zoom into the chart.

Width values of 1,2,3,4 do not work regardless of screen resolution.

I used the same XAML in 3.3.0 and 4.2.5 – screenshots in attachment. I cannot access 3.6 any more (separate forum post), however I have an old version of my customer project and it worked there too. This seems to have become broken since 4.x.

        <SciChart:SciChartSurface.Annotations>
              <SciChart:VerticalLineAnnotation 
                      X1="{Binding Dummy}"
                      Width="1">
                  <SciChart:AnnotationLabel Text="{Binding DummyText}"/>
              </SciChart:VerticalLineAnnotation>
          </SciChart:SciChartSurface.Annotations>
  
1 vote
9k views

Hello.

I have a XYRenderableDataSeries with point markers with a fill color.

I also have a DataPointSelectionModifier which allows me to select clusters up to 5 from the series.

I want that when I select a cluster from the series, the points selected from the series should be colored for that specific cluster. i.e. all the cluster colors should be different. Also, when I select another cluster, the colors in the points selected from 1st cluster or other clusters should be preserved.

Here’s the XAML code :

<s:XyScatterRenderableSeries DataSeries="{Binding ScatterData}">
                    <s:XyScatterRenderableSeries.PointMarker>
                        <s:EllipsePointMarker  Width="3" Height="3" Fill="#AAFFFFFF" Stroke="SteelBlue" StrokeThickness="2"/>
                    </s:XyScatterRenderableSeries.PointMarker>
                    <s:XyScatterRenderableSeries.SelectedPointMarker>
                        <s:EllipsePointMarker Fill="{Binding ClusterColor, Mode=TwoWay}"
                                              Width="12"
                                              Height="12" />
                    </s:XyScatterRenderableSeries.SelectedPointMarker>
                </s:XyScatterRenderableSeries>

<s:SciChartSurface.ChartModifier>
                <s:ModifierGroup>
                    <s:DataPointSelectionModifier Name="PointMarkersSelectionModifier"
                                                  IsEnabled="{Binding IsManualClustering}"
                                                  SelectionChanged="PointMarkersSelectionModifier_SelectionChanged"
                                                  SelectionFill="#B1B5B2B2" 
                                                  SelectionStroke="#009E9C9C" />
                    <s:MouseWheelZoomModifier IsEnabled="True" />
                    <s:RubberBandXyZoomModifier IsEnabled="False" />
                </s:ModifierGroup>
            </s:SciChartSurface.ChartModifier>

I tried to find examples but could not find any. Please let me know if we can reach a solution to this in some way.

Thank you.

  • Ammar Khan asked 9 months ago
  • last active 8 months ago
1 vote
6k views

Is there any option to hide the axis title of NumericAxis3D in ZxAxisPlane. Want to hide the title highlighted in the attached image.

  • Ammar Khan asked 6 months ago
  • last active 4 months ago
0 votes
10k views

Hi again,

related to the question how to color the full chart vertically i have an other one:

The customer wants gaps in series also to be colored / highlighted and not just not shown. I wonder what’s the proper approach for this. PaletteProvider seems to be no solution since the values to be shown somehow are Double.NaNs. So are again annotations the best solution? Or is there any other way i’m not aware of?

Best regards,
Robin

1 vote
8k views

Hi ,

I’m trying to use DirectX acceleration on my graphs. I have Windows 10, DirectX 12 with a nvidia gtx 660 graphic card.

I read your article easy fallback… and I’m trying to make it works.

I get true from Direct3D10CompatibilityHelper.SupportsDirectX10 property , but your method OnTryApplyDirectXRendererChanged fails to create

var directXSurface = new Direct3D10RenderSurface();

I always get this error

Additional information: Could not load type 'SharpDX.Color4' from assembly 'SharpDX, Version=3.0.2.0, Culture=neutral, PublicKeyToken=b4dcf0f35e5521f1'.

I updated via nuget all assemblies and:
SharpDx version 3.0.2.0 Runtime v4.0.30319
ShaprDX.D3DCompiler version 3.0.2.0 Runtime v4.0.30319
ShaprDX.Direct3D10 version 2.6.3.0 Runtime v4.0.30319
ShaprDX.Direct3D11 version 3.0.2.0 Runtime v4.0.30319
ShaprDX.Direct3D9 version 3.0.2.0 Runtime v4.0.30319

This is the definition of my surface

<s:SciChartSurface Name="sciChart" 
                    Grid.Row="0"
                    dirx:DirectXHelper.TryApplyDirectXRenderer="True"
                    BorderThickness="0"
                    s:ThemeManager.Theme="{Binding ElementName=ChangeThemeCombo, Path=SelectedItem}"
                    Padding="0"
                    VerticalAlignment="Stretch"
                    s:SciChartGroup.VerticalChartGroup="myCharts"
                    >

Could you help me please?

  • lorenzo522 asked 8 years ago
  • last active 8 years ago
0 votes
7k views

Is it possible to render an image from file as a point marker in the code?

0 votes
10k views

Hi,
some time ago we update our application used WPF chart v 3.1 to version 4.2.2.9744. Now we realize that the application uses much more memory as before, sometimes it doubles the memory usage. The worst issue is that memory is not release aver after unloading the data series and even after closing the Tab which contains the Chart. Because we need to deploy the Application even on pc with 2 GB RAM it becomes an issue for us. Please advise what could we check to make sure memory will be released after unloading the data series and closing the tab with chart.

0 votes
4k views

I created a CustomRenderableSeries to put TextAnnotations on surface for every drawn point.

I discovered that Draw method is not called when no points are to be drawn in the visible range, so i can’t do any cleanup of the annotations i created in a previous pass.

Is there a way to force Draw method to be called anyway upon surface redraw (for example when zooming)?

Thank you

Showing 101 - 150 of 3k results