異常信息:spa
System.OutOfMemoryException: 內存不足。
在 System.Drawing.Graphics.CheckErrorStatus(Int32 status)
在 System.Drawing.Graphics.DrawImage(Image image, Rectangle destRect, Int32 srcX, Int32 srcY, Int32 srcWidth, Int32 srcHeight, GraphicsUnit srcUnit, ImageAttributes imageAttrs, DrawImageAbort callback, IntPtr callbackData)
在 System.Drawing.Graphics.DrawImage(Image image, Rectangle destRect, Int32 srcX, Int32 srcY, Int32 srcWidth, Int32 srcHeight, GraphicsUnit srcUnit, ImageAttributes imageAttr, DrawImageAbort callback)
在 System.Drawing.Graphics.DrawImage(Image image, Rectangle destRect, Int32 srcX, Int32 srcY, Int32 srcWidth, Int32 srcHeight, GraphicsUnit srcUnit, ImageAttributes imageAttr)
...
這個問題在外網也有一些討論,我傾向的說法是,XP的GDI+組件存在問題,對於像素格式PixelFormat有點特別的圖像,把它繪製到其它地方的時候處理很差ImageAttributes,因而引起異常。code
解決思路,既然同時知足這二者會報錯:orm
g.DrawImage(PixelFormat特別的Image, xxx, imageAttributes)
那麼只要錯開其一就行,好比這兩種就不會報:blog
g.DrawImage(常規Image, xxx, imageAttributes); //方法一 g.DrawImage(PixelFormat特別的Image, xxx); //方法二,不使用imageAttributes
因此能夠用方法二從原圖獲得一張像素格式正常的新圖,而後用方法一把它畫出去,就是弄個副本。內存
-END-it