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: