Ich habe ein wirklich seltsames Problem, wo ich eine Anwendung habe, die eine Menge von GDI + Manipulation von Bildern beteiligt. Wie das Zuschneiden von Zoom usw. Meine Anwendung funktioniert gut in .net 2.0, aber in .net 4.0 Ich bekomme Berichte von meinen Benutzern, dass es mit einem GDI + "nicht genügend Speicher" -Fehler stürzt. Jetzt weiß ich, dass der "out of memory" gdi + Fehler ein Haken für viele Fehler ist, aber warum würde es in .net 2.0 funktionieren und nicht auf .net 4..net2.0 vs .net 4.0 gdi + Unterschied?
Speziell ich habe eine Kontrolle, die "Schichten zeichnet "übereinander, um eine zusammengesetzte Bitmap zu erstellen. Dieses Steuerelement funktioniert gut in. NET 2.0 und nicht in. NET 4.
Es passiert, wenn ich eine 10 Megapixel JPEG aus dem Dateisystem geladen habe, und ich bin ein Zoom anwenden und auf das Bild zu transformieren.
um noch mehr Details zu geben. g.draw mit einer Matrixskala von 4 Bedeutung 400% größer mit jeder Drehung wird diese "out of memory error.
Es passiert nur auf XP-Boxen und nicht auf Windows 7 Boxen. Was könnte der Unterschied hier sein?
alle Abnehmer ...
hier ist das Ausmaß meiner Stack-Trace von der abgefangene Ausnahme protokolliert.
<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>
Vielen Dank für Ihre Zeit. sanft sein, wie dies hier meine erste Frage.
0xa3 Ich habe keinen Stack-Trace in dem Moment, aber der genaue g.draw Anruf unter:
g.DrawImage(
bmpBigPicture,
new Rectangle(
destBigX,
destBigY,
(int)(destBigWidth*Scale),
(int)(destBigHeight*Scale)),
0,
0,
bmpBigPicture.Width,
bmpBigPicture.Height,
GraphicsUnit.Pixel,
imgAttribs
);
wo Skala 1s 4 für 400%
Willkommen bei SO =) Nur um sicher zu stellen ... Sie legen Ihre Anwendung auf Ziel ** .net4 ** und dann neu aufgebaut und dann tritt dieses Problem auf? – gideon
Haben Sie zufällig eine Stapelverfolgung? Und was genau ist die "g.draw" -Methode? –
Ja, das ist richtig. und es scheint nur auf den xp-kästen passieren, die windows 7 boxen funktionieren wie ein charm. –