如何将我的表格中的面板保存为图片?

时间:2012-01-05 05:23:11

标签: c# panel image system.drawing

我的表格有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");

1 个答案:

答案 0 :(得分:7)

.Net 4仍支持

Control.DrawToBitMap。请注意以下几点。

从上面链接:

  • ActiveX控件不支持DrawToBitmap方法。您 可以覆盖OnPrint事件并提供自定义打印逻辑 必需的。

DrawToBitmap方法具有以下限制:

  • 可能会为大位图抛出ArgumentException。最大值 允许的尺寸因机器而异。
  • DrawToBitmap不支持Windows XP的Ink控件 Tablet PC Edition 2005操作系统。
  • 如果Visible属性为,则DrawToBitmap不会绘制子TextBox TextBox设置为false。
  • 内部容器的控件以相反的顺序呈现。
  • DrawToBitmap对RichTextBox不起作用;只有 绘制位图的边框。

编辑已添加的示例和图片:

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