C# 捕获桌面排除(在“我的活动窗口”下)
关于捕获活动窗口或桌面包括活动窗口,有许多问题,但我的问题不同: 我希望捕获桌面正好在我的WPF窗口下。我基于以下代码创建了一个示例项目:C# 捕获桌面排除(在“我的活动窗口”下),c#,wpf,windows,capture,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.FromI
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
捕获我的元素所在的桌面,但结果是我的元素的图片,但我希望捕获我的元素下的桌面,而不是在我的窗口中包含该元素
注意:我的元素(例如矩形)背景为半透明或非透明(具有图像或纯色)
上面的代码结果如下图所示(红色边框内的部分)。
注意:树是我的桌面背景图片&另一个应用程序的一部分在图像中可见。我的窗户在他们上面
您可以看到它是包含我的矩形(元素)和其他控件,但我希望捕获我的元素下的桌面,排除它本身和其他元素的视觉
现在我的问题是,如何在WPF窗口中,在2模式下捕获我的元素下的桌面,以使结果如下图所示:
- A)包括我的窗口下的所有内容(窗口和…),如下所示:
- B)排除“我的窗口”下的所有其他内容(排除所有打开的窗口&…)。只有桌面背景和图标(如果我的窗口位于图标上方)。像这样:
注意:我的工作平台是WPF+.Net 4.5这通常是不可能的。@IInspectable,我找到了一些API,比如
放大API Overview
,但我不确定它是否可以捕获我元素下的图像:放大API放大可见的内容。它不能用来发现被窗口遮挡的区域。@MarkFeldman:A不可能,除非先隐藏窗口,拍摄快照并再次显示窗口。从概念上讲,看你的窗户后面和其他人的窗户后面没有区别。它只是不受支持。在这种情况下,我建议查看一下。一般来说,这是不可能的。@IInspectable,我找到了一些API,如放大API概述
,但我不确定它是否可以捕获我元素下的图像:放大API放大了可见的内容。它不能用来发现被窗口遮挡的区域。@MarkFeldman:A不可能,除非先隐藏窗口,拍摄快照并再次显示窗口。从概念上讲,看你的窗户后面和其他人的窗户后面没有区别。它只是不受支持。如果是这样的话,我建议您研究一下。