Pint Screen con C# (Capturar una Imagen)

Estare realizando un ejemplo de como Capturar un Trozo de una pantalla o una pantalla completa con C#.Net, estare explicando paso a paso como realizar esta tarea.

Para eso crearemos una pantalla similar a esta que se refleja en la imagen, la cual contiene los siguientes elementos:

a) 3 Botones (Capturar, Capturar Pantalla Completa, Guardar Imagen)
b) 1 TextBox
c) 1 PictureBox


Luego procedemos a codificar las acciones que queramos que haga este aplicativo, aqui les dejo todo el codigo fuente utilizado:


using System;
using System.Drawing;
using System.Drawing.Imaging;
using System.Windows.Forms;
using System.IO;

namespace PrintScreen
{
    public partial class Main : Form
    {
        public Main()
        {
            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);

            if (String.IsNullOrEmpty(this.txtNombre.Text))
            {
                MessageBox.Show("Debes indicar el nombre del fichero",
                                "Guardar",
                                MessageBoxButtons.OK,
                                MessageBoxIcon.Exclamation);
                return;
            }

            // Usar el formato según la extensión
            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);
                    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();
            // Tamaño de lo que queremos copiar
            Size fSize = this.Size;
            // Creamos el bitmap con el área que vamos a capturar
            // En este caso, con el tamaño 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();
            // Tamaño de lo que queremos copiar
            // En este caso el tamaño 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;
        }
    }
}

Luego de haber programado estos eventos podremos capturar una parte de la pantalla o la pantalla completa, y se reflejara en nuestro control PictureBox, como tambien podemos ponerle un nombre y guardar esa imagen en nuestro ordenador.



No Response to "Pint Screen con C# (Capturar una Imagen)"

Publicar un comentario