2010-11-29 79 views
0

尝试将C#的WinForms Graphics对象保存到一个位图,但我得到这个代码一个ArgumentException Paint事件之外:将图形保存到位图之外的位图?

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

凡this.Graphics只是在Paint事件处理程序设置,我猜测对象在事件之外变得无效,这是令人讨厌的,因为我想避免为了保存图像而在其中放置代码。任何人都可以将我指向正确的方向吗?

编辑: 我将不得不重新考虑我的绘画代码,因为我需要能够将控件'绘制'成位图。

+0

请您发布完整的错误消息吗?直到比:你有没有试过UserControl.CreateGraphics()? – basti 2010-11-29 15:30:54

回答

1

是的,这会后设置Graphics对象炸弹。没有什么理由使用这个构造函数,它只设置位图分辨率。如果这对你真的很重要,那么就直接使用Bitmap.SetResolution()方法。

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 
}