How can I take a screenshot of the desktop in WPF? Preferably with the mouse cursor showing.
可以将文章内容翻译成中文,广告屏蔽插件可能会导致该功能失效(如失效,请关闭广告屏蔽插件后再试):
问题:
回答1:
Without trying to steal the answer, use the code give in the CodeProject article referenced by Johannes to create the GDI bitmap. You can then use the following code to convert it into a BitmapSource for use in 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);
}
}
where the code for NativeMethods.DeleteObject() is:
[DllImport("gdi32.dll")]
[return: MarshalAs(UnmanagedType.Bool)]
internal static extern bool DeleteObject(IntPtr hObject);
回答2:
There is a CodeProject article on this.
And as screen capture isn't WPF-specific, the solution also doesn't involve WPF.