当窗体未显示时,保存窗体的位图/“屏幕截图”不起作用

时间:2011-10-07 09:48:20

标签: c# winforms bitmap

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

我正在使用此示例:click

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

现在,我有另一个的表单向用户显示。 (这是一个没有边框样式的表单。) 我想在这个表单而不是另一个表单上进行bmp保存。但无论在这个表单的代码中我放置SaveAsBitmap方法,它只保存表单的背景(没有标签之类的项目)。 但是,如果我将this.ShowDialog()放在某处以显示表单,然后运行SaveAsBitmap方法,则它会正常工作。

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

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

任何帮助表示赞赏!

1 个答案:

答案 0 :(得分:1)

这对我有用;

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