2010-11-29 36 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 
}