Подтвердить что ты не робот

Захват снимка экрана с помощью .NET.

Возможный дубликат:
Как я могу захватить экран в растровом изображении?

Мне нужно сделать приложение, которое фиксирует моментальный снимок текущего экрана всякий раз, когда нажимается конкретная кнопка.

Я много искал, но я только нашел, как захватить текущее окно.

Не могли бы вы помочь мне разобраться, как это сделать в .NET?

Мы можем сделать это вручную, нажав на экран печати и сохраняя изображение с помощью краски. Мне нужно сделать то же самое, но я хочу сделать это с помощью программы.

4b9b3361

Ответ 1

Конечно, можно получить скриншот с использованием .NET Framework. Самый простой способ - создать новый объект Bitmap и нарисовать его с помощью метода Graphics.CopyFromScreen.

Пример кода:

using (Bitmap bmpScreenCapture = new Bitmap(Screen.PrimaryScreen.Bounds.Width, 
                                            Screen.PrimaryScreen.Bounds.Height))
using (Graphics g = Graphics.FromImage(bmpScreenCapture))
{
    g.CopyFromScreen(Screen.PrimaryScreen.Bounds.X,
                     Screen.PrimaryScreen.Bounds.Y,
                     0, 0,
                     bmpScreenCapture.Size,
                     CopyPixelOperation.SourceCopy);
}

Предостережение: Этот метод не работает должным образом для многоуровневых окон. Ответ Hans Passant здесь объясняет более сложный метод, необходимый для получения этих снимков экрана.