2009-05-21 8 views
3

私はいくつかの問題を引き起こしているサードパーティのツールを介して最近GDI +内でOverflowExceptionが発生しています。私はこれの原因を突き止めようとしており、問題の解決策があるかどうかを判断しようとしています。GdiPlus OverflowException

SafeNativeMethods.Gdip.GdipFillPath()で、GpStatus.ValueOverflowに等しいエラーコード11を返しているときにエラーが発生しています。私はこれが何を意味しているのか、それを引き起こしているのか分かりません。その結果は非常に高いです。なぜなら、私は描かれない大画面の画面を持っているからです。

このエラーのスタックトレースは次のとおりです。

System.OverflowException:オーバーフローエラー。 at System.Drawing.Graphics.CheckErrorStatus(Int32ステータス)、System.Drawing.Graphics.FillPath(ブラシブラシ、GraphicsPathパス) at Northwoods.Go.GoShape.DrawPath(Graphics g、GoViewビュー、ペンペン、ブラシブラシ、GraphicsPathパス) Northwoods.Go.GoRoundedRectangle.Paint(Graphics g、GoViewビュー) at Northwoods.Go.GoLayer.Paint(Graphics g、GoViewビュー、RectangleF clipRect) at Northwoods.Go.GoView.PaintObjects(Boolean) Northwoods.Go.GoView.OnPaintでNorthwoods.Go.GoView.onPaintCanvas(PaintEventArgsのEVTでNorthwoods.Go.GoView.PaintView(グラフィックスG、RectangleFのclipRect) で、ブールビュー、グラフィックスG、RectangleFのclipRect) DOC) ( PaintEventArgs evt) at System.Windows.Forms.Control.Pain tWithErrorHandling(PaintEventArgsのE、Int16型層、ブールdisposeEventArgs)のSystem.Windows.FormsでSystem.Windows.Forms.Control.WndProc(メッセージ& M) でSystem.Windows.Forms.Control.WmPaint(メッセージ& M) で.Control.ControlNativeWindow.OnMessage(メッセージ& M)System.Windows.Forms.Control.ControlNativeWindow.WndProcで (メッセージ& M)System.Windows.Forms.NativeWindow.Callbackで (のIntPtr hWndは、MSGのInt32、のIntPtr WPARAM、 IntPtr lparam)

ここでは明らかに2つのパラメータが使用されています。私がコントロールできないGraphicsPathとBrush。ブラシは静的メソッドによって返され、それが問題ではないことを確認するために、次のようなクローンを返すようにBrushのプロパティを変更しようとしました。しかし、これは影響を及ぼさなかったようです。

public Brush 
{ 
    get { 
     return MappingLinearGradient(this.Bounds).Clone(); 
     } 
} 

答えて

3

IIRC、グラフィックオブジェクトの最大平面領域は、(1 < < 24)である - 1 => 1670万画素。

地域自体に制限があるかどうかはわかりませんが、私はそれを調べます。

+0

ありがとうございます。残念ながら、もう少し正常なものを再計算する前に、境界を非常に大きな値に設定していたようです。しかし、時々、このツール内の描画スレッドは、高さが適切に計算される前にこれらの新しい範囲を取得していました...そして明らかに、float.MaxValueはGraphicsオブジェクトにとって少し大きかったです。 – Ian

関連する問題