【问题标题】:Do the point collections on .NET charts have an upper limit?.NET 图表上的点集合是否有上限?
【发布时间】:2015-07-30 17:59:45
【问题描述】:

我不熟悉 .NET 的 System.Windows.Forms.DataVisualization.Charting 库中的图表功能。在我的探索性原型制作过程中,我创建了一个图表,我可以在其中添加随机点、更改图表类型等。但我注意到每次我在图表中添加超过 34998 个点(无论我使用哪种图表类型) ,整个图表消失并被一个大“X”取代。没有抛出异常,并且似乎不是点集合本身的限制。 (如果我在添加第 34999 点时单步执行代码,它会很好地添加到集合中;但是一旦重新绘制图表,它就会立即被 X 替换。

我意识到首先要在图表上包含大量点,我计划研究一些抽取技术来对我的输入数据进行下采样。但我只是想知道这个数字是否有硬限制,以及系统中的哪个模块是实际约束(数据集、绘图画布等)。我在the documentation 中找不到任何提及。有谁知道这样的限制吗?

【问题讨论】:

  • 我有超过 400,000 个点数的图表(15 台以上设备每 2 秒 24 小时的数据),虽然速度变慢,但加载得很好。
  • 当控件的 Paint 事件处理程序抛出异常时,Winforms 会自动绘制大红色 X。异常被吞没了,这就是为什么它看起来好像没有异常。顺便说一句,在输出窗口中很容易看到。您可以使用 Debug > Exceptions > Throw 复选框来获得更好的外观。
  • @HansPassant- 感谢您的建议,但遗憾的是输出窗口(设置为“显示调试输出”)不显示任何消息。此外,在“调试异常”对话框中,我检查了“抛出”和“用户未处理”下的每个框,但即使出现红色 X 后系统也不会中断。 (我注意到在该对话框中有一个添加异常的按钮;您是否恰好知道我可能正在寻找哪个异常?)
  • @HansPassant- 我越来越近了:在Tools->Options->Debugging->General 下,我未选中“仅启用我的代码”。正如您所建议的,系统现在因异常而中断。 (当我在那里时,我还注意到设置“将所有输出窗口文本重定向到立即窗口”被选中(默认情况下??)这解释了为什么我的输出窗口是空的。

标签: c# .net charts


【解决方案1】:

此折线图有 2 个系列,每个系列 1,000,000 点:

渲染需要 6 秒。我猜这个限制只是可用内存。 “Big Red X Of Doom”的一个常见原因是如果您添加的点超出了轴的最小值和最大值,以防您正在操纵它们。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-01-26
    • 1970-01-01
    • 1970-01-01
    • 2011-04-23
    • 2016-01-09
    • 2016-05-16
    • 2011-06-06
    • 1970-01-01
    相关资源
    最近更新 更多