屏幕截图复杂,WPF窗口位于顶部

时间:2011-03-09 01:16:38

标签: wpf screenshot

我需要使用透明的WPF窗口捕获整个屏幕作为最顶层的窗口。 我尝试了两种方法:

  1. 使用System.Windows.Drawing.Graphics.CopyFromScreen
  2. 使用WINAPI GetDesktopWindow
  3. 两种方法都会产生相同的结果。我得到了整个屏幕,除了我最顶层的透明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 个答案:

答案 0 :(得分:1)

刚刚找到解决方案:

据我所知,Graphics.CopyFromScreen方法没有解决方案,因为你需要使用CopyPixelOperation.CaptureBlt与CopyPixelOperation.SourceCopy,但你不能。通常的M $不一致的疯狂......

但是,WINAPI方法有效,因为在使用BitBlt时可以组合SRCCOPY和CAPTUREBLT。没有CAPTUREBLT透明和分层窗口将不包括在内。