Desktop screenshot in WPF

半城伤御伤魂 提交于 2019-12-29 05:02:57

问题


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);


来源:https://stackoverflow.com/questions/1777033/desktop-screenshot-in-wpf

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!