尝试将C#Winforms图形对象保存到位图,但我在Paint事件之外使用此代码获取ArgumentException:
public Bitmap Bitmap
{
get
{
return new Bitmap(100, 100, this.Graphics);
}
}
如果this.Graphics刚刚在Paint事件处理程序中设置,我猜测对象在事件之外变得无效,这很烦人,因为我想避免在那里放置代码来保存图像。有人能指出我正确的方向吗?
修改 我将不得不重新考虑我的绘画代码,因为我需要能够将控件“绘制”到位图中。
答案 0 :(得分:1)
是的,这会在处理Graphics对象后轰炸。没有理由使用这个构造函数,它只设置位图分辨率。如果那对您来说实际上很重要,那么直接使用Bitmap.SetResolution()方法。
答案 1 :(得分:0)
如果您真的想使用图形,可以使用this.CreateGraphics
。
public Bitmap Bitmap
{
get
{
using (var graphics = this.CreateGraphics())
{
return new Bitmap(100, 100, graphics);
}
}
}
但是
return new Bitmap(100, 100);
可能就足够了。
修改强>
如果要修改位图,可以从该位图创建图形对象:
Bitmap bitmap = new Bitmap(100, 100);
using (var graphics = Graphics.FromImage(bitmap))
{
// modify bitmap
}