捕获桌面排除(在我的活动窗口下)

时间:2015-08-17 01:11:18

标签: c# wpf windows capture

关于捕获活动窗口或桌面包含活动窗口有很多问题,但我的问题不同:

我想在我的WPF窗口下准确捕获桌面。我基于以下代码创建了一个示例项目:

using (var screenBmp = new Bitmap((int)elementSize.Width,(int)elementSize.Height, System.Drawing.Imaging.PixelFormat.Format32bppArgb))
{
    using (var bmpGraphics = Graphics.FromImage(screenBmp))
    {
        bmpGraphics.CopyFromScreen((int) TopLeftPoint.X, (int)TopLeftPoint.Y, 0, 0, screenBmp.Size);

        return  Imaging.CreateBitmapSourceFromHBitmap(
                        screenBmp.GetHbitmap(),
                        IntPtr.Zero,
                        Int32Rect.Empty,
                        BitmapSizeOptions.FromEmptyOptions());
    }
}

它可以通过CopyFromScreen捕获我的元素所在的桌面,但结果是我的元素的图片 BUT 我想在我的元素下捕获桌面,不包括我的窗口中的元素

注意:我的元素(例如矩形)背景为半透明或非透明(具有图像或纯色)。

上面的代码结果如下图(红色边框内的部分)。 enter image description here

注意:树是我的桌面背景图片&图像中可以看到另一个应用程序的一部分。我的窗户在他们身上。

你可以看到它包含我的矩形(元素)和其他控件但是我想在我的元素下面捕获桌面,排除它自己以及它上面的其他元素的视觉效果。

现在我的问题是我如何在WPF窗口中以我的元素捕获桌面,在2模式下,结果如下图所示? :

  • A)在我的窗口下包含所有内容(windows& ...),如下所示:

enter image description here

  • B)排除我窗口下的所有其他内容(排除所有打开的窗口和...)。只是桌面背景和图标(如果我的窗口是图标)。像这样:

enter image description here

您是否知道在上述级别捕获桌面的任何特殊库或API?

注意:我的工作平台是WPF + .Net 4.5

0 个答案:

没有答案