为什么使用c#在WPF中截图时会出现隐藏窗口?
本文关键字:隐藏 窗口 WPF 为什么 | 更新日期: 2023-09-27 18:13:26
我有一个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()方法隐藏窗口:
Application.Current.MainWindow.Hide();
这工作得很好,bust仍然没有任何解释为什么Visibility.Hidden
保持窗口出现在截图