【发布时间】:2011-03-28 23:08:52
【问题描述】:
我正在渲染一条插值曲线:
e.Graphics.DrawLines(new Pen(Color.Red), _interpolationPoints.ToArray());
有时会引发 OverflowException。
_interpolationPoints 数组的检查显示了一些非常大的科学计数法值,例如{X = 0.0 Y = -1.985174E+10}
我怀疑 Y = -1.985174E+10 是 GDI+ 无法处理的值。很好,但是我可以绘制的最大/最小 X 和 Y 值是多少,从而限制数据(并警告用户)而不是在绘制期间捕获溢出异常?是否记录了这些限制?
例如,我想做这样的事情:
if (yVal < float.MinValue || yval > float.MaxValue)
throw new OverflowException("Interpolation value too large to be rendered.");
在 _interpolationPoints 数组的填充过程中并停止该过程。 (float mix/max 顺便说一句不起作用。我仍然得到异常。)
【问题讨论】:
-
非常感谢。有趣的是,关于这些限制的信息很少。当然,我不是第一个编写代码以在 GDI+ 中绘制插值并且需要捕捉边缘值的人。
-
@Vulcan:请务必查看下面的答案。上面的问题仅包含无法完成的想法。例如。 float.MaxValue 不是对限制的有效测试!
-
我确实也查看了答案和文章。
标签: c# .net gdi+ drawing limit