我有简单的应用程序,如" 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
答案 0 :(得分:2)
你应该从g - g.dispose()
处置释放内存。缺少内存会导致这样的异常,因为你的bmp可能对于实际的空闲内存来说太大了。