c# - 未显示窗体时,窗体的保存位图/"screenshot"不起作用

标签 c# winforms bitmap

我正在开发一个具有多个窗体的 Windows 窗体应用程序。我想将其中一份表格打印为图像文件。

我正在使用这个例子:click

我有一个带有各种标签、文本框和一个按钮的表单。当我通过按下按钮运行 SaveAsBitmap 时,表单及其元素被正确保存为 bmp 文件(就像您截取它并保存为图像一样)。

现在,我有另一种要显示给用户的表单。 (这是一个没有窗体边框样式的窗体。) 我想在这种形式而不是其他形式上进行 bmp 保存。但无论我将 SaveAsBitmap 方法放在该表单代码的何处,它都只保存表单的背景(不保存标签等项目)。 但是,如果我将 this.ShowDialog() 放在某处以显示表单,然后运行 ​​SaveAsBitmap 方法,它就会正常工作。

所以这里的重点是当表单未显示时它无法正常工作。

当使用SaveAsBitmap方法时,我这样写:SaveAsBitmap(this, "C:\\test.bmp");

感谢任何帮助!

最佳答案

这对我有用;

theForm.hide();
...
using (var bitmap = new Bitmap(theForm.Width, theForm.Height)) {
   theForm.DrawToBitmap(bitmap, new Rectangle(0, 0, bitmap.Width, bitmap.Height));
   bitmap.Save(@"c:\null\ss.bmp");
}

关于c# - 未显示窗体时,窗体的保存位图/"screenshot"不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7685585/

相关文章:

c# - 从主 UI 线程上的按钮挂起子线程

c# - C# 应用程序中的正则表达式语法

c# - 如何在 C# 中打印 n 次 n 而无需循环、递归或 goto

c# - 表格的宽度不能小于 140 像素。为什么?

c# - 编辑 8bpp 索引位图

C# 单元测试资源

c# - Panel 在继承的 Windows 窗体上的行为不正确?

c# - 本地化后重置控制位置

objective-c - 在 cocoa osx 中将位图图像复制到粘贴板时遇到问题

Android:使 WebView 显示位图的最简单方法?