私は、GDI +を多用して画像を操作するアプリケーションを持っているという、本当に奇妙な問題を抱えています。私のアプリケーションは.net 2.0ではうまく動作しますが、.net 4.0ではgdi + "メモリ不足"エラーでクラッシュしているというユーザからのレポートを取得しています。今、私は、 "メモリ不足" gdi +エラーは、エラーの多くのためのキャッチですが、なぜそれがネットで動作していることを知っています。ネット4..net2.0と.net 4.0 gdi +の違いは?
私は "コンポジットビットマップを作成するために、互いに重ね合わされます。このコントロールは.net 2.0ではなく、.net 4ではうまく機能しました。
ファイルシステムから10メガピクセルのjpegをロードしたときに画像がズームして変換されると、
さらに詳細を述べると、メモリエラーのうち、」これを返します任意の回転と400%より大きな4の意味の行列の規模でg.draw。
Windows 7のボックスにXPのボックスおよびNOTで発生します。ここでの違い何ができるか?
任意の受験者...ここ
がキャッチされた例外からログインして私のスタックトレースの範囲である。<Event>
<TimeStamp>11/30/10 11:02:43.706</TimeStamp>
<Source>APPro2</Source>
<EventType>Error</EventType>
<Message><![CDATA[##: OutOfMemoryException
Message:
Out of memory.
Stack Trace:
at System.Drawing.Graphics.CheckErrorStatus(Int32 status)
at System.Drawing.Graphics.DrawImage(Image image, Rectangle destRect, Int32 srcX, Int32 srcY, Int32 srcWidth, Int32 srcHeight, GraphicsUnit srcUnit, ImageAttributes imageAttrs, DrawImageAbort callback, IntPtr callbackData)
at System.Drawing.Graphics.DrawImage(Image image, Rectangle destRect, Int32 srcX, Int32 srcY, Int32 srcWidth, Int32 srcHeight, GraphicsUnit srcUnit, ImageAttributes imageAttr)
at Colorvision.Graphics.Layers.Picture.DrawBig(Graphics g) in D:\Colorvision_Workspaces\Colorvision\Graphics\Layers\Picture.cs:line 321
at Colorvision.Graphics.LayerCollection.DrawBig(Graphics e) in D:\Colorvision_Workspaces\Colorvision\Graphics\LayerCollection.cs:line 690]]></Message>
<EventID>0</EventID>
</Event>
はお時間をいただき、ありがとうございます。これは私の第一の質問はここにあると穏やかな。
0xA3のは、私は現時点でスタックトレースを持たないが、正確なg.drawコールは以下の通りです:
はg.DrawImage(
bmpBigPicture,
new Rectangle(
destBigX,
destBigY,
(int)(destBigWidth*Scale),
(int)(destBigHeight*Scale)),
0,
0,
bmpBigPicture.Width,
bmpBigPicture.Height,
GraphicsUnit.Pixel,
imgAttribs
);
スケールは1秒4
ようこそSO =)ちょうど確認するには...アプリケーションを** .net4 **をターゲットに設定してから再構築するとこの問題が発生しますか? – gideon
万が一スタックトレースがありますか?そして 'g.draw'メソッドは何ですか? –
はい、正しいです。それはXPのボックスでのみ発生するように見える、窓7ボックスは魅力のように動作します。 –