Que tal capturar a tela usando seu próprio software?
1. Inicie um novo projeto C# no VS, monte o window form a seguir, contendo um botão, uma pictureBox.
2. Antes da linha public Form1() acrescente o seguinte código que irá capturar a resolução da sua tela e criar uma variável do tipo Graphics
Graphics g; //define a largura e altura para serem iguais a da tela int TelaLargura = Screen.PrimaryScreen.Bounds.Width; int TelaAltura = Screen.PrimaryScreen.Bounds.Height;
3. No botão de captura, coloque o seguinte código;
//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 pictureBox1.Image = b;
O resultado será:
Você também pode salvar o arquivo no formato .jpg, para isso adicione o componente saveFileDialog ao seu Window Form. Adicione também um botão, dentro deste botão acrescente o seguinte código que irá salvar a imagem;
//abre a janela de dialogo SaveDialog para salvar o arquivo gerado na captura DialogResult res = saveFileDialog1.ShowDialog(); if (res == DialogResult.OK) { //obtem a extensão do arquivo salvo string ext = System.IO.Path.GetExtension(saveFileDialog1.FileName); if (ext == ".jpg") pictureBox1.Image.Save(saveFileDialog1.FileName, System.Drawing.Imaging.ImageFormat.Jpeg); }
Para finalizar, altere a propriedade Filter do componente para JPEG Files|*.jpg
Problemas comuns
No exemplo acima, a aplicação que você desenvolveu que irá fazer a captura também aparecerá no print. Uma forma de resolver isso é esconder a tela e exibi-la novamente após a captura.
Para esconder a tela da aplicação durante a captura usamos o código a seguir;
this.Hide(); //esconde a tela
Para voltar a exibi-la;
this.Show();
Outro problema, é que a captura da tela pode levar mais tempo do que se espera de modo que é necessário o uso do componente timer para fazer a captura. O timer deve ser iniciar somente quando o usuário clicar no botão capturar.
timer1.Start(); // inicia o relógio do timer.
e
timer1.Stop(); // para o timer