 C#
- Capturando telas
C#
- Capturando telas
Que tal uma aplicação para capturar telas usando a linguagem C# ?
Abra o seu Visual C# 2008 Express Edition e crie um projeto do tipo Windows Forms Application no menu File -> New Project e informe o nome CapturaTela;
Obs: Podemos usar o mesmo código usando o Visual C# 2010 Express Edition
A seguir no formulário form1.cs da aplicação inclua ao seguintes controles:
Defina no formulário form1.cs os controles conforme o leiaute da figura abaixo:
|  | 
Vamos ao código da aplicação...
1- Código do evento Click do botão - Capturar Tela:
|  private void btnCapturarTela_Click(object sender, EventArgs e)
 {
     //oculta o formulário e inicia a captura
     this.Hide();
     tmTela.Start();
 } | 
Ao clicar no botão Capturar Tela a rotina oculta o formulário atual e dispara o evento do controle timer onde temos o seguinte código que irá capturar a tela:
Sem a utilização do timer não seria possível esconder o formulário atual.
|    private void timer1_Tick(object sender, EventArgs e)
        {
            //armazena a imagem no bitmap
            Bitmap b = new Bitmap(TelaLargura, TelaAltura);
            //copia  a tela no bitmap
            g = Graphics.FromImage(b);
            g.CopyFromScreen(Point.Empty, Point.Empty, Screen.PrimaryScreen.Bounds.Size);
            //atribui a imagem ao picturebox exibindo-a
            picTela.Image = b;
            this.Show();
            //habilita o botão para salvar a tela
            btnSalvarTela.Enabled = true;
            //encerra o timer
            tmTela.Stop();
        } | 
O código do botão Salvar Tela é mostrado a seguir. Ele abre uma janela de diálogo e salva a tela capturada:
|  private void btnSalvarTela_Click(object sender, EventArgs e)
        {
            //abre a janela de dialogo SaveDialog para salvar o arquivo gerado na captura
            DialogResult res = svdTela.ShowDialog();
            if (res == DialogResult.OK)
            {
                //obtem a extensão do arquivo salvo
                string ext = System.IO.Path.GetExtension(svdTela.FileName);
                if (ext == ".jpg")
                    picTela.Image.Save(svdTela.FileName, System.Drawing.Imaging.ImageFormat.Jpeg);
                else if (ext == ".gif")
                    picTela.Image.Save(svdTela.FileName, System.Drawing.Imaging.ImageFormat.Gif);
                else if (ext == ".png")
                    picTela.Image.Save(svdTela.FileName, System.Drawing.Imaging.ImageFormat.Png);
            }
        } | 
Para encerrar temos o código dos botões Limpar e Encerrar que limpa o controle PictureBox e encerra a aplicação:
|     private void btnEncerrar_Click(object sender, EventArgs e)
    {
            this.Close();
   }
   private void btnLimpar_Click(object sender, EventArgs e)
   {
         this.picTela.Image = null;
   } | 
Executando o projeto e capturando uma tela teremos como resultado algo parecido com a imagem abaixo: (Observe que o formulário do projeto não foi capturado)
|  | 
Simples, simples assim...
Eu sei é apenas C# , mas
eu gosto...
Pegue o projeto completo aqui: CapturaTela.zip
Referências: