|
Программирование >> Автоматически обновляемые приложения
Как сделать снимок экрана? Достаточно часто требуется сделать скриншот экрана или какой-нибудь его части. В старых проектах для этой цели приходилось использовать несколько функций 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 ();
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |