Tip/Trick: Cómo capturar la pantalla

A veces nos puede resultar útil o necesario capturar la pantalla del usuario. Y para esto nos podemos servir de las librerías de GDI+.


Para nuestro ejemplo usaremos un Form, un Timer y un PictureBox llamados Form1, _tmr y _pctrBx respectivamente y la propiedad Enable del Timer la establecemos en True.


Antes de nada en nuestra clase Form1 declaramos:


// Buffer de gráficos


Graphics _grphcs;


//Imagen que se mostrará en el PictureBox


Bitmap _btmp;


 


//Ancho de la pantalla


int _screenWidth;


//Alto de la pantalla


int _screenHeight;


Ahora en el constructor del Form, debajo de InitializeComponent establecemos las variables declaradas:


//Creamos la imagen con tamaño 150px x 150px


_btmp = new Bitmap(150, 150);


//Creamos el buffer apartir de la imagen


_grphcs = Graphics.FromImage(_btmp);


//Establecemos el ancho de la pantalla


_screenHeight = Screen.PrimaryScreen.WorkingArea.Height;


//Establecemos el alto de la pantalla


_screenWidth = Screen.PrimaryScreen.WorkingArea.Width;


Ahora en el evento Tick del Timer añadimos el siguiente código:


//Obtenemos la posición del cursor


Point _pnt = Cursor.Position;


//Centramos el cursor


_pnt.X -= 75;


_pnt.Y -= 75;


//Rellenamos la imagen de negro para las zonas no visibles


_grphcs.FillRectangle(Brushes.Black, new Rectangle(0,0,150,150));


//Obtenemos la captura de la pantalla usando la posicion que obtuvimos


//antes del cursor, copiamos la imagen en la posición (0,0) y usamos


//el tamaño de siempre


_grphcs.CopyFromScreen(_pnt, new Point(0, 0), _btmp.Size);


//Por último establecemos el BitMap como imagen del PictureBox


_pctrBx.Image = _btmp;


El código completo sería:


public partial class Form1 : Form


{


    // Buffer de gráficos


    Graphics _grphcs;


    //Imagen que se mostrará en el PictureBox


    Bitmap _btmp;


    //Ancho de la pantalla


    int _screenWidth;


    //Alto de la pantalla


    int _screenHeight;


 


    public Form1()


    {


        InitializeComponent();


        //Creamos la imagen con tamaño 150px x 150px


        _btmp = new Bitmap(150, 150);


        //Creamos el buffer apartir de la imagen


        _grphcs = Graphics.FromImage(_btmp);


        //Establecemos el ancho de la pantalla


        _screenHeight = Screen.PrimaryScreen.WorkingArea.Height;


        //Establecemos el alto de la pantalla


        _screenWidth = Screen.PrimaryScreen.WorkingArea.Width;


 


    }


 


    private void _myTimer_Tick(object sender, EventArgs e)


    {


        //Obtenemos la posición del cursor


        Point _pnt = Cursor.Position;


        //Centramos el cursor


        _pnt.X -= 75;


        _pnt.Y -= 75;


        //Rellenamos la imagen de negro para las zonas no visibles


        _grphcs.FillRectangle(Brushes.Black, new Rectangle(0,0,150,150));


        //Obtenemos la captura de la pantalla usando la posicion que obtuvimos


        //antes del cursor, copiamos la imagen en la posición (0,0) y usamos


        //el tamaño de siempre


        _grphcs.CopyFromScreen(_pnt, new Point(0, 0), _btmp.Size);


        //Por último establecemos el BitMap como imagen del PictureBox


        _pctrBx.Image = _btmp;


    }


}


Podéis descargar el código fuente aquí.


Espero que os sea útil.

2 thoughts on “Tip/Trick: Cómo capturar la pantalla

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *