Я кодирую небольшое приложение, чтобы делать скриншот каждые X секунд, и я столкнулся с небольшим, но раздражающим препятствием. Возьмите это изображение, например:
Снимок экрана с использованием функции «Печать экрана» по умолчанию в Windows 7
Если я попытаюсь сделать тот же снимок экрана, используя графическую библиотеку .NET 4 по умолчанию, обведенная область не появится. То же самое происходит с меню с вкладками Visual Studio и некоторыми другими приложениями, которые я не могу вспомнить. Остальная часть изображения выходит нормально, хотя.
Это код, который я использую. Может быть, я что-то напутал, но я не могу понять это для моей жизни. Любая помощь будет оценена по достоинству:
memoryImage = new Bitmap(resolution.Width, resolution.Height);
Size s = new Size(memoryImage.Width, memoryImage.Height);
// Create graphics
Console.WriteLine("Creating Graphics...");
Console.WriteLine();
Graphics memoryGraphics = Graphics.FromImage(memoryImage);
// Copy data from screen
Console.WriteLine("Copying data from screen...");
Console.WriteLine();
memoryGraphics.CopyFromScreen(0, 0, 0, 0, s);
Этот тест правильно сохраняет весь экран в моей конфигурации (Windows 10, VS 2015) =>
Rectangle screenBounds = Screen.GetBounds(System.Drawing.Point.Empty);
using (Bitmap bitmap = new Bitmap(screenBounds.Width, screenBounds.Height, System.Drawing.Imaging.PixelFormat.Format32bppArgb))
{
using (Graphics g = Graphics.FromImage(bitmap))
{
g.CopyFromScreen(0, 0, 0, 0, bitmap.Size, CopyPixelOperation.SourceCopy);
}
bitmap.Save("e:\\ScreenCopy.jpg", System.Drawing.Imaging.ImageFormat.Jpeg);
}