2014-07-18 53 views
0

我有一個WPF應用程序,可幫助我截屏整個屏幕。爲什麼在使用C#在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秒,我的問題是:

爲什麼這個隱藏窗口仍然出現在截圖?我該怎麼做才能使它不會出現在屏幕截圖中?

+0

'//給它一些時間...... Thread.Sleep()...' - 請學會正確地進行多線程。 –

+0

@HighCore thx的評論,這是一個絕望的事情,我補充說,現在刪除雖然 – AymenDaoudi

+0

很難猜測「WindowVisibility」可能意味着什麼,沒有該名稱的財產。 Windows版本也很重要,Windows 8將完全透明的窗口視爲不同的方式,並且無法使用早期版本的CopyFromScreen()捕獲分層窗口。 –

回答

1

不知道,但似乎使用:

WindowVisibility = Visibility.Hidden; 

不利於採取的屏幕截圖顯示保持窗口,我不得不使用.Hide()方法來隱藏窗口:

Application.Current.MainWindow.Hide(); 

工作得很好,蕭條仍然沒有任何解釋爲什麼Visibility.Hidden保持窗口出現在屏幕截圖中。

相關問題