2016-04-25 78 views
0

在我的程序中有两种形式,Form AForm BC#以编程方式形成图像

Form A中有一个按钮,可以拍摄Form B(不含开始Form B)的屏幕快照。

但是,Form B的组件是在函数中创建的。

我使用下面的代码拍摄Form B的屏幕截图,但它只生成一个空的Form B图像,但没有其任何组件。

Bitmap b = new Bitmap(1280, 720); 
formB.ManualLoad(); 
formB.DrawToBitmap(b, new Rectangle(0, 0, 1280, 720)); 
b.Save("D:\\Test.bmp"); 

Manuaload()函数如下所示。

public void ManualLoad() 
{ 
    formB_Load(null, null); 
    formB_Resize(null, null); 
    Invalidate(); 
} 

我该如何解决这个问题?

+0

表单,这样形式的'Paint'事件不会触发和控制未按工作。我不确定你可以在不显示表格的情况下截取屏幕截图... – Nino

+0

它不会因为表格没有绘制出来。你必须出示表格才能截屏 – Nitin

+0

你有什么特别的理由不想表格B?否则,我会建议只显示它,然后制作一个打印屏幕 – Kyra

回答

3

我认为

formB_Load(null,null); 和 formB_Resize(null,null);

整数甚至hanler负载和调整事件的

下一个代码将不显示

Bitmap b = new Bitmap(1280, 720); 
var form = new formB(); 
form.Visible = false; 
form.Show(); 
form.DrawToBitmap(b, new Rectangle(0, 0, 1280, 720)); 
form.Close(); 
b.Save("D:\\Test.bmp");