How can I take a screenshot of the desktop in WPF? Preferably with the mouse cursor showing.
+2
A:
There is a CodeProject article on this.
And as screen capture isn't WPF-specific, the solution also doesn't involve WPF.
Joey
2009-11-21 23:14:37
A am aware of that, I'm interested in a WPF solution, that would result in a BitmapImage or something.
luvieere
2009-11-21 23:54:24
http://blogs.msdn.com/rwlodarc/archive/2007/01/03/wpf-bitmapsource-and-gdi-bitmap-interop.aspx
Joey
2009-11-22 00:26:02
+1
A:
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);
Alastair Pitts
2009-11-22 14:45:37
There you go, you've stolen the answer, not Johannes is gonna get mad at you... See what you've did? :)) Just kidding, thanks for the code ;)
luvieere
2009-11-22 15:35:31