我正在處理一個圓形菜單應用程序。TextureBrush導致內存泄漏,即使我配置它
在我使用位圖作爲背景之前,我必須將它裁剪爲一個圓。
好,我發現了一個代碼段用於裁剪圖像C# crop circle in a image or bitmap或:
public System.Drawing.Image x(string sourceFile, int circleUpperLeftX, int circleUpperLeftY, int circleDiameter)
{
Bitmap SourceImage = new Bitmap(System.Drawing.Image.FromFile(sourceFile));
Rectangle CropRect = new Rectangle(circleUpperLeftX, circleUpperLeftY, circleDiameter, circleDiameter);
Bitmap CroppedImage = SourceImage.Clone(CropRect, SourceImage.PixelFormat);
TextureBrush TB = new TextureBrush(CroppedImage);
Bitmap FinalImage = new Bitmap(circleDiameter, circleDiameter);
Graphics G = Graphics.FromImage(FinalImage);
G.FillEllipse(TB, 0, 0, circleDiameter, circleDiameter);
return FinalImage;
}
但代碼使得內存泄漏在管線6
好一會兒後,我嘗試添加TB.Dispose ();爲了防止它,但沒有幫助。
我該怎麼辦?
你是什麼意思的「導致內存泄漏」?在.net中真正泄漏內存是非常困難的。 (你基本上必須編寫一個容器類或者持有很多靜態引用。)誰告訴你它是第6行的呢? – cHao 2012-03-08 14:35:50
您是否嘗試過使用()塊? – Void 2012-03-08 14:37:00
這種方法是通過一些其他方法調用的,其中你有空的try catch塊,因此它吞下異常並且不會被丟棄? – formatc 2012-03-08 14:44:31