Как сохранить изображение экрана компьютера в файле в C#
Вы можете сохранить изображение экрана компьютера с помощью метода CopyFromScreen объекта Graphics. Следующий метод GetScreenImage использует CopyFromScreen, чтобы захватить изображение экрана.
// Возьмите изображение экрана.
private Bitmap GetScreenImage()
{
// Создаем растровое изображение для сохранения результата.
Bitmap bm = new Bitmap(
Screen.PrimaryScreen.Bounds.Width,
Screen.PrimaryScreen.Bounds.Height,
PixelFormat.Format24bppRgb);
// Скопируем изображение в растровое изображение.
using (Graphics gr = Graphics.FromImage(bm))
{
gr.CopyFromScreen(
Screen.PrimaryScreen.Bounds.X,
Screen.PrimaryScreen.Bounds.Y,
0, 0,
Screen.PrimaryScreen.Bounds.Size,
CopyPixelOperation.SourceCopy);
}
// Вернуть результат.
return bm;
}
В коде используется Screen.PrimaryScreen.Bounds, чтобы получить размеры экрана (это единственная сложная часть) и делает растровое изображение подходящим. Он создает объект Graphics, связанный с растровым изображением, и использует его метод CopyFromScreen, чтобы скопировать изображение экрана в растровое изображение. Затем метод возвращает растровое изображение.
(Возможно, вам потребуется изменить этот код, если вы используете несколько мониторов. Если вы это сделаете, сообщите мне , как это работает.) р>
Основная программа относительно проста. Когда вы нажимаете кнопку «Получить экранное изображение» программы, выполняется следующий код.
private void btnGetScreenImage_Click(object sender, EventArgs e)
{
// Скрыть эту форму.
this.Hide();
// Позвольте пользователю выбрать файл для хранения изображения.
if (sfdScreenImage.ShowDialog() == DialogResult.OK)
{
// Получить изображение экрана.
using (Bitmap bm = GetScreenImage())
{
// Сохранение растрового изображения в выбранном файле.
SaveImage(bm, sfdScreenImage.FileName);
}
}
// Показывать эту форму еще раз.
this.Show();
}
