为什么在使用C#在WPF中截图时会出现隐藏窗口?

为什么在使用C#在WPF中截图时会出现隐藏窗口?,c#,.net,wpf,windows,window,C#,.net,Wpf,Windows,Window,我有一个WPF应用程序,可以帮助我拍摄整个屏幕的截图 这个应用程序包含一个小窗口,里面有一个按钮,如果我点击它,屏幕的截图就会被截取,并保存在我的驱动器上 我想在拍摄之前隐藏这个小窗口,这样它就不会被包括在拍摄中,以下是我尝试的: StartSnipping = new RelayCommand(() => { // I hide it here !! WindowVisibili

我有一个
WPF
应用程序,可以帮助我拍摄整个屏幕的截图

这个应用程序包含一个小窗口,里面有一个按钮,如果我点击它,屏幕的截图就会被截取,并保存在我的驱动器上

我想在拍摄之前隐藏这个小窗口,这样它就不会被包括在拍摄中,以下是我尝试的:

StartSnipping = new RelayCommand(() =>
                 {
                   // I hide it here !!
                   WindowVisibility = Visibility.Hidden;                              

                   //Than I take the screen shot
                   var screen = Screen.PrimaryScreen;
                   var bitmap = new Bitmap(screen.Bounds.Width, screen.Bounds.Height);
                   using (var graphics = Graphics.FromImage(bitmap))
                   {
                     graphics.CopyFromScreen(new Point(screen.Bounds.Left, 
                                                       screen.Bounds.Top),
                                             new Point(0, 0), 
                                             screen.Bounds.Size);
                   }

                   //I save the screen shot
                   bitmap.Save(@"C:/Users/Aymen/Desktop/test.png", ImageFormat.Png);
                 }); 
现在,假设行:

WindowVisibility = Visibility.Hidden;
确实有效,我确信这一点,因为在所有方法完成运行之后,窗口确实被隐藏了

假设屏幕截图已成功拍摄并保存,并且仍包含该窗口,该窗口应在屏幕截图前1秒隐藏,我的问题是:


为什么这个隐藏窗口仍然出现在截图中??我该怎么做才能使它不出现在屏幕截图中呢?

不确定,但似乎使用:

WindowVisibility = Visibility.Hidden; 
拍摄屏幕截图时无法阻止窗口出现,我必须使用.hide()方法隐藏窗口:


这很好,bust仍然没有任何解释为什么
可见性。Hidden
会让窗口出现在屏幕截图中。

//给它一些时间。。。Thread.Sleep()…
-请学习正确地执行多线程。@HighCore thx对于这句话,我添加了一个绝望的东西,现在删除了它,尽管很难猜测“WindowVisibility”是什么意思,但没有具有该名称的属性。Windows版本也很重要,Windows 8以不同的方式对待完全透明的窗口,在早期版本中,您无法使用CopyFromScreen()捕获分层窗口。@Hans:也许是这样@HansPassant
WindowVisibility
ViewModel
中的一个属性,窗口的Visibility属性绑定到该属性
Application.Current.MainWindow.Hide();