C# 如何在屏幕截图中删除我的窗口

C# 如何在屏幕截图中删除我的窗口,c#,wpf,screenshot,C#,Wpf,Screenshot,我想在我的应用程序中进行屏幕截图,为此,我创建了一个包含按钮的表单,当用户点击按钮时,屏幕截图大部分被创建。但我的斯克雷恩枪里有那张照片!如何移除该表单并进行斯克林射击?我需要那个WPF表格在拍摄斯克林之前和之后,但在拍摄过程中它应该关闭。如何操作?您可以通过在截图前设置最小化窗口,然后恢复 WindowState = WindowState.Minimized; // take screenshot WindowState = WindowState.Normal; 你有两个选择: 1-正如

我想在我的应用程序中进行屏幕截图,为此,我创建了一个包含按钮的表单,当用户点击按钮时,屏幕截图大部分被创建。但我的斯克雷恩枪里有那张照片!如何移除该表单并进行斯克林射击?我需要那个WPF表格在拍摄斯克林之前和之后,但在拍摄过程中它应该关闭。如何操作?

您可以通过在截图前设置最小化窗口,然后恢复

WindowState = WindowState.Minimized;
// take screenshot
WindowState = WindowState.Normal;
你有两个选择:

1-正如@Richard提到的,您可以使用
WindowState
最小化表单,截图并再次最大化表单。但你应该等到完全最小化。所以您应该使用
Thread.Sleep(…)
方法:

WindowState = WindowState.Minimized;
Thread.Sleep(500);
/*Or every other value for waiting until minimizing was completed in mili-second*/
// take screenshot
WindowState = WindowState.Normal;
2-您还可以对表单使用
隐藏
显示
方法:

Form1 frm = new Form1();
frm.Show();

//When you want to take screenshot:
frm.Hide();
Thread.Sleep(500);
//Take screenshot
frm.Show();

我使用了这段代码,但是最小化和最大化操作非常快,我的屏幕截图包含了表单。请测试你的答案。