我有一个包含 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/