' System.ArgumentException'发生在System.Drawing.dll中

时间:2016-04-14 18:02:52

标签: c# winforms

我有简单的应用程序,如" paint",我绘制了一个设置为pictureBox.Image的位图。我可以在这里绘制多边形并在顶点上捕捉它们并移动,因此位图必须重新绘制。 有重绘方法。

private void DrawFullList()
    {
        if(pictureBox2.Image != null)
            pictureBox2.Image.Dispose();
        graphic = new Bitmap(pictureBox2.Width, pictureBox2.Height); // exception here
        g = Graphics.FromImage(graphic);
        pictureBox2.Image = graphic;
        for (int i = 0; i < PointsList.Count; i++)
        {
            bool yellowframe = false;
            if (i == dblclck)
                yellowframe = true;
            Draw(BrushList[i], PointsList[i], yellowframe);
        }
    }

因此,如果我捕获顶点并移动鼠标,则会在DrawFullList()函数中激活函数pictureBox_MouseMove(object sender, MouseEventArgs e)。当我移动一个顶点几秒钟(例如,制作圆圈)时抛出异常'System.ArgumentException' occurred in System.Drawing.dll。 有什么提示吗? :)

编辑: 有关异常的其他信息: parameter is invalid

1 个答案:

答案 0 :(得分:2)

你应该从g - g.dispose()处置释放内存。缺少内存会导致这样的异常,因为你的bmp可能对于实际的空闲内存来说太大了。