缩放后MSChart未处理溢出异常

mic*_*ica 8 .net system.drawing mschart

这个问题在MSChart论坛上一直没有得到回答超过一年.

我不断在图表上获得溢出异常.我正在设置我的图表如下:

InstrChart.Legends.Clear();
dataArea = InstrChart.ChartAreas.Add("Instr1");
dataArea.AxisX.MajorGrid.Enabled = false;
dataArea.AxisY.MajorGrid.Enabled = false;
dataArea.CursorX.IsUserSelectionEnabled = true;
Run Code Online (Sandbox Code Playgroud)

我正在添加12个系列,每个系列大约10000点.

当我向下缩放以显示每个系列只有3或4个点时会发生异常.在我释放鼠标按钮进行缩放后,我立即得到以下异常:

System.OverflowException was caught   
  Message="Overflow error."   
  Source="System.Drawing"   
  StackTrace:   
     at System.Drawing.Graphics.CheckErrorStatus(Int32 status)   
Run Code Online (Sandbox Code Playgroud)

(等 - 请参阅上面的链接以获取完整的跟踪.)

我已经删除了图表的所有事件处理程序,没有运气停止从eventuall缩放导致此异常.我已经为图表设置了IsUserSelectionEnabled为false,并且在没有运气的情况下完成了代码缩放.

对这个问题的任何帮助都会很棒.干杯.

无论图表的其余部分是如何配置的,无论何时缩小"太远"(其含义可能会有所不同),任何时候都会出现此异常.有几个人报告了这个问题.异常助手表示它在System.Drawing.dll中.

这里有人有任何线索或解决方法吗?

zeF*_*chy 0

我设置了一个快速测试应用程序,但无法重现。

系列未缩放 系列完全缩放

这是我的系列初始化代码

chart1.Legends.Clear();
Random r = new Random();
for(int i = 0; i < 12; i++)
{
  Series series = new Series();
  series.ChartType = SeriesChartType.FastLine;
  for (int j = 0; j < 10000; j++)
  {
    series.Points.Add(r.NextDouble() + i + 3*Math.Sin((double)j/300.0f));
  }
  chart1.Series.Add(series);
  }
Run Code Online (Sandbox Code Playgroud)

这是图表初始化代码

chartArea1.AxisX.MajorGrid.Enabled = false;
chartArea1.AxisY.MajorGrid.Enabled = false;
chartArea1.CursorX.IsUserSelectionEnabled = true;
chartArea1.Name = "ChartArea1";
this.chart1.ChartAreas.Add(chartArea1);
this.chart1.Dock = System.Windows.Forms.DockStyle.Fill;
legend1.Name = "Legend1";
this.chart1.Legends.Add(legend1);
this.chart1.Location = new System.Drawing.Point(0, 0);
this.chart1.Name = "chart1";
this.chart1.Size = new System.Drawing.Size(616, 273);
this.chart1.TabIndex = 0;
this.chart1.Text = "chart1";
Run Code Online (Sandbox Code Playgroud)

异常数据是否相关?您是否也为 X 提供值?您的系列使用的值是非常小还是非常大?例如,您是否尝试过将级数设置为简单的正弦波?

另外你用的是什么版本的控件和VS?您的目标框架是什么?