Выглядеть это будет так:
Добавлять их в проект нужно обязательно, иначе наши дальнейшие действия не имеют смысла.
Следующим шагом добавьте в проект этот класс:
ScreenFixCore.cs 19.3 KB
Данный класс будет служить конструктором, он содержит все компоненты для работы, а мы только будем вызывать из него функции и извлекать нужные значения.
Перейдём к форме, перечислю, какие компоненты будут использоваться:
В форме у меня были добавлены только эти директивы Using (удалил те, которые не использовал):
Для начала следует сделать импорт необходимых системных библиотек, которые по неизвестной мне причине не импортируются автоматически, но лежат в одной папке со всеми библиотеками .NET фреимворка.
Как их найти, показано в таблице ниже:
Как их найти, показано в таблице ниже:
Расположение Библиотеки
| |
PresentationCore.dll
|
C:\Program Files\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.0\Profile\Client\PresentationCore.dll
|
PresentationFramework.dll
|
C:\Program Files\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.0\Profile\Client\PresentationFramework.dll
|
WindowsBase.dll
|
C:\Program Files\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.0\Profile\Client\WindowsBase.dll
|
System.Xaml.dll
|
C:\Program Files\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.0\Profile\Client\System.Xaml.dll
|
Следующим шагом добавьте в проект этот класс:
ScreenFixCore.cs 19.3 KB
Данный класс будет служить конструктором, он содержит все компоненты для работы, а мы только будем вызывать из него функции и извлекать нужные значения.
Перейдём к форме, перечислю, какие компоненты будут использоваться:
В форме у меня были добавлены только эти директивы Using (удалил те, которые не использовал):
using System;
using System.Windows.Forms;
using System.Drawing;
using System.Windows.Media.Imaging;
using System.IO;
Необходимые переменные класса Form1:
private Bitmap bmp1;
Виджеты:
Для данного примера понадобятся
pictureBox1 - контейнер для изображения
toolStripButton - обычная кнопка, но в моём случае ещё и элемент панели инструментов. Можно и без неё обойтись, разницы никакой, разве что визуальная.
Класс ScreenFixCore.cs должен обязательно находиться в проекте.
А теперь о функции, которая делает снимок.
Вот она:
private void toolStripButton3_Click(object sender, EventArgs e)
{
//Бла бла бла, лень писать на всё комментарий =)
//Описание каждой функции можно посмотреть если в контрекстном
//меню найти и выбрать пункт "Перейти к определению"
System.Windows.Media.Color ColorBackScreen = System.Windows.Media.Colors.Black;
System.Windows.Media.Brush BrushLinesRect = System.Windows.Media.Brushes.Red;
BitmapSource bmpImage =
ScreenFixCore.ScreenshotMaker.BeginSelectionImageFromScreen(BrushLinesRect, 1.0d, ColorBackScreen);
System.Drawing.Bitmap bitmap;
using (MemoryStream outStream = new MemoryStream())
{
BitmapEncoder enc = new BmpBitmapEncoder();
enc.Frames.Add(BitmapFrame.Create(bmpImage));
enc.Save(outStream);
bitmap = new System.Drawing.Bitmap(outStream);
}
bmp1 = new Bitmap(bitmap);
pictureBox1.Image = bmp1;
}
А теперь ловим исходник, в нём функций уже больше, но статья написана на основе него и на скриншоте, который выше показана именно его работа.
ScreenShot2.rar 92.4 KB
5 коммент.:
Все бы хорошо, но если два монитора...
Как сменить цвет крестика?
ScreenFixCore.cs Обновите ссылку!!
ScreenFixCore.cs Обновите ссылку!!
Отправить комментарий