WPF中的桌面截图

时间:2009-11-21 22:40:06

标签: c# wpf screenshot

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

2 个答案:

答案 0 :(得分:4)

此处有一个CodeProject article

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

答案 1 :(得分:4)

在不试图窃取答案的情况下,使用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);