Как делать скриншоты экрана на C#

Сегодня мы создадим программу, которая будет делать скриншоты экрана на C#.

Для этого нам понадобятся две формы. В первой мы разместим две кнопки Button:

Как делать скриншоты экрана на C#

Затем создаём вторую форму. Для этого правой кнопкой мыши нажимаем на наш проект, затем выбираем вкладку “Добавить”, а далее “Создать элемент”.

Как делать скриншоты экрана на C#

В открывшемся окне выбираем пункт “Форма Windows Forms” и называем её (у нас она называется ScreenShot), нажимаем “Добавить”.Как делать скриншоты экрана на C#

Во второй форме создаём две кнопки: “Сохранить” и “Закрыть”, а также PictureBox.

Как делать скриншоты экрана на C#Вторая форма должна быть большая, так как именно в ней мы и будем наблюдать скриншот, который мы сделаем.

Итак, переходим к коду.

В первой форме сразу в теле public partial class Form1 : Form мы инициализируем переменную типа Bitmap, которую в итоге будем передавать во вторую форму:

Теперь мы создадим обработчик события нажатия на кнопку “Сделать скриншот”, для этого дважды нажимаем на этот Button:

Сначала мы создаём объект класса Graphics из рисунка BM.

Далее “скриншотим” экран, передавая все данные с экрана на поверхность объекта Graphics. Четыре нуля – это отступы по границам экрана: левая граница экрана, верхняя граница экрана, правая граница экрана, нижняя граница экрана. У нас эти значения равны нулю, значит отступов у нас не будет, если хочется как-либо ограничить область создания скриншота, то надо менять значения в этом участке кода (ограничение ведётся по пикселям). BM.Size передаёт размер изображения в PictureBox, который мы подключим позже во второй форме

ScreenShot, как мы помним – это имя нашей второй формы. Мы создаём этот объект в первой форме для того, чтобы связать обе формы.

Затем мы при помощи ShowDialog открываем нашу вторую форму с уже переданными в неё данными о скриншоте.

Однако, прежде чем мы перейдём к коду второй формы, нам стоит закончить работу с первой.

Для этого дважды кликаем на кнопку “Выйти” и пишем простую команду, которая закроет нашу программу:

Теперь переходим ко второй форме. Пока что наше изображение не выводится на ней. И это естественно, так как мы не указали, куда нам выводить наше изображение. Для этого мы в теле кода инициализации второй формы пишем следующее:

В PictureBox мы передаём информацию о том, каким образом будет отображаться изображение. Благодаря свойству StretchImage, изображение будет сужаться или расширяться, подстраиваясь под размер PictureBox’a.

В последней же строке мы передаём обработанный скриншот BM из первой формы в PictureBox второй формы.

Теперь наша программа работает, скриншоты создаются. Нам осталось написать код для сохранения изображения и для закрытия второй формы, когда она уже не нужна.

Закрытие формы по нажатии на кнопку “Закрыть” пишется в одну строку, практически как и закрытие всего приложения:

С сохранением же немного посложнее:

Итак ,сначала мы создаём новый SaveFileDialog. Это то окно, которое всплывает у нас, когда мы хотим сохранить тот или иной файл:

Как делать скриншоты экрана на C#

Затем мы накладываем фильтр (Filter) по типам файлов, которые пользователь сможет выбрать. У нас это четыре формата изображений: .png, .jpeg, gif, и bmp.

Выглядеть эта вариация в SaveFileDialog’e будет вот так:

Как делать скриншоты экрана на C#

 

Затем у нас идёт условие: если в SaveFileDialog’e будет нажата кнопка “ОК”, то объект BM из первой формы будет сохранен под именем, которое ему даст пользователь в SaveFileDialog’e.

Программа готова:

Как делать скриншоты экрана на C#

 

Исходник программы на языке C# ниже:

Скачать исходник

 

Оцените статью

Поделиться в соц. сетях:

2 комментария(ев) к статье “Как делать скриншоты экрана на C#

  1. Даниил

    Спасибо большое! Так же, если по нажатию кнопки “Сделать скриншот” установить у Form1 непрозрачность на 0 а после скрина вернуть на 100, то окно не будет мешаться на готовой картинке.

  2. Иван

    Спасибо за такие уроки! Удивительно практические. Куча полезных приемов.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Можно использовать следующие HTML-теги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">