WPF中的桌面截图

如何在WPF中截取桌面的屏幕截图? 最好用鼠标光标显示。

在不试图窃取答案的情况下,使用Johannes引用的CodeProject文章中的代码来创建GDI位图。 然后,您可以使用以下代码将其转换为BitmapSource以在WPF中使用:

public static BitmapSource ToBitmapSource(this System.Drawing.Bitmap source) { var hBitmap = source.GetHbitmap(); try { return System.Windows.Interop.Imaging.CreateBitmapSourceFromHBitmap( hBitmap, IntPtr.Zero, Int32Rect.Empty, BitmapSizeOptions.FromEmptyOptions()); } catch (Win32Exception) { return null; } finally { NativeMethods.DeleteObject(hBitmap); } } 

NativeMethods.DeleteObject()的代码是:

  [DllImport("gdi32.dll")] [return: MarshalAs(UnmanagedType.Bool)] internal static extern bool DeleteObject(IntPtr hObject); 

有关于此的CodeProject文章 。

由于屏幕捕获不是特定于WPF的,因此该解决方案也不涉及WPF。