ОСТОРОЖНО МОШЕННИКИ! В последнее время в соиальных сетях учстились случаи педложения помощи в написании прогамм от лиц, прикрвающихся сайтом vscode.ru. Мы никогда не пишем первыми и не размещаем никакие материалы в псторонних группах ВК. Для связи с нами используйте исключительно эти контакт: vscoderu@yandex.ru, https://vk.com/vscode


Как делать скриншоты экрана на 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# ниже:

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

 

4.9/5 - (11 голосов)



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

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

  1. Даниил

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

  2. Иван

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

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

Ваш адрес email не будет опубликован.