1

我对 .net 图表系列有一些问题。我像这样为系列添加积分

point = new DataPoint();
point.AxisLabel = result.Code;
point.YValues = new double[] { pointValue };

对于值 4.0343262175104857E+28,chart.SaveImage() 崩溃。

对于 Decimal,值太大或太小。

在 System.Web.UI.DataVisualization.Charting.Axis.GetRequiredLabelSize(ChartGraphics chartGraph, Single maxLabelSize, Single& resultSize) 在 System.Web.UI.DataVisualization.Charting.Axis.Resize( ChartGraphics chartGraph, ElementPosition chartAreaPosition, RectangleF plotArea, Single axesNumber, Boolean autoPlotPosition) at System.Web.UI.DataVisualization.Charting.ChartArea.Resize(ChartGraphics chartGraph) at System.Web.UI.DataVisualization.Charting.ChartPicture.Resize(ChartGraphics chartGraph , Boolean calcAreaPositionOnly) 在 System.Web.UI.DataVisualization.Charting.ChartPicture.Paint(Graphics graph, Boolean paintTopLevelElementOnly) 在 System.Web.UI.DataVisualization.Charting.ChartImage.GetImage(Single resolution) 在 System.Web.UI。数据可视化.图表.图表。SaveImage(流图像流)

但是,该值小于 decimal.MaxValue。如果我使用 int.MaxValue,它会起作用。

4

2 回答 2

0

我的猜测(这是一个猜测)是问题可能与此处相同/非常相似

看起来这可能是您从图表中的其他内容“冒泡”的错误(即不是直接设置 YValues,而是更接近 UI 的地方。

我猜测这是基于链接的帖子(类似问题),以及您的异常堆栈显示 UI 级别调用的事实,例如

System.Web.UI.DataVisualization.Charting.Axis.GetRequiredLabelSize

我唯一的建议没有示例项目/更多继续:尝试剥离图表的功能(禁用功能等),直到问题消失

或者,如果图表已经嵌入太多,那会很痛苦:用最简单的用法制作一个新图表,看看它是否给出了相同的异常。

抱歉帮不上什么忙。

于 2019-03-06T17:36:13.107 回答
0

我认为您的数字实际上可能大于 decimal.MaxValue

在此处查看 Jon Skeet 的回答:

https://stackoverflow.com/a/3413791/661584

于 2019-03-06T17:54:35.073 回答