0

我使用以下代码获取屏幕截图:

    public static BitmapSource ToBitmapSource()
    {
        using (var screenBmp = new Bitmap(Convert.ToInt32(System.Windows.SystemParameters.PrimaryScreenWidth), 
            Convert.ToInt32(System.Windows.SystemParameters.PrimaryScreenHeight), 
            System.Drawing.Imaging.PixelFormat.Format32bppArgb))
        {
            using (var bmpGraphics = Graphics.FromImage(screenBmp))
            {
                bmpGraphics.CopyFromScreen(0, 0, 0,
                    0, screenBmp.Size);
                return Imaging.CreateBitmapSourceFromHBitmap(screenBmp.GetHbitmap(), IntPtr.Zero, Int32Rect.Empty, BitmapSizeOptions.FromEmptyOptions());
            }
        }
    }

它适用于普通窗口,但我在 FullScreen 应用程序上得到黑色矩形而不是屏幕截图。为什么以及如何解决?谢谢

4

1 回答 1

1

您提供的代码是准确的。我认为您在保存屏幕截图时遇到了问题。所以在这里我附上了我的测试结果

private void Button_Click(object sender, RoutedEventArgs e)
{
    PngBitmapEncoder png = new PngBitmapEncoder();
    png.Frames.Add(BitmapFrame.Create(ToBitmapSource()));    // Calling your method
    using (Stream stm = File.Create(AppDomain.CurrentDomain.BaseDirectory + "screenshot.png"))
    {
        png.Save(stm);
    }
}

在此处输入图像描述

于 2013-07-20T15:04:23.193 回答