Определить, что окно полностью скрыто - PullRequest
0 голосов
/ 25 августа 2010

Чтобы создать снимок экрана, я скрываю окно wpf.Код выглядит так.

      Hide();
      var fullScreenshot = _cropper.TakeFullScreenshot();
      Show();

Иногда приложение не скрывается при создании снимка экрана.Как я могу определить, что окно полностью скрыто?

Ответы [ 2 ]

1 голос
/ 25 августа 2010

Я не знаю, как снимок экрана, но я подозреваю, что UI-Thread не удалил весь контент, и поэтому TakeFullScreenshot видит остатки вашего приложения.

Я бы попытался подождатьпока ваше приложение не выполнит всю необходимую работу с пользовательским интерфейсом, а затем запустит операцию TakeFullScreenshot.

Запустите операцию ScreenShot с помощью Dispatcher:

Hide();
Dispatcher.BeginInvoke(new Action(delegate { 
    fullScreenshot = _cropper.TakeFullScreenshot(); 
    Show();
    }), System.Windows.Threading.DispatcherPriority.ContextIdle, null);
0 голосов
/ 25 августа 2010

В настоящее время я пробую это решение:

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();
    }
}

Я надеюсь, что это правильный ответ, но я должен сделать некоторые дополнительные тесты.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...