Está en la página 1de 3

CAPTURA DE FORMULARIO

RodriguezWeb

CAPTURA DE FORMULARIO
Aunque este cdigo est hecho con Visual Basic 2005 y Visual C# 2005, supongo que funcionar con cualquier versin de VB.NET o de C#, aunque no lo he probado, ya que desde hace tiempo que solo uso la versin 2005 de Visual Studio, pero creo que las funciones usadas estn en todas las versiones de .NET En este ejemplo, se hacen tres cosas : 1- Capturar el contenido del formulario actual. 2- Capturar el contenido de toda la pantalla. 3- Guardar esa captura en un fichero, y segn la extensin de ese fichero, se usar el formato adecuado al guardar la imagen. Para crear el formulario de ejemplo debes aadir los siguientes controles al formulario: 1 etiqueta, una caja de textos llamada txtNombre para guardar el nombre de la imagen, un botn llamado btnGuardar para guardar la imagen capturada, un botn llamado btnCapturar para capturar el contenido del formulario, un botn llamado btnCapturarPantalla para capturar toda la pantalla y un control de tipo PictureBox al que le he dado el nombre picCaptura y se usa para mostrar la captura y tambin ser la imagen que se guarde. Al PictureBox le he asignado el valor StretchImage a la propiedad SizeMode, de forma que muestre la imagen completa, adems he asignado los valores a la propiedad Anchor para que se adapte al tamao del formulario (anclado en las cuatro esquinas), con idea de que puedas ver mejor la captura al cambiar el tamao del formulario.

Figura 1. Una captura del formulario en ejecucin

Guillermo J Rodrguez Pineda

Pgina 1

CAPTURA DE FORMULARIO

RodriguezWeb

Figura 2. Varias capturas del formulario con lo capturado using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; // Librerias Aadidas using System.Drawing.Imaging; using System.IO; namespace CapturaImagen { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void btnGuardar_Click(object sender, EventArgs e) { // Si no se indica el formato, se guarda como PNG //this.picCaptura.Image.Save(this.txtNombre.Text); //Preguntamos si el Valor String es Nulo if (String.IsNullOrEmpty(txtNombre.Text)) { MessageBox.Show("Debes indicar el Nombre del Fichero", "Guardar",MessageBoxButtons.OK, MessageBoxIcon.Exclamation); return; } // Usar el formato segn la extensin string ext = Path.GetExtension(this.txtNombre.Text).ToLower(); switch (ext) { case ".jpg": this.picCaptura.Image.Save(this.txtNombre.Text, ImageFormat.Jpeg); break; case ".png": this.picCaptura.Image.Save(this.txtNombre.Text, ImageFormat.Png); break; case ".gif": this.picCaptura.Image.Save(this.txtNombre.Text, ImageFormat.Gif); break; case ".bmp": this.picCaptura.Image.Save(this.txtNombre.Text, ImageFormat.Bmp); break; case ".tif": this.picCaptura.Image.Save(this.txtNombre.Text, ImageFormat.Tiff);

Guillermo J Rodrguez Pineda

Pgina 2

CAPTURA DE FORMULARIO
break; default: this.picCaptura.Image.Save(this.txtNombre.Text); break; } } private void btnCapturar_Click(object sender, EventArgs e) { // Capturar todo el rea del formulario Graphics gr = this.CreateGraphics(); // Tamao de lo que queremos copiar Size fSize = this.Size; // Creamos el bitmap con el rea que vamos a capturar // En este caso, con el tamao del formulario actual Bitmap bm = new Bitmap(fSize.Width, fSize.Height, gr); // Un objeto Graphics a partir del bitmap Graphics gr2 = Graphics.FromImage(bm); // Copiar el rea de la pantalla que ocupa el formulario gr2.CopyFromScreen(this.Location.X, this.Location.Y, 0, 0, fSize); // Asignamos la imagen al PictureBox this.picCaptura.Image = bm; // Guardarlo como JPG //bm.Save("formulario.jpg", System.Drawing.Imaging.ImageFormat.Jpeg); } private void btnCapturarPantalla_Click(object sender, EventArgs e) { // Capturar toda la pantalla Graphics gr = this.CreateGraphics(); // Tamao de lo que queremos copiar // En este caso el tamao de la ventana principal Size fSize = Screen.PrimaryScreen.Bounds.Size; // Creamos el bitmap Bitmap bm = new Bitmap(fSize.Width, fSize.Height, gr); // Un objeto Graphics a partir del bitmap Graphics gr2 = Graphics.FromImage(bm); // Copiar todo el rea de la pantalla gr2.CopyFromScreen(0, 0, 0, 0, fSize); // Asignamos la imagen al PictureBox this.picCaptura.Image = bm; } } }

RodriguezWeb

Guillermo J Rodrguez Pineda

Pgina 3