Utilizamos cookies propias y de terceros. [Más información sobre las cookies].
Política de cookies
Proyecto AjpdSoft

· Inicio
· Buscar
· Contactar
· Cookies
· Descargas
· Foros
· Historia
· Nosotros
· Temas
· Top 10
· Trucos
· Tutoriales
· Wiki
Proyecto AjpdSoft: Foros

AjpdSoft :: Ver tema - Capturar pantalla Screenshot con Visual C# C Sharp
Foros de discusión Buscar Perfil FAQ Iniciar sesión
Information Capturar pantalla Screenshot con Visual C# C Sharp

Publicar nuevo tema Responder al tema
Foros de discusión » VB.Net, C# .Net, Visual Studio .Net   
Ver tema anterior :: Ver tema siguiente
AutorMensaje
varios
Magnífico usuario


Registrado: Oct 10, 2006
Mensajes: 2092

Asunto: Capturar pantalla Screenshot con Visual C# C Sharp Responder citando

¿Cómo puedo capturar la pantalla actual en una imagen usando Visual C# de Visual Studio .Net? quiero capturar la pantalla actual al pulsar un botón, guardarla en un fichero de imagen y enviarla por mail. Lo del envío de mail lo tengo resuelto con vuestra aplicación en VB.Net, la he adaptado para C#:

http://www.ajpdsoft.com/modules.php?name=Downloads&d_op=viewdownloaddetails&lid=290
MensajePublicado:
Jue Jun 28, 2012 7:48 pm
Top of PageVer perfil de usuario
alonsojpd
Administrador/Moderador


Registrado: Sep 16, 2003
Mensajes: 2687

Asunto: Re: Capturar pantalla Screenshot con Visual C# C Sharp Responder citando



Anuncios



varios escribió:
¿Cómo puedo capturar la pantalla actual en una imagen usando Visual C# de Visual Studio .Net? quiero capturar la pantalla actual al pulsar un botón, guardarla en un fichero de imagen y enviarla por mail. Lo del envío de mail lo tengo resuelto con vuestra aplicación en VB.Net, la he adaptado para C#:

http://www.ajpdsoft.com/modules.php?name=Downloads&d_op=viewdownloaddetails&lid=290


A continuación te mostramos el código fuente completo de una de nuestras aplicaciones en C# que publicaremos en breve, esta aplicación captura la pantalla actual y permite guardar en fichero de imagen con formato JPEG, BMP, TIFF, etc.:

Código:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Drawing.Imaging;

namespace AjpdSoftCapturaPantalla
{
    public partial class formCapturarPantalla : Form
    {
        public formCapturarPantalla()
        {
            InitializeComponent();
        }

        private void btCapturarPantalla_Click(object sender, EventArgs e)
        {
            if (!System.IO.File.Exists(txtUbicacionCaptura.Text))
            {
                try
                {
                    //Comprobamos si la ventana está maximizada, si lo está
                    //la dejamos en Normal para que funcione el hide
                    if (this.WindowState == FormWindowState.Maximized)
                    {
                        this.WindowState = FormWindowState.Normal;
                    }
                    //ocultamos la ventana de la aplicación para que
                    //no aparezca en la captura de pantalla
                    this.Hide();

                    //esperamos unos milisegundos para asegurarnos que se ha ocultado la ventana
                    System.Threading.Thread.Sleep(250);

                    //obtenemos la resolución de pantalla
                    Rectangle tamanoEscritorio = Screen.GetBounds(this.ClientRectangle);

                    //creamos un Bitmap del tamaño de nuestra pantalla
                    Bitmap objBitmap = new Bitmap(tamanoEscritorio.Width, tamanoEscritorio.Height);
                    //creamos el gráifco en base al Bitmap objBitmap
                    Graphics objGrafico = Graphics.FromImage(objBitmap);
                    //transferimos la captura al objeto objGrafico en base a las medidas del bitmap
                    objGrafico.CopyFromScreen(0, 0, 0, 0, objBitmap.Size);
                    //liberamos el gráfico de memoria                           
                    objGrafico.Flush();
                    //mostramos la captura de memoria a la ventana de la aplicación
                    imgCaptura.SizeMode = PictureBoxSizeMode.StretchImage;
                    imgCaptura.Image = objBitmap;
                    imgCaptura.Visible = true;

                    /* Si queremos crear el PictureBox en tiempo de ejecución
                    var imgPictureBox = new PictureBox();
                    imgPictureBox.Location = new System.Drawing.Point(15, 89);
                    imgPictureBox.Size = new System.Drawing.Size(609, 332);
                    imgPictureBox.SizeMode = PictureBoxSizeMode.StretchImage;
                    imgPictureBox.Image = objBitmap;
                    Controls.Add(imgPictureBox);
                    imgPictureBox.Visible = true;
                     */
                }
                catch (Exception objError)
                {
                    MessageBox.Show(objError.ToString(), "Error",
                        MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
                finally
                {
                    this.Show();
                }
            }
            else
            {
                MessageBox.Show("Ya existe un fichero de imagen con ese " +
                    "nombre, seleccione otra ruta o nombre de fichero.", "Atención",
                    MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
            }
        }

        private void bSelDestino_Click(object sender, EventArgs e)
        {
            string formatoImagen = "";
            formatoImagen = lsFormatoImagen.Text;

            if (formatoImagen != "")
            {
                dlGuardarImagen.Title = "Selección de carpeta y fichero de " +
                    "imagen donde se guardará la captura";
                dlGuardarImagen.Filter = "Imágenes " + formatoImagen +
                    " (*." + formatoImagen.ToLower() + ")|*." + formatoImagen.ToLower() +
                    "|Todos los ficheros (*.*)|*.*";
                dlGuardarImagen.DefaultExt = formatoImagen.ToLower();
                dlGuardarImagen.FilterIndex = 1;
                //saveFileDialog1.RestoreDirectory = true;
                if (dlGuardarImagen.ShowDialog() == DialogResult.OK)
                {
                    txtUbicacionCaptura.Text = dlGuardarImagen.FileName;
                }
            }
            else
            {
                MessageBox.Show("Debe seleccionar el formato para la imagen.", "Atención",
                    MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                lsFormatoImagen.Focus();
            }
        }

        private void btGuardar_Click(object sender, EventArgs e)
        {
            if (imgCaptura.Image != null)
            {
                string formatoImagen = "";
                formatoImagen = lsFormatoImagen.Text;
                if (formatoImagen != "")
                {
                    if (txtUbicacionCaptura.Text != "")
                    {
                        if (System.IO.Directory.Exists(System.IO.Path.GetDirectoryName(txtUbicacionCaptura.Text)))
                        {
                            if (formatoImagen == "PNG")
                            {
                                imgCaptura.Image.Save(txtUbicacionCaptura.Text, ImageFormat.Png);
                            }
                            if (formatoImagen == "BMP")
                            {
                                imgCaptura.Image.Save(txtUbicacionCaptura.Text, ImageFormat.Bmp);
                            }
                            if (formatoImagen == "JPEG")
                            {
                                imgCaptura.Image.Save(txtUbicacionCaptura.Text, ImageFormat.Jpeg);
                            }
                            if (formatoImagen == "TIFF")
                            {
                                imgCaptura.Image.Save(txtUbicacionCaptura.Text, ImageFormat.Tiff);
                            }
                            if (formatoImagen == "WMF")
                            {
                                imgCaptura.Image.Save(txtUbicacionCaptura.Text, ImageFormat.Wmf);
                            }
                        }
                        else
                        {
                            MessageBox.Show("La carpeta de destino de la imagen " +
                                "capturada debe existir.", "Atención",
                                MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                            bSelDestino.Focus();
                        }
                    }
                    else
                    {
                        MessageBox.Show("Debe indicar una carpeta y nombre de fichero " +
                            "para guardar la imagen capturada.", "Atención",
                            MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                        bSelDestino.Focus();
                    }
                }
                else
                {
                    MessageBox.Show("Debe seleccionar el formato para la imagen. ", "Atención",
                        MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                    lsFormatoImagen.Focus();
                }
            }
            else
            {
                MessageBox.Show("Debe capturar previamente una imagen.", "Atención",
                    MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                    btCapturarPantalla.Focus();
            }
        }

        private void linkAjpdSoft_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
        {
            System.Diagnostics.Process.Start("http://www.ajpdsoft.com");
        }

        private void lsFormatoImagen_SelectedValueChanged(object sender, EventArgs e)
        {
            string ficheroCaptura = "";
            ficheroCaptura = txtUbicacionCaptura.Text;
            if (ficheroCaptura != "")
            {
                ficheroCaptura = System.IO.Path.GetDirectoryName(ficheroCaptura) +
                    System.IO.Path.DirectorySeparatorChar +
                    System.IO.Path.GetFileNameWithoutExtension(ficheroCaptura) + "." +
                    lsFormatoImagen.Text.ToLower();
                txtUbicacionCaptura.Text = ficheroCaptura;
            }
        }
    }
}
MensajePublicado:
Jue Jun 28, 2012 8:27 pm
Top of PageVer perfil de usuario
alonsojpd
Administrador/Moderador


Registrado: Sep 16, 2003
Mensajes: 2687

Asunto: Re: Capturar pantalla Screenshot con Visual C# C Sharp Responder citando



Anuncios



El videotutorial sobre AjpdSoft Capturar pantalla C#:



El tutorial sobre la aplicación AjpdSoft Capturar pantalla C#:

http://www.ajpdsoft.com/modules.php?name=News&file=article&sid=600

La aplicación de ejemplo completa con código fuente en C# C Sharp:

http://www.ajpdsoft.com/modules.php?name=Downloads&d_op=viewdownloaddetails&lid=302
MensajePublicado:
Sab Jun 30, 2012 8:47 pm
Top of PageVer perfil de usuario
Mostrar mensajes de anteriores:   
Todas las horas son GMT - 1 Horas
Publicar nuevo tema Responder al tema
Foros de discusión » VB.Net, C# .Net, Visual Studio .Net  

Cambiar a:  
Key
  Puede publicar nuevos temas en este foro
No puede responder a temas en este foro
No puede editar sus mensajes en este foro
No puede borrar sus mensajes en este foro
No puede votar en encuestas en este foro
Visita nuestro nuevo sitio web con programas y contenidos actualizados: Proyecto A