Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/336.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何治疗C#winforms摇摆图?_C#_Wpf_Winforms_Xaml_Charts - Fatal编程技术网

如何治疗C#winforms摇摆图?

如何治疗C#winforms摇摆图?,c#,wpf,winforms,xaml,charts,C#,Wpf,Winforms,Xaml,Charts,我在C#WPF应用程序中实现了一些实时图表,但我使用的是WinForms图表,因为它们通常易于使用,而且性能惊人 不管怎样,我的图表运行得很好,除了一个我一生都无法解决的主要问题: 当我向图表中添加数据时,它有时只是调整自身大小。有时,它经常这样做,使自己摇摆不定,使图表非常讨厌阅读和处理 我的问题是:我该如何防止这个该死的图表不断调整自身大小 一些补充资料: 该图表包含在我的XAML中,如下所示: <WindowsFormsHost Grid.Row="1" Grid.ColumnSp

我在C#WPF应用程序中实现了一些实时图表,但我使用的是WinForms图表,因为它们通常易于使用,而且性能惊人

不管怎样,我的图表运行得很好,除了一个我一生都无法解决的主要问题:

当我向图表中添加数据时,它有时只是调整自身大小。有时,它经常这样做,使自己摇摆不定,使图表非常讨厌阅读和处理

我的问题是:我该如何防止这个该死的图表不断调整自身大小

一些补充资料:

该图表包含在我的XAML中,如下所示:

<WindowsFormsHost Grid.Row="1" Grid.ColumnSpan="2" Margin="5">
  <winformchart:Chart Dock="Fill" x:Name="Session0Chart">
    <winformchart:Chart.ChartAreas>
      <winformchart:ChartArea/>
    </winformchart:Chart.ChartAreas>
  </winformchart:Chart>
</WindowsFormsHost>
通过以下方式添加数据点:

//如果我们得到的分数太多,请移除头部
if(session.Chart.Series[0].Points.Count>=Properties.Settings.Default.ECGDataPoints)
{
session.Chart.Series[0].Points.RemoveAt(0);
}
//加分
对于(int i=data.samples.Length-1;i>=0;i--)
{
session.Chart.Series[0].Points.AddXY(session.ecgT,data.samples[i]);
session.ecgT+=session.ECGPeriod/(double)data.samples.Length;
}
//只看最后几秒钟
session.Chart.ChartAreas[0]。axix.max=session.ecgT;
session.Chart.ChartAreas[0].axix.Minimum=session.ecgT-Properties.Settings.Default.ECGTimeWindow;
您能提供的任何帮助都将非常感谢,这已经让我发疯太久了

chart.ChartAreas[0].InnerPlotPosition.X = 50;
chart.ChartAreas[0].InnerPlotPosition.Y = 5;
chart.ChartAreas[0].InnerPlotPosition.Width = 80;
chart.ChartAreas[0].InnerPlotPosition.Height = 80;

阅读。

您可以设置ChartArea
位置
内部绘图位置
以避免这些摆动

chrt.ChartAreas[0].Position.Auto = false;
chrt.ChartAreas[0].Position.Height = 70;
chrt.ChartAreas[0].Position.Y = 5;

chrt.ChartAreas[0].InnerPlotPosition.Auto = false;
chrt.ChartAreas[0].InnerPlotPosition.Height = 50;
chrt.ChartAreas[0].InnerPlotPosition.Y = 10;

您应该将X轴设置为
日期时间
,而不是
双倍
。反正是心电图。。。。 晃动是通过使用值(如0.100000001234)增加X轴引起的

// No wiggle
        chartNoWiggle.Series[0].Points.AddXY(xdatetime, r.NextDouble());

        if (chartNoWiggle.Series[0].Points.Count > 10)
            chartNoWiggle.Series[0].Points.RemoveAt(0);

        chartNoWiggle.ChartAreas[0].AxisX.Minimum = chartNoWiggle.Series[0].Points[0].XValue;
        chartNoWiggle.ChartAreas[0].AxisX.Maximum = xdatetime.ToOADate();

        xdatetime = xdatetime.AddMinutes(1);

// Wiggle
        chartWiggle.Series[0].Points.AddXY(xdouble, r.NextDouble());

        if (chartWiggle.Series[0].Points.Count > 10)
            chartWiggle.Series[0].Points.RemoveAt(0);

        chartWiggle.ChartAreas[0].AxisX.Minimum = chartWiggle.Series[0].Points[0].XValue;
        chartWiggle.ChartAreas[0].AxisX.Maximum = xdouble;

        xdouble += 0.10000000001234;