Social Icons

twitterfacebookgoogle pluslinkedinrss feedemail

Pages, oficial

sábado, 3 de noviembre de 2012

Capturar la Pantalla Windows (ScreenShot) en C#

Un pequeño tutorial o Tip si  podríamos decirlo así  que consiste en captura la pantalla de Windows y guardarla en un archivo de imagen.

En este caso yo he creado un proyecto en WindowsForms,  llamado Captura, añadí un Button y un SaveFileDialog para guarda el archivo.





El código se desarrollara en el evento Onclick del Button1, como se muestra a continuación:

private void button1_Click(object sender, EventArgs e)
        {
        Bitmap BmpScreen = new Bitmap(Screen.PrimaryScreen.Bounds.Width,
                                      Screen.PrimaryScreen.Bounds.Height,
                              System.Drawing.Imaging.PixelFormat.Format32bppPArgb);

            Graphics ScreenShot = Graphics.FromImage(BmpScreen);

       ScreenShot.CopyFromScreen(Screen.PrimaryScreen.Bounds.X,    
                                 Screen.PrimaryScreen.Bounds.Y, 0, 0, 
                Screen.PrimaryScreen.Bounds.Size, CopyPixelOperation.SourceCopy);

            string fileNom = String.Empty;

            saveFileDialog1.Filter = "Excel files (*.png)|*.png";

            saveFileDialog1.RestoreDirectory = true;

            if (saveFileDialog1.ShowDialog() == DialogResult.OK)
           {
               fileNom = saveFileDialog1.FileName;

                BmpScreen.Save(fileNom, System.Drawing.Imaging.ImageFormat.Png);
           }
            

        }

Al realizar en WindowsForms Por defecto se añade la referencia de  System.Drawing; por lo que puedo crear los Objetos Bitmap y Graphics libremente -para tomarlo en cuenta-.

Analizando el código,  Creamos el objeto bmpScreen del tipo Bitmap con los parámetros establecidos, los primeros define la dimensión  y el siguiente el formato de la imagen en cuestión de gama colores  como de 8  16 o 32 bits si desea puede cambiar a los diferentes parámetros  que sugiere el intellisense

ScreenShot del tipo Graphics, permite obtener la pantalla y copiarla al bmpScreen, el archivo se guarda en png, usted puede elegir otro formato de imagen.



Una ves elegida la ruta y el nombre del archivo podrá verificar que se realiza la captura de la pantalla.

2 comentarios:

  1. Hola que tal
    Yo uso este codigo
    public void Screenshot()
    {
    Bitmap bmpScreenshot = new Bitmap(Screen.PrimaryScreen.Bounds.Width, Screen.PrimaryScreen.Bounds.Height, PixelFormat.Format32bppArgb);
    Graphics gfxScreenshot = Graphics.FromImage(bmpScreenshot);
    gfxScreenshot.CopyFromScreen(Screen.PrimaryScreen.Bounds.X, Screen.PrimaryScreen.Bounds.Y, 0, 0, Screen.PrimaryScreen.Bounds.Size, CopyPixelOperation.SourceCopy);
    bmpScreenshot.Save(FileName, ImageFormat.Png);
    }

    ResponderEliminar
  2. he estado buscando la forma de hacer esto con un programa de C# en consola, pero no lo he logrado, solo con usando form, alguien tendrá algún tip de como hacerlo?

    ResponderEliminar

Comenta...