我目前使用窗體上的繪畫事件將圖像繪製到屏幕上。 (想象一下背景圖像)以及該圖像頂部的一些矩形。PaintEvent內存泄漏
private void MainWindow_Paint(object sender, PaintEventArgs e)
{
e.Graphics.Clear(Color.CornflowerBlue);
e.Graphics.DrawImage(Image.FromFile(m_Directory + @"\Images\" + BackgroundText), m_Screen);
e.Graphics.FillRectangle(BGBrush, new Rectangle(X, Y, Width, Height));
e.Graphics.DrawString(Text, Settings.TextFont, Other.Settings.TextBrush, new Rectangle(X, Y + 2, Width, Height));
}
頁面被重新粉刷經常(幾乎每個鼠標移動事件),並導致大量內存使用。在停止繪製到表單之前達到1,500,000k,並在圖片上顯示帶紅色十字的白色背景以顯示失敗的繪圖。
我對如何嚴重失控感到輕微的損失。我是新來繪畫與繪畫事件,所以任何幫助將不勝感激!
嘗試在程序的另一部分而不是繪製事件中創建圖像。 Gobj在哪裏創建,它看起來像一個圖形對象。爲什麼不改用PaintEventArgs Graphics對象。 –
對不起,Gobj來自e.graphics,但它被傳遞到另一個函數。原始評論現在使用普通的e.graphics顯示它。我會盡量讓圖片在另一部分表示感謝!如果有效,稍後會回覆! – DStow
我之所以問Graphics對象,是因爲如果你創建一個,你應該確保自己和鋼筆以及其他類似的對象一起處理它。 –