Программирование >>  Автоматически обновляемые приложения 

1 ... 72 73 74 [ 75 ] 76 77 78 ... 170


Как сделать снимок экрана?

Достаточно часто требуется сделать скриншот экрана или какой-нибудь его части. В старых проектах для этой цели приходилось использовать несколько функций Windows API. С выходом .NET Framework 2.0 эта задача слегка

упростилась. В составе класса Graphics появился новый метод CopyFromScreen,

который позволяет получить снимок экрана. Его использование показано в листинге 7.10.

; Листинг 7*10. Получение снимка экрана

private void butScreenCapture Click(object sender, EventArgs e) {

Вычисляем размеры экрана

Bitmap screenPicture = new Bitmap(Screen.PrimaryScreen.Bounds.Width,

Screen.PrimaryScreen.Bounds.Height); using (Graphics g = Graphics.Fromlmage(screenPicture)) {

копируем изображение всего экрана

g.CopyFromScreen(О, О, О, О, screenPicture.Size);

pictureBoxl.Image = screenPicture;

Сохранить изображение элемента управления или формы

Если нужно сохранить изображение не всего экрана, а только определенного элемента управления или формы, то проще воспользоваться новым методом .NET Framework 2.0 DrawToBitmap. Как это делать, показано в листинге 7.11.

Примечание

Пример использования картинок из ресурсов находится в папке FromRe-source на прилагаемом диске.



226 Глава 7

Листинг 7.11. Сохранение части экрана

Bitmap bitmap = new Bitmap(this.Width, this.Height); this.DrawToBitmap(bitmap,

new System.Drawing.Rectangle(new Point(0, 0), this.Size)); сохраняем в файл

bitmap.Save( с:\\t.jpg . System.Drawing.Imaging.ImageFormat.Jpeg) ;

Как получить прокручиваемый рисунок?

в рассмотренном чуть выше примере, где мы работали с целым экраном, мы

получили снимок экрана и поместили его в графический рисунок PictureBox.

Но PictureBox не имеет встроенного свойства AutoScroii, поэтому мы увидим изображение экрана не целиком. И здесь мы пойдем на небольшую хитрость. Поместим на форму элемент управления Panel с установленным свойством AutoScroll = true, а СВОЙСТВУ SizeMode ДЛЯ PictureBox присВОИМ значение Autosize. Снова запустим предыдущий пример с описанными здесь изменениями. Теперь вы получите прокручиваемый рисунок и возможность увидеть весь снимок экрана.

Примечание

Пример с получением копий экрана находится в папке CaptureScreen на прилагаемом диске.

Получение негатива изображения

Чтобы получить негатив изображения, нужно проделать несколько манипуляций с атрибутами изображения и матрицей преобразования (листинг 7.12).

Листинг 7.12. Получение негатива изображения

private void buttonl Click(object sender, EventArgs e) {

Получить изображение

Image img = pictureBoxl.Image;

Создаем объект атрибутов изображения ImageAttributes ia = new ImageAttributes();



Сделать изображение серым

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

LЛистинг 7.13. Создание серого изображения

private void button2 Click(object sender, EventArgs e)

Получить изображение

Image img = pictureBoxl.Image;

Создаем объект атрибутов изображения ImageAttributes ia = new ImageAttributes();

создаем атрибуты по матрице преобразования ColorMatrix cm = new ColorMatrix(); cm.MatrixOO = 1 / 3f; cm.MatrixOl = 1 / 3f cm.Matrix02 = 1 / 3f cm.MatrixlO = 1 / 3f cm.Matrixll = 1 / 3f

создаем атрибуты по матрице преобразования ColorMatrix cm = new ColorMatrix(); cm.MatrixOO = cm.Matrixll = cm.Matrix22 = -1;

ia.SetColorMatrix(cm);

Рисуем новое изображение с помощью преобразования Graphics g = Graphics.Fromlmage(img);

g.Drawlmage(img, new Rectangle(0, 0, img.Width, img.Height),

0, 0, img.Width, img.Height, GraphicsUnit.Pixel, ia);

Обновить рисунок pictureBoxl.Invalidate();

g.Dispose ();



1 ... 72 73 74 [ 75 ] 76 77 78 ... 170

© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки.
Яндекс.Метрика