2012-01-05 52 views
4

我有一個有2個面板的窗體。我試圖將Panel2的內容保存爲圖像。我看到一個討論使用屏幕截圖的線程來做到這一點,但我無法再找到線程。另外閱讀關於使用DrawToBitMap方法,但它來自Visual Studio 2005信息,不知道它是否是最新的或合適的解決方案。那麼你建議如何將我的Panel2保存爲圖片,最好是JPG格式?如何將我的表單中的面板保存爲圖片?

更新: 我實現下面推薦的DrawToBitMap的代碼,但它節省了我是Panel2的一半(左半部分,如果有差別)。 因爲它保存了我的panel2的一半,所以我將寬度調用乘以'2'以使它保存完整的表格。一種奇怪的東西,對我來說沒有意義,因爲面板2的寬度應該是完整的面板而不是它的一半?

//multiplies the width of panel2 call by 2 to make it save the full panel 
Bitmap bmp = new Bitmap(splitContainer1.Panel2.Width * 2, splitContainer1.Panel2.Height); 
splitContainer1.Panel2.DrawToBitmap(bmp, splitContainer1.Panel2.Bounds); 
bmp.Save(@"C:\Test.bmp"); 
+0

退房此線程 - http://stackoverflow.com/questions/2219985/how-to-save-win-form- as-image-pdf – adatapost 2012-01-05 05:41:06

回答

7

Control.DrawToBitMap仍然支持.Net 4.有以下注意事項。

從以上鍊接:

  • 的DrawToBitmap方法不支持ActiveX控件。如果需要 ,您可以覆蓋OnPrint事件並提供自定義打印邏輯。

的DrawToBitmap方法有以下限制:

  • 一個ArgumentException可能拋出的大位圖。機器允許的最大尺寸爲 。
  • DrawToBitmap不支持Windows XP Tablet PC Edition 2005操作系統的Ink控件。
  • 如果將TextBox的 的Visible屬性設置爲false,則DrawToBitmap不繪製子文本框。
  • 容器內的控件按相反順序呈現。
  • DrawToBitmap對RichTextBox沒有完全的功能;只繪製了位圖的 邊框。

編輯追加例題和形象:

Bitmap bmp = new Bitmap(panel1.Width,panel1.Height); 
panel1.DrawToBitmap(bmp, panel1.Bounds); 
bmp.Save(@"C:\Temp\Test.bmp"); 

+0

如果DrawToBitMap有很多限制,是否有其他方法可以推薦? – 2012-01-05 17:05:38

+0

我實現了你的代碼,它打印了我的一半panel2 ......不知道它爲什麼只做了一半? – 2012-01-05 17:20:51

+0

我必須將panel2.width乘以2才能保存完整的面板,而不會將其乘以2,只會給我一半......這似乎很奇怪。 – 2012-01-05 17:26:39