c# - 如何将表单中的面板保存为图片?

标签 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");

最佳答案

Control.DrawToBitMap在 .Net 4 中仍然受支持。有以下注意事项。

来自上面的链接:

  • 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");

关于c# - 如何将表单中的面板保存为图片?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8738054/

相关文章:

c# - 如何创建一个自定义属性,如果它返回 false 将重定向到登录,类似于授权属性 - ASP.NET MVC

c# - 为什么从组合框进行选择后切换图形需要更长的时间?

java - 如何在Java中设置更多面板

forms - Wicket - 具有 Java 继承的可重用面板

PHP + CSS > 使用下拉列表从管理控制面板更改图像样式

php - 带有 alpha 颜色的 imagerotate 不起作用

c# - 自动设置文本框的最小值和最大值

c# - 强制本地 DateTime 序列化

java - 从 war 中加载图像

java - 如何将图像数据作为 base 64 字符串写入文本文件?