Im创建Label
,有时使用.DrawToBitmap()
。我不知道为什么,但是我运行后我计划了一段时间(和调用.DrawToBitmap()
经常)我得到异常:DrawToBitmap - System.ArgumentException:参数无效
System.ArgumentException: Parameter is not valid.
at System.Drawing.Bitmap..ctor(Int32 width, Int32 height, PixelFormat format)
at System.Drawing.Bitmap..ctor(Int32 width, Int32 height)
不知怎的,我无法调用此函数经常。如果我可以从根本上尝试这个:
while(true)
{
System.Windows.Forms.Label label = new Label();
label.Font = new Font("Arial", 20);
label.Text = "test";
try
{
Bitmap image = new Bitmap(300, 500);
label.DrawToBitmap(image, label.ClientRectangle);
}
catch (Exception e)
{
Console.WriteLine(e);
}
}
我得到5-6秒后(1000-2000调用)的例外。问题是什么?如何避免这种情况?
编辑:谢谢大家与Dispose()
这个想法 - 不知何故,如果我在label
上使用它,一切都很完美。即使我不使用它在位图上的罚款。这两个答案都很好,我只能接受其中一个:(我的
嗨。起初,我尝试使用(位图...)=>没有任何改变。但是当我在每次调用结束时使用label.Dispose()时,一切都很好:)谢谢 - 用30.000次调用测试它,现在我认为这很好。没有label.Dispose()我在1000-2000次调用后得到异常。从来没有想过我必须处置()标签。 – miri 2012-08-16 22:48:01
@miri:就像@HansPassant:我以为处置标签会导致异常。我相信这是应该用'使用'块包装的字体和位图。我不知道如何在不看标签的情况下处理标签。 – IAbstract 2012-08-17 14:11:12