为了创建一个屏幕截图,我隐藏了一个wpf窗口。代码看起来像那样。
Hide();
var fullScreenshot = _cropper.TakeFullScreenshot();
Show();
有时在拍摄屏幕截图时不会隐藏应用程序。我怎样才能确定窗口完全隐藏?
答案 0 :(得分:1)
我不知道屏幕截图是如何拍摄的,但我怀疑UI-Thread没有删除所有内容,因此TakeFullScreenshot
会看到你的应用程序的剩余部分。
我会尝试等到你的应用完成所有必要的ui-work然后触发TakeFullScreenshot
- 操作。
使用Dispatcher
:
Hide();
Dispatcher.BeginInvoke(new Action(delegate {
fullScreenshot = _cropper.TakeFullScreenshot();
Show();
}), System.Windows.Threading.DispatcherPriority.ContextIdle, null);
答案 1 :(得分:0)
目前我正在尝试这个解决方案:
public void Foo()
{
IsVisibleChanged += WhenVisibiltyChangend_TakeScreenshot_and_OpenCreateTicketDialog;
Hide();
}}
void WhenVisibiltyChangend(object sender, DependencyPropertyChangedEventArgs e)
{
if ((bool)e.NewValue == false) {
var fullScreenshot = _cropper.TakeFullScreenshot();
Show();
}
}
我希望这是正确答案,但我必须做一些额外的测试。