将图形保存到绘图之外的位图?

时间:2010-11-29 15:28:20

标签: c# graphics

尝试将C#Winforms图形对象保存到位图,但我在Paint事件之外使用此代码获取ArgumentException:

public Bitmap Bitmap
{
   get
   {
       return new Bitmap(100, 100, this.Graphics);
   }
}

如果this.Graphics刚刚在Paint事件处理程序中设置,我猜测对象在事件之外变得无效,这很烦人,因为我想避免在那里放置代码来保存图像。有人能指出我正确的方向吗?

修改 我将不得不重新考虑我的绘画代码,因为我需要能够将控件“绘制”到位图中。

2 个答案:

答案 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
}