현재 양식에 페인트 이벤트를 사용하여 화면에 이미지를 그립니다. (배경 이미지라고 생각하십시오) 및이 이미지 위에 사각형이 있습니다. 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는 어디에서 생성되었으며, Graphics 객체처럼 보입니다. 대신 PaintEventArgs Graphics 객체를 사용하십시오. –
죄송합니다, Gobj는 egraphics에서 비롯되었지만 다른 함수로 전달되었습니다. 원문은 이제 보통의 그래프를 사용하여 그것을 보여줍니다. 나는 다른 부분 덕분에 이미지를 만들려고 노력할 것입니다! 그것이 작동하는 경우 나중에 회신 해! – DStow
내가 Graphics 객체에 대해 묻는 이유는 하나를 만들면 반드시 펜과 같은 객체와 함께 처리해야하기 때문입니다. –