我最近通过第三方工具在GDI+中遇到了一个OverflowException,这给我带来了一些问题。我正在努力追查这个问题的原因,然后决定是否有任何解决方案。
错误发生在返回等于GpStatus.ValueOverflow的错误代码11的SafeNativeMethods.Gdip.GdipFillPath()中。我不知道这是什么意思,也不知道是什么原因造成的。后果相当严重,因为我有一大块屏幕无法绘制。
此错误的堆栈跟踪为:
System.OverflowException:溢出错误。在System.Drawing.Graphics.CheckErrorStatus(Int32状态)在Northwoods.Go.GoRoundedRectangle.Paint(Graphics g处的System.Drawing.Graphics.FillPath(图形g,GoView视图,钢笔,画笔,画笔,GraphicsPath路径)在Northwoods.Go.GoView.PaintView(图形g,图形g,Northwoods.Go.GoView.onPaintCanvas(PaintEventArgs evt处的RectangleF clipRect)处的Northwoods.Go.GoView.OnPaint(PaintEventArgs evt),Int16层,Boolean disposeEventArgs) at System.Windows.Forms.Control.WmPaint(Message& m) at System.Windows.Forms.Control.WndProc(Message& m) at System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m) at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m) at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd,Int32消息,IntPtr wparam,IntPtr lparam)
显然,这里使用了两个参数。我无法控制的GraphicsPath和画笔。笔刷是由一个静态方法返回的,为了确保它的处理没有问题,我试着改变笔刷的属性来返回一个克隆,如下所示。然而,这似乎没有产生任何影响。
public Brush
{
get {
return MappingLinearGradient(this.Bounds).Clone();
}
}发布于 2009-05-21 14:06:07
IIRC,图形对象的最大平面面积为(1 << 24) -1\f25 => 1670万像素。
我不确定这个区域本身是否有限制,但我会调查一下。
https://stackoverflow.com/questions/893069
复制相似问题