Используйте значок уведомления, чтобы захватить изображение на экране в C#

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

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

Чтобы использовать значок уведомления, просто добавьте компонент NotifyIcon в форму. Установите свойство ContextMenu компонента в ContextMenu, которое вы хотите отобразить программе, когда пользователь щелкнет правой кнопкой значок.

В этом примере отображается контекстное меню, показанное выше. Команда Capture All захватывает изображение рабочего стола и позволяет сохранить его в файл. Команда «Выбрать область» позволяет щелкнуть и перетащить, чтобы выбрать область, а затем сохранить изображение этой области в файл.

Следующий код показывает, как работает команда Capture All.

Этот код просто вызывает методы GetScreenImage и SavePicture, показанные в следующем коде.

GetScreenImage делает Bitmap размер экрана, а затем использует Graphics класс CopyFromScreen метод для получения изображения экрана.

В методе SavePicture отображается SaveFileDialog, чтобы пользователь мог выбрать файл. Если пользователь выбирает файл и нажимает кнопку «Сохранить», программа сохраняет Bitmap в формате файла, который зависит от расширения файла.

Это полезно, но код, который позволяет захватывать область на рабочем столе, еще более интересен. Когда вы выбираете пункт меню «Область захвата», следующий процесс запускает процесс.

Этот код использует метод GetScreenImage для получения изображения экрана. Затем он создает копию этого изображения и отображает его в форме программы. Он устанавливает обработчик событий MouseDown и отображает форму.

Когда вы нажимаете кнопку мыши на форме, выполняется следующий обработчик событий.

Этот код сохраняет текущую позицию мыши. Он удаляет обработчик событий MouseDown и устанавливает MouseMove и MouseUp обработчики событий. В следующем коде показан обработчик события MouseMove.

Этот обработчик событий создает объект Graphics, связанный с растровым изображением VisibleBm, который в настоящее время отображается в форме. Он рисует исходное изображение на экране на этом растровом изображении, а затем добавляет желтый прямоугольник, показывающий область, выбранную пользователем.

В следующем коде показан обработчик события MouseUp.

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

Источник: http://csharphelper.com/blog/2015/09/use-a-notify-icon-to-capture-a-screen-image-in-c/

1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (Пока оценок нет)
Adblock
detector