2011-03-09 62 views
1

我需要捕獲整個屏幕作爲最上面的窗口透明的WPF窗口。 我試圖2點的方法:使用WINAPI GetDesktopWindow WPF窗口頂部的屏幕捕捉併發症

這兩種方法都產生相同的結果

  1. 使用System.Windows.Drawing.Graphics.CopyFromScreen
  2. 。除了我最上面的透明WPF窗口,我還可以看到整個屏幕。 WPF窗口w創建爲:

    w.AllowsTransparency = true; 
    w.WindowStyle = System.Windows.WindowStyle.None; 
    w.Background = new SolidColorBrush(Color.FromArgb(1, 0, 0, 0)); 
    w.Topmost = true; 
    

    加上當然的一些內容。窗口覆蓋整個屏幕表面。

    顯然,WPF窗口繪製在GetDesktopWindow中未包含的表面上。

    任何人都可以說出這一點,並分享一些想法如何真正獲得整個屏幕表面?

回答

1

就找到了解決辦法:

至於我可以告訴沒有爲Graphics.CopyFromScreen方法沒有辦法,因爲你需要:或CopyPixelOperation.SourceCopy CopyPixelOperation.CaptureBlt,但你不能。通常M $不一致的瘋狂...

但是,WINAPI方法的工作原理,因爲您可以結合使用BitBlt時SRCCOPY和CAPTUREBLT。沒有CAPTUREBLT透明和分層的窗口將不包括在內。