SciChart® the market leader in Fast WPF Charts, WPF 3D Charts, iOS Chart, Android Chart and JavaScript Chart Components

0 votes
7k views

Hi

I have an mvvm application using annotations. I just added some features to it, and discovered a wierd thing…

On my annotations, the IsEditable property is bound to a property in the view model. I think this used to work fine, but now those bindings don’t seem to work properly the first time they are rendered. The annotations are always editable. When I switch to another tab, they work fine in the next one. I switch back to the first and now it works fine there… I even put in a breakpoint in the property and it never got hit the first time the view got rendered.

Could this be a bug introduced with the last update? Since that adressed some issues with tab controls and mvvm in wpf, something might have happend. Or it could just be the fact that all my annotations in my first view used to be editable, so this just simply hadn’t occured before. I’m not quite sure…

Could you guys take a look?

Thanks đŸ™‚

0 votes
7k views

Hi,

When displaying a BandSeries with NaN values, the band will not be displayed correctly.
Am I missing a setting or does it not work?
Even when using a NaN values for both Y values it does not work.

Best regards,
Egbert

1 vote
8k views

Hi All,

It is possible click on the point of the chart, get position and draw some label for selected point?

Thanks,

Arthur

0 votes
8k views

When a user clicks on Axis (x or y), ChartModifierBase.OnModifierMouseDown is called. As axis are outside of chart zoom area, this should not be called. Is there anyway to know that ChartModifierBase.OnModifierMouseDown is on axis and not on chart area?

3 votes
12k views

I have a realtime linear chart with multiple x/y axes. When I am zooming the surface, I am changing the X/Y AutoRange mode from AutoRange.Always to AutoRange.Never, which allows me to have Modifiers zooming and panning on a realtime AutoRange chart.

After, I want to re-enable AutoRange when ZoomExtents (double click) occurs.

See below:

    public class ZoomExtentsXAxesModifier : ZoomExtentsModifier
    {
        private Point _startPoint;
        private bool _isMouseDoubleClick;

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

            if(e.Modifier == MouseModifier.Ctrl) return;

            if (e.MouseButtons == MouseButtons.Left)
                _startPoint = e.MousePoint;

            _isMouseDoubleClick = false;
        }

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

            if (e.Modifier == MouseModifier.Ctrl) return;

            if (e.MouseButtons != MouseButtons.Left || _startPoint == e.MousePoint || _isMouseDoubleClick) return;

            using (ParentSurface.SuspendUpdates())
            {
                foreach (var axise in XAxes.Where(axise => axise.AutoRange != AutoRange.Never))
                {
                    axise.AutoRange = AutoRange.Never;
                    axise.Zoom(_startPoint.X, e.MousePoint.X);
                }

                foreach (var axise in YAxes.Where(axise => axise.AutoRange != AutoRange.Never))
                {
                    axise.AutoRange = AutoRange.Never;
                    axise.Zoom(_startPoint.Y, e.MousePoint.Y);
                }
            }
        }

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

            if (e.Modifier == MouseModifier.Ctrl) return;

            foreach (var axise in XAxes)
                axise.AutoRange = AutoRange.Always;

            foreach (var axise in YAxes)
                axise.AutoRange = AutoRange.Always;

            _isMouseDoubleClick = true;
        }
    }

For the one chart it is working ok, but when I have more then 2 charts, it is zooming incorect? What can I solve this? I need to recieve one event, when user is zooming, panning or resizing chart. Is it possible?

Thanks,
Arthur

3 votes
17k views

Hi,

I have a chart for a temperature line using FastLineRenderableSeries and a couple of HorizontalLineAnnotation to show some thresholds for that line.
When I call DataSeriesSet.InvalidateParentSurface(RangeMode.ZoomToFit) the chart zoom to fit the data from the data series (which is fine).
Now I would like to be able to zoom to the chart extents but including those threshold line. What would be the best way to accomplish this?

Screen shots attached.

Chart with RangeMode.ZoomToFit: c1
Chart manually zoomed out to show threshold line: c2
(the chart is that small green dot that is showing just bellow the lower threshold)

The goal is to be able to provide a feature that my users can zoom chart so that both data set and thresholds are shown. I guess a variation of the current zoom to fit but taking into account the annotation lines.

Thanks!

  • jsimoes asked 8 years ago
  • last active 3 years ago
0 votes
9k views

How do I get an event or notification when the user double-clicks to Zoom to fit on the chart?

Best regards
Jonas

1 vote
9k views

Hello!
I’ m working with big number of annotations. They’re creating an image of earth section profile. We need to recreate them everytime, when visible range changed. For these purposes we use MouseWheelZoom and ZoomPanModifier. And when go to another region of our image or zoom it,it flickers. I had a thought that the problem was that I deleted all annotations and the duration between deleting old and creating new was that flicker. I rewrited the code so he added annotation at first and then deleted old annotations. Here is it:

            foreach (var mainSectLine in mainSectLines)
            {
                Color tempColor = new Color();
                double temp = mainSectLine.val/maxValueForPainting;
                if (temp < 0.2) tempColor = Colors.Blue;
                else
                {
                    if (temp < 0.4) tempColor = Colors.Green;
                    else
                    {
                        if (temp < 0.6) tempColor = Colors.Yellow;
                        else
                        {
                            if (temp < 0.8) tempColor = Colors.Orange;
                            else
                            {
                                tempColor = Colors.Red;
                            }
                        }
                    }
                }

                var tempBrush = new SolidColorBrush(tempColor);
                if (tempBrush.CanFreeze)
                {
                    tempBrush.Freeze();
                }
                LineAnnotationItem lineAnnotation = new LineAnnotationItem()
                {
                    Index = Index,
                    X1 = mainSectLine.THL1,
                    X2 = mainSectLine.THL2,
                    Y1 = -mainSectLine.TVD1,
                    Y2 = -mainSectLine.TVD2,
                    YAxisId = textOfYAxis,
                    Stroke = tempBrush,
                    AnnotationCanvas = AnnotationCanvas.BelowChart,
                };
                AnnotationCollection.Add(lineAnnotation);
            }
            List<IAnnotation> annotationsToDelete =
                AnnotationCollection.Where(q => q.GetType() == typeof (LineAnnotationItem)&&((LineAnnotationItem)q).Index==Index-1).ToList();
            foreach (IAnnotation annotation in annotationsToDelete)
            {
                AnnotationCollection.Remove(annotation);
            }

But that does not make a sense. So it also took a lot of time to detach and attach annotations. To solve that trouble, I rewrited function:

List<IAnnotation> annotations =
                AnnotationCollection.Where(q => q.GetType() != typeof (LineAnnotationItem)).ToList();
            AnnotationCollection tempAnnotationCollection=new AnnotationCollection();
            foreach (var mainSectLine in mainSectLines)
            {
                Color tempColor = new Color();
                double temp = mainSectLine.val/maxValueForPainting;
                if (temp < 0.2) tempColor = Colors.Blue;
                else
                {
                    if (temp < 0.4) tempColor = Colors.Green;
                    else
                    {
                        if (temp < 0.6) tempColor = Colors.Yellow;
                        else
                        {
                            if (temp < 0.8) tempColor = Colors.Orange;
                            else
                            {
                                tempColor = Colors.Red;
                            }
                        }
                    }
                }

                var tempBrush = new SolidColorBrush(tempColor);
                if (tempBrush.CanFreeze)
                {
                    tempBrush.Freeze();
                }
                LineAnnotationItem lineAnnotation = new LineAnnotationItem()
                {
                    Index = Index,
                    X1 = mainSectLine.THL1,
                    X2 = mainSectLine.THL2,
                    Y1 = -mainSectLine.TVD1,
                    Y2 = -mainSectLine.TVD2,
                    YAxisId = textOfYAxis,
                    Stroke = tempBrush,
                    AnnotationCanvas = AnnotationCanvas.BelowChart,
                };
                tempAnnotationCollection.Add(lineAnnotation);
            }
            AnnotationCollection = tempAnnotationCollection;
            foreach (IAnnotation annotation in annotations)
            {
                AnnotationCollection.Add(annotation);
            }

But there are still flickers when pan or zoom, but it works a bit faster.
So how can I eliminate these flickers? What can I do to speed up adding and deleting annotations?

0 votes
7k views

Hi all,

Has the IChartSeriesViewModel a property like Tag, I need to set some class and when I found it RenderSeries I need to get it back?

Thanks,
Arthur

0 votes
8k views

Hi,

We are using a listbox with a datatemplate with SciChart inside.
This worked fine with SciChart v2.x (see attachment)
We’ve implemented SciChart v3.0 and now the charts are being displayed differently. (see attachment)

How is this possible?

We are using the following xaml code:

<UserControl x:Class="Fluke.FV2.Subsystems.DataPresentation.UserInterface.Mvvm.Views.DetailsView"
        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="clr-namespace:System.Windows.Interactivity;assembly=System.Windows.Interactivity" 
        xmlns:cmd="clr-namespace:GalaSoft.MvvmLight.Command;assembly=GalaSoft.MvvmLight.Extras.WPF4"
        xmlns:mc=" http://schemas.openxmlformats.org/markup-compatibility/2006" 
        xmlns:vc="clr-namespace:Fluke.FV2.Subsystems.DataPresentation.UserInterface.Mvvm.Components"
        xmlns:vm="clr-namespace:Fluke.FV2.Subsystems.DataPresentation.UserInterface.Mvvm.ViewModel"
        xmlns:SciChart=" http://schemas.abtsoftware.co.uk/scichart" 
        mc:Ignorable="d"
        d:DesignWidth="640" d:DesignHeight="480"
        DataContext="{Binding Source={x:Static vm:ViewModelLocator.DetailsStatic}}"
        Visibility="{Binding Path=DetailsVisibility}" xmlns:c1=" http://schemas.componentone.com/winfx/2006/xaml"> 

    <UserControl.Resources>
        <vc:ImageConverter x:Key="ImageConverter"></vc:ImageConverter>
        <vc:DateTimeConverter x:Key="DateTimeConverter"></vc:DateTimeConverter>
        <vc:DateConverter x:Key="DateConverter"></vc:DateConverter>
        <vc:TimeConverter x:Key="TimeConverter"></vc:TimeConverter>

        <Style TargetType="{x:Type ListBox}" x:Key="ListBoxStyle">
        </Style>

        <DataTemplate x:Key="ItemTemplate">
            <Grid>
                <Border BorderBrush="#FFC20E" BorderThickness="3" Margin="10" Background="{StaticResource SnapshotBackgroundBrush}" CornerRadius="5">
                    <Grid>
                        <Grid.RowDefinitions>
                            <RowDefinition />
                            <RowDefinition />
                            <RowDefinition />
                        </Grid.RowDefinitions>
                        <Grid Grid.Row="0">
                            <Grid.ColumnDefinitions>
                                <ColumnDefinition Width="auto"/>
                                <ColumnDefinition Width="*" />
                                <ColumnDefinition Width="auto" />
                            </Grid.ColumnDefinitions>
                            <GroupBox Grid.Column="0" Margin="5" Header="{Binding Path=Snapshot.TimeStamp, Converter={StaticResource DateTimeConverter}}" 
                                      Visibility="{Binding Path=DataContext.ScreenVisibility, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type UserControl}}}">
                                <Image Margin="2" Source="{Binding Path=Snapshot.Screen}" MaxHeight="240" MaxWidth="320" />
                            </GroupBox>
                            <SciChart:SciChartSurface Grid.Column="1" x:Name="sciChartSurface"
                                              RenderableSeries="{Binding Path=RenderableSeries}" 
                                              SciChart:ThemeManager.Theme="BrightSpark"
                                              XAxis="{Binding Path=XAxis}" 
                                              YAxes="{Binding Path=YAxes}"
                                              Annotations="{Binding Path=Annotations}"
                                              ChartModifier="{Binding Path=ChartModifier}"
                                              Visibility="{Binding Path=DataContext.WaveformVisibility, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type UserControl}}}"                                              
                                              Margin="0,3,0,3" Height="280">
                            </SciChart:SciChartSurface>
                            <Canvas Grid.Column="1" Background="Transparent"></Canvas>

                            <GroupBox x:Name="setupItem" Grid.Column="2" Margin="5" Width="200"
                                      Visibility="{Binding Path=DataContext.SetupVisibility, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type UserControl}}}">
                                <GroupBox.Header>
                                    <StackPanel Orientation="Horizontal">
                                        <Label Content="Setup" />
                                        <Label Content=" " />
                                        <Label Content="{Binding Path=SetupDateTime, Converter={StaticResource DateTimeConverter}}"/>
                                    </StackPanel>
                                </GroupBox.Header>
                                <Grid>
                                    <Grid.RowDefinitions>
                                        <RowDefinition Height="20" />
                                        <RowDefinition Height="20" />
                                        <RowDefinition Height="20" />
                                        <RowDefinition Height="23" />
                                        <RowDefinition Height="20" />
                                        <RowDefinition Height="20" />
                                        <RowDefinition Height="20" />
                                        <RowDefinition Height="20" />
                                    </Grid.RowDefinitions>
                                    <Label Grid.Row="0" Content="Instrument" FontStyle="Italic"></Label>
                                    <StackPanel Grid.Row="1" Margin="5,0,0,0" Orientation="Horizontal">
                                        <Label Content="{Binding Path=SetupInstrument}"></Label>
                                    </StackPanel>
                                    <Label Grid.Row="2" Content="Description" FontStyle="Italic"></Label>
                                    <StackPanel Grid.Row="3" Margin="5,0,0,0" Orientation="Horizontal">
                                        <TextBox Text="{Binding Path=SetupDescription}" MaxLength="11" Name="TextBoxSetupDescription" TextChanged="TextBoxSetupDescription_TextChanged"></TextBox>
                                    </StackPanel>
                                    <Label Grid.Row="4" Content="Datablock" FontStyle="Italic"/>
                                    <StackPanel Grid.Row="5" Margin="5,0,0,0" Name="SetupName" Orientation="Horizontal">
                                        <Label Content="Name"/>
                                        <Label Content=" = "/>
                                        <Label Content="{Binding Path=SetupName}"></Label>
                                    </StackPanel>
                                    <StackPanel Grid.Row="6" Margin="5,0,0,0" Name="SetupDate" Orientation="Horizontal">
                                        <Label Content="Date"/>
                                        <Label Content=" = "/>
                                        <Label Content="{Binding Path=SetupDateTime, Converter={StaticResource DateConverter}}"/>
                                    </StackPanel>
                                    <StackPanel Grid.Row="7" Margin="5,0,0,0" Name="SetupTime" Orientation="Horizontal">
                                        <Label  Content="Time"/>
                                        <Label  Content=" = "/>
                                        <Label  Content="{Binding Path=SetupDateTime, Converter={StaticResource TimeConverter}}"/>
                                    </StackPanel>
                                    <Grid Background="Transparent" Grid.ColumnSpan="3"></Grid>
                                </Grid>
                            </GroupBox>

                        </Grid>

                        <c1:C1Expander Grid.Row="2" Margin="5" Name="c1ExpanderDescription" CornerRadius="2" 
                                       Header="{Binding Path=DataContext.Description, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type UserControl}}}" 
                                       HeaderFontSize="14" HeaderFontFamily="Segoe UI">
                            <!--<TextBlock Text="{Binding Path=Snapshot.Comments}" MouseEnter="ExtraInfo_MouseEnter" MouseLeave="ExtraInfo_MouseLeave" Tag="7" />-->
                            <!--<vc:AutoCompleteTextBox AutoText="{Binding Path=Snapshot.Comments}" Height="23" x:Name="acTextBoxComments" DelayTime="400" Threshold="2" MouseEnter="ExtraInfo_MouseEnter" MouseLeave="ExtraInfo_MouseLeave" Tag="7" />-->
                            <TextBox Text="{Binding Path=Snapshot.Comments}" MouseLeave="ExtraInfo_MouseLeaveDescription" Tag="7" AcceptsReturn="True" TextWrapping="Wrap" VerticalScrollBarVisibility="Auto"></TextBox>
                        </c1:C1Expander>
                        <c1:C1Expander Grid.Row="1" Margin="5,0,5,5" Name="c1ExpanderExtraInfo" CornerRadius="2" 
                                       Header="{Binding Path=DataContext.ExtraInfo, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type UserControl}}}" 
                                       HeaderFontSize="14" HeaderFontFamily="Segoe UI">
                            <Grid>
                                <Grid.RowDefinitions>
                                    <RowDefinition />
                                    <RowDefinition />
                                    <RowDefinition />
                                    <RowDefinition />
                                    <RowDefinition />
                                    <RowDefinition />
                                    <RowDefinition />
                                </Grid.RowDefinitions>
                                <Grid.ColumnDefinitions>
                                    <ColumnDefinition Width="100" />
                                    <ColumnDefinition />
                                </Grid.ColumnDefinitions>
                                <Label Margin="2" Grid.Column="0" Grid.Row="0" Content="{Binding Path=DataContext.ExtraInfoTitle, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type UserControl}}}"></Label>
                                <vc:AutoCompleteTextBox Grid.Column="1" Grid.Row="0" AutoText="{Binding Path=Snapshot.Title}"  Height="23" x:Name="acTextBoxTitle" DelayTime="400" Threshold="2" MouseEnter="ExtraInfo_MouseEnter" MouseLeave="ExtraInfo_MouseLeave" Tag="0"/>
                                <!--<TextBox Grid.Column="1" Grid.Row="0" Text="{Binding Path=Snapshot.Title}"></TextBox>-->

                                <Label Margin="2" Grid.Column="0" Grid.Row="1" Content="{Binding Path=DataContext.ExtraInfoSubTitle, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type UserControl}}}"></Label>
                                <vc:AutoCompleteTextBox Grid.Column="1" Grid.Row="1" AutoText="{Binding Path=Snapshot.SubTitle}"  Height="23" x:Name="acTextBoxSubTitle" DelayTime="400" Threshold="2" MouseEnter="ExtraInfo_MouseEnter" MouseLeave="ExtraInfo_MouseLeave" Tag="1"/>
                                <!--<TextBox Grid.Column="1" Grid.Row="1" Text="{Binding Path=Snapshot.SubTitle}"></TextBox>-->

                                <Label Margin="2" Grid.Column="0" Grid.Row="2" Content="{Binding Path=DataContext.ExtraInfoCompanyName, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type UserControl}}}"></Label>
                                <vc:AutoCompleteTextBox Grid.Column="1" Grid.Row="2" AutoText="{Binding Path=Snapshot.CompanyName}"  Height="23" x:Name="acTextBoxCompanyName" DelayTime="400" Threshold="2" MouseEnter="ExtraInfo_MouseEnter" MouseLeave="ExtraInfo_MouseLeave" Tag="2"/>
                                <!--<TextBox Grid.Column="1" Grid.Row="2" Text="{Binding Path=Snapshot.CompanyName}"></TextBox>-->

                                <Label Margin="2" Grid.Column="0" Grid.Row="3" Content="{Binding Path=DataContext.ExtraInfoCompanyInfo, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type UserControl}}}"></Label>
                                <vc:AutoCompleteTextBox Grid.Column="1" Grid.Row="3" AutoText="{Binding Path=Snapshot.CompanyInfo}"  Height="23" x:Name="acTextBoxCompanyInfo" DelayTime="400" Threshold="2" MouseEnter="ExtraInfo_MouseEnter" MouseLeave="ExtraInfo_MouseLeave" Tag="3"/>
                                <!--<TextBox Grid.Column="1" Grid.Row="3" Text="{Binding Path=Snapshot.CompanyInfo}"></TextBox>-->

                                <Label Margin="2" Grid.Column="0" Grid.Row="4" Content="{Binding Path=DataContext.ExtraInfoContactPerson, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type UserControl}}}"></Label>
                                <vc:AutoCompleteTextBox Grid.Column="1" Grid.Row="4" AutoText="{Binding Path=Snapshot.ContactPerson}"  Height="23" x:Name="acTextBoxContactPerson" DelayTime="400" Threshold="2" MouseEnter="ExtraInfo_MouseEnter" MouseLeave="ExtraInfo_MouseLeave" Tag="4"/>
                                <!--<TextBox Grid.Column="1" Grid.Row="4" Text="{Binding Path=Snapshot.ContactPerson}"></TextBox>-->

                                <Label Margin="2" Grid.Column="0" Grid.Row="5" Content="{Binding Path=DataContext.ExtraInfoContactInfo, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type UserControl}}}"></Label>
                                <vc:AutoCompleteTextBox Grid.Column="1" Grid.Row="5" AutoText="{Binding Path=Snapshot.ContactInfo}"  Height="23" x:Name="acTextBoxContactInfo" DelayTime="400" Threshold="2" MouseEnter="ExtraInfo_MouseEnter" MouseLeave="ExtraInfo_MouseLeave" Tag="5"/>
                                <!--<TextBox Grid.Column="1" Grid.Row="5" Text="{Binding Path=Snapshot.ContactInfo}"></TextBox>-->

                                <Label Margin="2" Grid.Column="0" Grid.Row="6" Content="{Binding Path=DataContext.ExtraInfoTestDevice, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type UserControl}}}"></Label>
                                <vc:AutoCompleteTextBox Grid.Column="1" Grid.Row="6" AutoText="{Binding Path=Snapshot.TestDevice}"  Height="23" x:Name="acTextBoxTestDevice" DelayTime="400" Threshold="2" MouseEnter="ExtraInfo_MouseEnter" MouseLeave="ExtraInfo_MouseLeave" Tag="6"/>
                                <!--<TextBox Grid.Column="1" Grid.Row="6" Text="{Binding Path=Snapshot.TestDevice}"></TextBox>-->
                            </Grid>
                        </c1:C1Expander>

                    </Grid>
                </Border>
            </Grid>
        </DataTemplate>

        <DataTemplate x:Key="SelectedTemplate">
            <Border BorderBrush="Yellow" BorderThickness="1" Margin="10" Background="{StaticResource SnapshotBackgroundBrush}" CornerRadius="5">
                <StackPanel Margin="5">
                    <Image Margin="2" Source="{Binding Path=Snapshot.Screen}" />
                    <TextBlock Margin="2" Text="{Binding Path=Snapshot.TimeStamp, Converter={StaticResource DateTimeConverter}}" Foreground="White" />
                    <TextBlock Margin="2" Text="{Binding Path=Snapshot.Location}" Foreground="White" />
                </StackPanel>
            </Border>
        </DataTemplate>

        <Style TargetType="{x:Type ListBoxItem}" x:Key="ContainerStyle">
            <Setter Property="ContentTemplate" Value="{StaticResource ItemTemplate}" />
            <Style.Triggers>
                <Trigger Property="IsSelected" Value="True">
                    <Setter Property="ContentTemplate" Value="{StaticResource ItemTemplate}" />
                </Trigger>
            </Style.Triggers>
            <Style.Resources>
                <SolidColorBrush x:Key="{x:Static SystemColors.HighlightBrushKey}" Color="Transparent" />
                <SolidColorBrush x:Key="{x:Static SystemColors.HighlightTextBrushKey}" Color="Transparent" />
                <SolidColorBrush x:Key="{x:Static SystemColors.ControlBrushKey}" Color="Transparent" />
            </Style.Resources>
        </Style>
    </UserControl.Resources>

    <!--**********************************************************-->
    <!--***** Here starts the 'real' drawing of the controls *****-->
    <!--**********************************************************-->

    <Grid Name="mainGrid" Style="{StaticResource FlukeStyle}" HorizontalAlignment="Stretch" SizeChanged="MainGrid_SizeChanged">
        <Grid.RowDefinitions>
            <RowDefinition Height="*" />
            <RowDefinition Height="63" />
        </Grid.RowDefinitions>

        <Image Grid.Row="0" Visibility="{Binding ImageVisibility}" Source="{Binding Path=ScreenImage, Converter={StaticResource ImageConverter} }" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Margin="5"></Image>
        
        <ListBox Style="{StaticResource ListBoxStyle}" Grid.Row="0" Name="listBoxSnapshots" HorizontalContentAlignment="Stretch" ItemContainerStyle="{StaticResource ContainerStyle}" ItemsSource="{Binding Snapshots}" SelectedItem="{Binding SelectedItem}" BorderThickness="0" Background="Transparent" SelectionMode="Extended" MouseDoubleClick="ListBoxSnapshots_MouseDoubleClick" Visibility="{Binding ListboxVisibility}">
            <i:Interaction.Triggers>
                <i:EventTrigger EventName="SelectionChanged">
                    <cmd:EventToCommand Command="{Binding SelectionChangedCommand}" CommandParameter="{Binding SelectedItems, ElementName=listBoxSnapshots}" />
                </i:EventTrigger>
                <i:EventTrigger EventName="MouseDoubleClick">
                    <i:InvokeCommandAction Command="{Binding DoubleClickCommand}"/>
                </i:EventTrigger>
            </i:Interaction.Triggers>
            <ListBox.ItemsPanel>
                <ItemsPanelTemplate>
                    <WrapPanel Name="wrapPanelListBox" Orientation="Horizontal" IsItemsHost="True" 
                                      Width="{Binding Path=DataContext.WrapPanelWidth, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type UserControl}}}"
                        />
                </ItemsPanelTemplate>
            </ListBox.ItemsPanel>
        </ListBox>

        <Border BorderBrush="Black" BorderThickness="1" Margin="2,1,2,2" HorizontalAlignment="Stretch" Grid.Row="1">
            <Grid>
                <StackPanel Orientation="Horizontal" HorizontalAlignment="Stretch" Visibility="{Binding CheckboxesVisibility}">
                    <CheckBox Style="{StaticResource styleCustomCheckBox}" Content="Screen" IsChecked="{Binding ScreenChecked}"/>
                    <CheckBox Style="{StaticResource styleCustomCheckBox}" Content="Waveform" IsChecked="{Binding WaveformChecked}"/>
                    <CheckBox Style="{StaticResource styleCustomCheckBox}" Content="Setup" IsChecked="{Binding SetupChecked}"/>
                </StackPanel>
                <Button HorizontalAlignment="Center" Content="Close" Height="32" Width="75" Visibility="{Binding ImageVisibility}" Command="{Binding CloseImageCommand}"></Button>
            </Grid>
        </Border>

    </Grid>
</UserControl>

Thanks and best regards,
Egbert

0 votes
7k views

I’ve just upgraded to scichart V2.2.3. Under V1.7, when chart data was loaded, it autoranged to the displayed data. But now, every chart’s Y axis goes from 0 to 10 (even though my data range is 1.1-1.6. I also have a ZoomExtentsModifier in my xaml. It used to work, but now double clicking the Y axis does nothing. Any ideas?

thanks,

0 votes
7k views

I need numAxis.MajorStartIndex = 1;

XValue is sequentially

 public class CustomAxis : NumericAxis
    {
        public override string FormatText(IComparable value)
        {
         ...
        }
    }
2 votes
11k views

Hello,

based on your sample Screenshots, XPS Printing, X-Axis Text Labels i render a offscreen SciChart and copy it to the clipboard. It seems to works, but the Axis labels of X and Y axes are at the wrong positions (they are all at the same position). Please see the sample attached.

Many thanks,
Robin

1 vote
7k views

I want to add series dynamicaly in code behind. I am creating my own LegendData which needs to add series to the chart.

I was thinking of adding all series at once and make them invisible and then when i want to show one i just change the IsVisible flag.

Will this result in good performance, or would it be faster if I add and remove the series each time i want to see them?

0 votes
7k views

Hi guys,

I’ve noticed that in my application, the Rollover Modifier vertical line is rendering off-center compared to gridlines. I stack a couple of SciCharts on top of each other and they both utilise the Rollover. This is causing a funny look. Please see the attached screenshot for more info.

It also appears that the RolloverMarker is also rendering a little off-center with reference to the gridlines and the datapoints. I’ve attached a screenshot from the SciChart Examples for this one.

2 votes
11k views

Hi
I not really understand how i could display the X and Y value separated in a rolloverLabel?
In the example is always on value like Y.
Can you help me?

Thanks

  • Marcel asked 9 years ago
  • last active 7 years ago
0 votes
7k views

Hey guys,

A quick one; is there a way I can hide the tooltip that the RolloverModifier displays on the XAxis when it is in use? This has nothing to do with the regular RolloverTemplate tooltip or hit-testing data points.

Screenshot attached to be clear đŸ™‚

Thanks,
Miles

PS bonus question: can I style what it looks like? I might want to tweak the background colour or something later on, but for now just removing it for one of my Charts is the hurdle I need to jump over đŸ™‚

0 votes
8k views

Hi all,

In my samples (see attached file) I have two tabs in AvalonDock Control. The first tab contains SciChart and DataGrid, the second tab contains button for the generate data. Go to the second tab and clicking on the button come to the first tab. As you can see, data grid works perfectly, but chart not. You can also un comment OnButtonCommand in the constructor and you will be see that the chart is working correctly. How can I resolve this problem?

UPDATE:

After Yuriy’s Comment, I tried this

public class SciChartSurfaceEx : SciChartSurface
{
   public override void OnApplyTemplate()
   {
       base.OnApplyTemplate();

       IsVisibleChanged += OnVisibleChanged;
   }

   private void OnVisibleChanged(object sender, DependencyPropertyChangedEventArgs e)
   {
       foreach (var renderableSeries in RenderableSeries)
       {
           renderableSeries.DataSeries.InvalidateParentSurface(RangeMode.None);
           renderableSeries.DataSeries.InvalidateParentSurface(RangeMode.ZoomToFit);
           renderableSeries.DataSeries.InvalidateParentSurface(RangeMode.ZoomToFitY);
       }
            
       ViewportManager.InvalidateParentSurface(RangeMode.None);
       ViewportManager.InvalidateParentSurface(RangeMode.ZoomToFit);
       ViewportManager.InvalidateParentSurface(RangeMode.ZoomToFitY);

       ZoomExtents();
   }
}

I tried all options, but no effect. Any ideas?

Thanks,
Arthur

0 votes
8k views

Hey guys,

I am setting the GridLinesPanelStyle property of my SciChartSurface to the following Style from the Resources of the parent Border element:

<Style x:Key="GridLinesPanelStyle" TargetType="{x:Type axes:GridLinesPanel}">
    <Setter Property="KeyboardNavigation.ControlTabNavigation" Value="None" />
    <Setter Property="IsTabStop" Value="False" />
    <Setter Property="Background" Value="Transparent" />
    <Setter Property="BorderBrush" Value="{StaticResource ChartBorderBrush}" />
</Style>

When snooping down into the “PART_GridLinesArea” I see that the Background is set to #FF353535 from the “Parent Template”. It gets interesting; I can Delve into the Style property of the same element and see my setters from the above snippet of code.

This approach was working pre-SciChart 2.0 and it appears to be the approach being used by the Examples suite as well, but I can’t yet get that running with my licence (there is another thread asking for help to fix this too ;)!).

Thanks for your support,
Miles

1 vote
7k views

Hi,

I’m evaluating charts and would like to know if SciChart supports selection of data points. More details:
1. Multiple selection with CTRL and Shift
2. Visual styleable feedback showing which points are selected

Regards,
Fredrik

3 votes
12k views

The issue I’m dealing with is that after setting up the SeriesSelectionModifier, I require a double-click (and a very, very precise double click, at that) to select a series. Naturally, this is also competing with the ZoomExtents() call that is the normal effect of a doubleclick.

<!-- Chart -->
        <scichart:SciChartSurface Grid.Column="1" Grid.Row="1" x:Name="sciChartSurface"
                                  SeriesSource="{Binding SeriesList, Mode=OneWay}"
                                  ChartTitle="{Binding Title}"
                                  >

            <scichart:SciChartSurface.XAxis>
                <scichart:NumericAxis x:Name="AxisX" Id="AxisX" AxisTitle="{Binding XTitle}" AxisAlignment="Bottom" />
            </scichart:SciChartSurface.XAxis>

            <scichart:SciChartSurface.YAxes>
                <scichart:NumericAxis x:Name="AxisY1" Id="AxisY1" AxisTitle="{Binding Y1Title}" AxisAlignment="Left"
                                      />
                <scichart:NumericAxis x:Name="AxisY2" Id="AxisY2" AxisTitle="{Binding Y2Title}" AxisAlignment="Right"
                                      IsEnabled="{Binding ShowY2Axis}"
                                      Visibility="{Binding RelativeSource={RelativeSource Self},
                                                           Path=IsEnabled,
                                                           Converter={StaticResource convBooleanToVisibility}}"
                                      />
            </scichart:SciChartSurface.YAxes>

            <!-- Modifiers -->
            <scichart:SciChartSurface.ChartModifier>

                <scichart:ModifierGroup>

                    <!-- TODO: Comment -->
                    <scichart:ZoomPanModifier ExecuteOn="MouseRightButton" />

                    <!-- TODO: Comment -->
                    <scichart:RubberBandXyZoomModifier IsEnabled="True" x:Name="rubberBandZoomModifier" IsXAxisOnly="False" ZoomExtentsY="False" IsAnimated="True"/>

                    <!-- TODO: Comment -->
                    <!--<scichart:RolloverModifier x:Name="rolloverModifier" DrawVerticalLine="False" UseInterpolation="True"  SourceMode="AllSeries" />-->

                    <!-- TODO: Comment -->
                    <scichart:CursorModifier x:Name="cursorModifer" SourceMode="AllSeries" UseInterpolation="True"/>

                    <!-- TODO: Comment-->
                    <scichart:ZoomExtentsModifier />

                    <!-- Exposes a LegendData property (of type ChartDataObject) which can be accesed via elementName from another control -->
                    <!-- ChartDataObject exposes a list of SeriesInfo -->
                    <scichart:LegendModifier x:Name="legend" GetLegendDataFor="AllSeries"/>
                    
                    <!-- Provides selection of series and custom styling options (to the selected series) -->
                    <scichart:SeriesSelectionModifier SelectedSeriesStyle="{StaticResource selectedSeriesStyle}" ExecuteOn="MouseLeftButton"
                                                      />
                    
                </scichart:ModifierGroup>
            </scichart:SciChartSurface.ChartModifier>

        </scichart:SciChartSurface>
0 votes
8k views

Hey guys,

i’m evaluating some wpf chart frameworks for our company.

Our goal is to get a heatmap with a custom image as background (e.g. a sports ground). Is there any possibility to achive this goal with scichart?

thx
Daniel

1 vote
7k views

‘Hi i get a weird problem:

The type or namespace name ‘XyDataSeries’ could not be found (are you missing a using directive or an assembly )

I also get the error with IChartSeriesViewModel, FastLineRenderableSeries and IXyDataSeries

0 votes
10k views

Hi there

I have written a stock chart application. As part of that I have a drop down box that allows the selection of the bar timeframe (e.g. 1m , 5m, … 1r, 4h etc). It all works fine. However, if I bring up a chart and then do some zooming and panning AND THEN select a new timeframe, sometimes the data is not initially visible and I have to scroll the chart to find it ! Should I be resetting the visible range in some way?

Thanks

Paul

0 votes
9k views

Hi

How I can change the Y Axis title to be a Horizontal position?
By default the title is always in vertical position.

0 votes
4k views

Hi,

I’m trying to follow the instructions here: https://www.scichart.com/documentation/v5.x/Tutorial%2007%20-%20Adding%20Annotations.html
to create a subclass of CustomAnnotation. I have copied the attributes given in the example (VerticalAnchorPoint=”Bottom” HorizontalAnchorPoint=”Center”) but I still get the error “An attribute name is missing” on anything I put after the attributes. Are there other attributes that may be required for CustomAnnotation, not given in this example?

Thanks,
Rachel

1 vote
8k views

As usual the basics of SciChart seem to be eluding me and I can’t get the simplest of features to work (hence the reference to it in the title).

All I want is an annotation in the top left of the screen in which I can dynamically change the text from the code behind – but no matter what I do it just wouldn’t do it. I therefore started a test project to see if I could work out what was going on and have recreated the problem only using XAML.

It would seem the annotation will only appear if the XAxis is defined as a “CategoryDateTimeAxis” AND it’s defined within “SciChartSurface.XAxes” tags. Any other combination and it won’t work.

Anyway – if someone could cast their eye over my test code and explain what’s happening I’d be most grateful.

<Window
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:s="http://schemas.abtsoftware.co.uk/scichart" x:Class="AnnotationTest.MainWindow"
    Title="MainWindow" Height="350" Width="525">
<Grid>

    <s:SciChartSurface HorizontalAlignment="Stretch" VerticalAlignment="Stretch" s:ThemeManager.Theme="Chrome">

        <!-- Works - Slimmed down from the "Annotations are easy" example 
        <s:SciChartSurface.XAxes>
             <s:CategoryDateTimeAxis AxisAlignment="Bottom" AxisTitle="XAxis 1" Id="XAxis1" TextFormatting="0.0#" AutoRange="Always"/>
        </s:SciChartSurface.XAxes> 
        -->
        <!-- Doesn't Work and this is from the "Interactions with Annotations" example 
        <s:SciChartSurface.XAxis>
            <s:CategoryDateTimeAxis AutoRange="Always"/>
        </s:SciChartSurface.XAxis>   
        -->

        <!-- Doesn't Work - Slimmed down from the "Create Annotations Dynamically" example
        <s:SciChartSurface.XAxis>
            <s:CategoryDateTimeAxis/>
        </s:SciChartSurface.XAxis>
        -->

        <!-- Doesn't Work - How our Axis are currently defined and what I would like to put a text annotation on
        <s:SciChartSurface.XAxis>
            <s:DateTimeAxis AxisTitle="Date" Id="XAxis1" AxisAlignment="Bottom"></s:DateTimeAxis>
        </s:SciChartSurface.XAxis>
        -->

        <s:SciChartSurface.YAxis>
            <s:NumericAxis TextFormatting="0.0#" VisibleRange="0, 10"/>
        </s:SciChartSurface.YAxis>

        <s:SciChartSurface.Annotations>
            <s:TextAnnotation HorizontalAnchorPoint="Center" Text="Anchor Center (X1, Y1)" VerticalAnchorPoint="Bottom" X1="5.0" XAxisId="XAxis1" Y1="8.0"/>
        </s:SciChartSurface.Annotations>

    </s:SciChartSurface>

</Grid>

0 votes
6k views

I have some text items which are bound to the “DataValue” members of CursorModifier’s “AxisInfo”. These work just fine most of the time. But after enabling and then disabling a particular mode in my program which involves a customized version of RubberbandXyZoomModifier, the X-axis data in AxisInfo no longer responds to my cursor position. Curiously, the Y-axis data continues to work fine.

I’m still using SciChart version 2.3 (I haven’t upgraded to 3.x yet). Is there a chance what I’m seeing is a bug in SciChart? I can’t find anything in my code which could cause this behavior, at least not yet…

Thanks,
–George

  • yefchak asked 7 years ago
  • last active 7 years ago
0 votes
2k views

Has anyone ever encountered this problem?
Could you give me a help? How to solve this problem?
The app didn’t run in the method of ‘getStrokeColors()’, when I debugged.

public class BubbleChartFragment extends ExampleBaseFragment {
    ...

    {
    ...
    FastBubbleRenderableSeries mRSeries = sciChartBuilder.newBubbleSeries()
                    .withDataSeries(dataSeries)
                    .withZScaleFactor(zScaleFactor / 10f)
                    .withBubbleBrushStyle(new SolidBrushStyle(0xffff0000))
                    .withAutoZRange(false)
                    .withStrokeStyle(0xff00ff00, 20f)
                    .withPaletteProvider(new StrokePaletteProvider())
                    .build();
    }

    private class StrokePaletteProvider extends PaletteProviderBase<FastBubbleRenderableSeries> implements IStrokePaletteProvider {
            private final IntegerValues colors = new IntegerValues();
            private final int[] desiredColors = new int[]{0xFF00FF00, 0xFF0000FF};

            protected StrokePaletteProvider() {
                super(FastBubbleRenderableSeries.class);
            }

            @Override
            public void update() {
                final BubbleRenderPassData currentRenderPassData = (BubbleRenderPassData) renderableSeries.getCurrentRenderPassData();

                final int size = currentRenderPassData.pointsCount();
                colors.setSize(size);

                final int[] colorsArray = colors.getItemsArray();
                final int[] indices = currentRenderPassData.indices.getItemsArray();
                for (int i = 0; i < size; i++) {
                    final int index = indices[i];
                    colorsArray[i] = desiredColors[index % 2];
                }

            }

            @Override
            public IntegerValues getStrokeColors() {
                return colors;
            }
        }
    }
  • SiYuan Ou asked 2 years ago
  • last active 2 years ago
1 vote
6k views

Hi there,

Following your example “Change Render Series Type” I’d like to know if there is a straightforward way of extending it to include the XyScatterRenderSeries? I’d like to be able to have relatively the same styled appearance when selected and toggled between a FastLineRenderableSeries and an XyScatterRenderableSeries but am uncertain of how this would be accomplished. I apologize in advance if the answer is obvious, I’m quite new to this whole WPF, C#, MVVM thing and any help would be appreciated.

Matt

  • Matt Brown asked 6 years ago
  • last active 6 years ago
0 votes
4k views

Hi,

I’ve got an issue with ChartModifiers in following scenario. I’ve got bunches of signals, where every signal carry data from different sensor. Bunches are recorded at individual sessions. I need to look at them collectively, so I choose some signals from one bunch and some signals from another bunch, where one signal = one SciChartSurface control and every SciChartSurface control is aligned in sequencer-like way (like yours Multi-Pane Stock Chart example), because I want to see signals one under another. I need to have some group of ChartModifiers acting on all choosen signals, because time scale should be preserved (as in yours example) – it works in my solution. But I also need to apply a modifier to pan, that should works only on signals that are part of certain bunch, because starting point in time of certain bunch signals don’t have to be preserved.

Assuming, zoom should works on every signal from every bunch, but panning should works only on signals from one bunch. I already gain zoom functionality by the means of ModifierGroup and MouseManager.SetMouseEventGroup(), but i don’t know how to add the panning. Could you give me any suggestions, how can I handle this?

I’m sending some screens below.

0 votes
3k views

Hi,

I´ve encountered following problem. My application should visualize variables of a machine. The user can select those variables an organize them in goups. For each group a SciChartSurface should be visualized with the selected variable as DataSeries.

Therefore I created a ViewModel for those groups. Holding them in a ObservableCollection wich is bound to an ItemsControl:

<ItemsControl
        Grid.Row="1"
        Grid.Column="1"
        Grid.ColumnSpan="6"
        HorizontalContentAlignment="Stretch"
        VerticalContentAlignment="Stretch"
        PreviewMouseWheel="XAxis_MouseWheel"
        PreviewMouseUp="ListView_OnMiddleMouseUp"
        d:PreviewKeyDown="ListView_OnPreviewKeyDown"
        d:PreviewKeyUp="ListView_OnPreviewKeyUp"
        ItemsSource="{Binding ChartViewModels}"
        >
        <ItemsControl.ItemsPanel>
            <ItemsPanelTemplate>
                <UniformGrid Columns="1"/>
            </ItemsPanelTemplate>
        </ItemsControl.ItemsPanel>
        <ItemsControl.ItemTemplate>
            <DataTemplate DataType="traceControl:ChartViewModel">
                <Grid
                    HorizontalAlignment="Stretch"
                    VerticalAlignment="Stretch"
                    >

                    <s:SciChartSurface Loaded="ChartSurface_Loaded" 
                                       Unloaded="ChartSurface_Unloaded"
                                       Background="White"

                                       >

                      <!-- Some other stuff is also in here, modifiers and axissetup -->

                    </s:SciChartSurface>
                </Grid>
            </DataTemplate>
        </ItemsControl.ItemTemplate>

    </ItemsControl>

There is a Refresh-Action. It does clearing the the ViewModel Collection and creating new ViewModels depending on the configuration and fill them in the ViewModel Collection.

If both actionparts (clearing and filling data) were executed together in for example the ICommand of a button, the memory footprint is increasing each time the refresh button is hit.

If the actionparts were executed one by one, e.g. a clear button and a fill button, everything is fine.

Do I miss something?

Thanks in advance!

Markus

p.s. I was not allowed to add Screenshots of dotMemory

1 vote
5k views

I’m attempting to integrate some of the tutorial swift code into my app and I’m getting stuck on this error. Seems like some macro isn’t running.

“Use of unresolved identifier ‘SCIGeneric'”

Code is like this: lineDataSeries.appendX(SCIGeneric(i), y: SCIGeneric(sin(Double(i))*0.01))

I’ve done “import SciChart” and most things seem to work fine except this. Any ideas? Thanks

0 votes
7k views

Hi folks,

In order to test something, I decided to load the sample Abt.Controls.SciChart.Core.Wpf.Example which installs with SciChart. When I try to run it, I get the following VS2012 error. I did a reinstall (or rather, a “repair” install), but nothing changed.

Error 1 The command “pushd “C:\Program Files (x86)\ABT Software Services Ltd\SciChart v2.1.1\Examples\Abt.Controls.SciChart.Wpf.Example\Examples”
UpdateWpfExamples.bat
popd
if exist “C:\Program Files (x86)\ABT Software Services Ltd\SciChart v2.1.1\Examples\Abt.Controls.SciChart.Wpf.Example\bin\Debug\Abt.Controls.SciChart.Example.exe.locked” del “C:\Program Files (x86)\ABT Software Services Ltd\SciChart v2.1.1\Examples\Abt.Controls.SciChart.Wpf.Example\bin\Debug\Abt.Controls.SciChart.Example.exe.locked”
if not exist “C:\Program Files (x86)\ABT Software Services Ltd\SciChart v2.1.1\Examples\Abt.Controls.SciChart.Wpf.Example\bin\Debug\Abt.Controls.SciChart.Example.exe.locked” move “C:\Program Files (x86)\ABT Software Services Ltd\SciChart v2.1.1\Examples\Abt.Controls.SciChart.Wpf.Example\bin\Debug\Abt.Controls.SciChart.Example.exe” “C:\Program Files (x86)\ABT Software Services Ltd\SciChart v2.1.1\Examples\Abt.Controls.SciChart.Wpf.Example\bin\Debug\Abt.Controls.SciChart.Example.exe.locked”” exited with code 1. Abt.Controls.SciChart.Core.Wpf.Example

1 vote
10k views

Hi,

I would like to achieve dynamic loading finely sampled data from db when user zooms in.

For example I would like to display 1 month of data sampled by day (one sample per each day). As user zooms in to day-level, I would like to load data only for visible day but sampled in finer resolution (for example one sample per minute). User could zoom in further to seconds or milliseconds details.

I could probable detect displayed time range and load data with corresponding sampling and switch the dataset bound to the control.

But after that the control will be bound only to visible portion of time interval and user will not be able to zoom out back to coarser level of detail (ie whole month).

Is there a way how to do this?

Thanks,
Petr

  • pal asked 8 years ago
0 votes
534 views

Hi, I noticed that Heattexture: [object Object] is logged hundreds/thousands of times while interacting with a heatmap. This isn’t my console log, as it is a very simple implementation and there are no logs on my front end, with nothing called Heattexture in my repository.

I’m guessing that this is a leftover console log that needs to be removed, as it occurs in both my development and production Webpack builds.

Most of the time it does not cause any performance issues, but once I did see the heatmap flickering at roughly the same rate of the console log.

Screenshot attached.

Thanks!

0 votes
0 answers
367 views
.

Problem was a mistake on my side, please remove this question.

  • T0 bi asked 5 months ago
  • last active 5 months ago
0 votes
0 answers
1k views
.

.

1 vote
3k views

Visual Studio 2015

This isn’t a critical issue since it is handled but since it didn’t do this for the old version I thought I’d bring it to your attention. Awesome product BTW.

I just upgraded my .NET 4.0 SciChart 2D application from SciChart version 4.1.1.8645 to 4.2.1.9358.
Now I get the following (handled) exception message in the output window if I use a legend with my chart:

Exception:
System.Windows.Data Warning: 40 : BindingExpression path error: ‘ScrollViewer’ property not found on ‘object’ ”LegendPlaceholder’ (Name=”)’. BindingExpression:Path=ScrollViewer.HorizontalScrollBarVisibility; DataItem=’LegendPlaceholder’ (Name=”); target element is ‘SciChartLegend’ (Name=”); target property is ‘HorizontalScrollBarVisibility’ (type ‘ScrollBarVisibility’)

This XAML the triggers the exception (comment it out and exception goes away):

                        <s:SciChartSurface.ChartModifier>
                            <s:ModifierGroup>
                                <s:LegendModifier ShowLegend="True" />
                            </s:ModifierGroup>
                        </s:SciChartSurface.ChartModifier>

How to reproduce:
– Take the EEG sample with the latest SciChart version (4.2.1.9358)
– Change the target framework to .NET 4.0
– Change the SciChart references to use the SciChart 4.2, net40 DLLs.

I made a test solution for the following combinations:
.NET 4.5 with SciChart 4.2 works
.NET 4.0 with SciChart 4.2 throws exception
.NET 4.0 with SciChart 4.1 works

0 votes
7k views

I haven’t found anywhere on the site where the new Visual Studio and .Net Framework is listed. Has there been any testing done up til now on it?

Any plans yet for when/if they will be supported?

0 votes
540 views

.Net 6 MAUI preview has been released, so may i know scichart support MAUI ?
Can we use Xmarin charts directly to MAUI app ?

Can you provide some examples for MAUI ?

  • Abhilash R asked 3 months ago
  • last active 3 months ago
0 votes
0 answers
799 views

I’m using the DirectX 11 renderer.
Issue can be best seen in this image:

1 pixel errors

You can see that especially between the colors you can see lots of “dots”, which appear quite randomly as you zoom around.
But even in the black part some of these are created, so it is not exclusively to the multi color part.

I’m not sure why it happens and how to fix it, it seems like in some situations for some reason 1 pixel is left out for coloring (keeps background color).
I created this with lots of lines from a 60 hz input signal, and each signal gets drawn as a line. While the end result itself looks perfect, I’m getting these artifacts everywhere.

I suspect it happens from an optimization which is why I tried to turn them all off, but I wasn’t been able to find such a setting.
Any idea on how to fix this? đŸ™‚

1 vote
9k views

Hi!

I would like to ask what is the best strategy to implement 1-to-many relationship between DataSeries and SciChartSurfaces, when charts are shown in a second window and presumably rendered in its UI thread.

Currently I have a root object in the main window that creates and carry updates for a single DataSeries. The object has a property that creates a new SciChartSurfaces instance programmatically everytime, as the property is read. As a chart is created, I assign the same DataSeries as source for chart’s RenderableSeries.

This approach allows me to multiple charts in the second window and all these chart share the same dataseries on the root object. However, I have some issues with flicking, re-rendering and updating. For example, only the most recently created chart redraws after updates in the dataseries. I use dataSeries.SuspendUpdates() and batch Append but I guess it works only for the last chart.

I attached here a screenshot showing what happening when the shared DataSeries is filled with random values in real-time.

Could you recommend something for this scenario?

Thanks in advance,

Ilia

  • corvex asked 7 years ago
  • last active 7 years ago
0 votes
2k views

Hi,
My requirement is to plot only half of uniform Heat map (1st triangle) chart as shown in attached image. So, is it possible to plot only 1st triangle just by passing input data as 1D array to UniformHeatmapDataSeries? . Does Scichart currently supports this feature?

Thanks
Deepak

  • deepak b asked 1 year ago
  • last active 1 year ago
0 votes
8k views

I’m having some difficulty getting 2.0 to run. (.net 4.0/64bit). I have created a simple windows forms app that attempts to
1) set the license key
2) instantiate a SciChartSurface

The SciChartSurface.SetLicenseKey method (seems) to work okay, but when I try to instantiate the surface I get the dreaded .dll file not found exception. I have checked twice and I am using the correct .dll for 4.0/64bit. (btw I have tried referencing the .dll directly and through the GAC)

ideas? Could you perhaps verify with the .csproj file provided?
exception follows ::

System.IO.FileLoadException occurred
HResult=-2146234304
Message=Could not load file or assembly ‘Abt.Controls.SciChart.Wpf, Version=2.1.4951.42832, Culture=neutral, PublicKeyToken=b55dd9efe817e823’ or one of its dependencies. The located assembly’s manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040)
Source=mscorlib
FileName=Abt.Controls.SciChart.Wpf, Version=2.1.4951.42832, Culture=neutral, PublicKeyToken=b55dd9efe817e823
FusionLog==== Pre-bind state information ===
LOG: User = LhoTse\Dan
LOG: DisplayName = Abt.Controls.SciChart.Wpf, Version=2.1.4951.42832, Culture=neutral, PublicKeyToken=b55dd9efe817e823
(Fully-specified)
LOG: Appbase = file:///C:/Development/Wild_Development/Wild_2013_3/Wild2/SciChart_2.0_simple_test/bin/x64/Debug/
LOG: DEVPATH = C:\ProgramData\Red Gate.NET Reflector\DevPath
LOG: Initial PrivatePath = NULL

Calling assembly : PresentationFramework, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35.

LOG: This bind starts in default load context.
LOG: Using application configuration file: C:\Development\Wild_Development\Wild_2013_3\Wild2\SciChart_2.0_simple_test\bin\x64\Debug\SciChart_2.0_simple_test.vshost.exe.config
LOG: Using host configuration file:
LOG: Using machine configuration file from C:\Windows\Microsoft.NET\Framework64\v4.0.30319\config\machine.config.
LOG: Post-policy reference: Abt.Controls.SciChart.Wpf, Version=2.1.4951.42832, Culture=neutral, PublicKeyToken=b55dd9efe817e823
LOG: Attempting download of new URL file:///C:/Development/Wild_Development/Wild_2013_3/Wild2/SciChart_2.0_simple_test/bin/x64/Debug/Abt.Controls.SciChart.Wpf.DLL.
WRN: Comparing the assembly name resulted in the mismatch: Revision Number
ERR: Failed to complete setup of assembly (hr = 0x80131040). Probing terminated.

StackTrace:
at System.Reflection.RuntimeAssembly._nLoad(AssemblyName fileName, String codeBase, Evidence assemblySecurity, RuntimeAssembly locationHint, StackCrawlMark& stackMark, IntPtr pPrivHostBinder, Boolean throwOnFileNotFound, Boolean forIntrospection, Boolean suppressSecurityChecks)
at System.Reflection.RuntimeAssembly.InternalLoadAssemblyName(AssemblyName assemblyRef, Evidence assemblySecurity, RuntimeAssembly reqAssembly, StackCrawlMark& stackMark, IntPtr pPrivHostBinder, Boolean throwOnFileNotFound, Boolean forIntrospection, Boolean suppressSecurityChecks)
InnerException:

0 votes
2k views

Hi, I want to know buffer structure of 2d fastline.

I use very huge data per line.(maybe about 30,000 points/1 sec are appended to a line.)

But Memory usage is different than expected.

I use fifocapacity, and It is realtime graph.

Appending data, the memory usage increases too much.

Especially, It use more memory when drawing more lines.

For example,
Assuming one line uses 100mb, the five lines use 5000mb not 500mb.

Is it right??

  • CholJin Ko asked 2 years ago
  • last active 2 years ago
1 vote
6k views

Hi,

I may have run into a bug with the 2d heatmap where it doesn’t refresh. I implemented a ColorMapConverter similar to the solution here: https://www.scichart.com/questions/question/how-to-switchdefine-multiple-fastheatmaprenderableseries-colormap-for-the-same-chart

The Brushes are defined as

    <LinearGradientBrush x:Key="DefaultBrush">
        <GradientStop Offset="0" 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" />
    </LinearGradientBrush>

    <LinearGradientBrush x:Key="JetBrush">
        <GradientStop Offset="0" Color="#00008F" />
        <GradientStop Offset="0" Color="#00008F" />
        <GradientStop Offset="0.125" Color="#0000FF" />
        <GradientStop Offset="0.375" Color="#00FFFF" />
        <GradientStop Offset="0.625" Color="#FFFF00" />
        <GradientStop Offset="0.875" Color="#FF0000" />
        <GradientStop Offset="1" Color="#800000" />
    </LinearGradientBrush>

The chart will only refresh if the number of gradient stops is different. My workaround is to replicate the first GradientStop in JetBrush. If I remove this line, the chart will not refresh. The colorbar still refreshes correctly, but not the heatmap surface.

I’d like to implement many different colormaps and for now it seems like I can keep replicating GradientStops. I thought it was worth mentioning just in case it’s a bug. Anyway, please let me know if there is a better way to do this.

  • Kevin Yeh asked 5 years ago
  • last active 5 years ago
1 vote
4k views

Hi,
I have a problem with 2D heatmap performace due to lots of data. I tried some tips to increase performance (rendering priority, resampling etc.) but it is insufficient. I read a scichart forum about 2D heatmap performance and I found answer about possible performance improvement in future (https://www.scichart.com/questions/question/heatmap-2d-performance). I would like to ask you if there is any performance improvement in newer scichart version. Actually I’m working with version 4.0.5.8187.

Thanks for your answer.

1 vote
5k views

Hello,

trying to install SciChart on a VM now. WIndows 10, Visual Studio 2015. The installer asks me to accept the license condition. Then, when pressing “Install”… nothing happens.

Also: The install folder is VERY odd:

C:\Users**username removed***\AppData\Roaming\ABT Software Services Ltd\SciChart_v3.42.0.6778\

That is not exactly a good location to install anything.

Anyone knows how to install?

  • NetTecture asked 6 years ago
  • last active 6 years ago
0 votes
0 answers
401 views

Hello,

I’m using the recommended function well, thank you.
By the way, can I control the shade shown in the picture?
What I want is not detailed but simple functions such as light On, Off, Up, Down.

Best regards

Showing 1 - 50 of 3k results