Как сохранить изображение экрана компьютера в файле в 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(); }