none
Função no c# que tira printscreen da página RRS feed

  • Pergunta

  • Boa tarde,

    Gostaria de saber, por gentileza, alguma solução em c# que dê print screen apenas da página ativa e salve ela como um arquivo de imagem?

    Agradeço a todos,

    Abraço!

    segunda-feira, 25 de abril de 2016 17:21

Respostas

  • Boa tarde,

    Você vai precisar adicionar a referência "System.Drawing" e "System.Windows.Forms " clicando a  References, Add Reference... Para salvar você precisar substituir "File.WriteAllBytes(@"d:\\imagens\print.png", byteArray);" por:

    FileStream fs = new FileStream(@"d:\\imagens\print.png", FileMode.OpenOrCreate);
    fs.Write(byteArray, 0, byteArray.Length);
    fs.Close();

    É importante ressaltar que você não vai estar dando print na tela do "cliente" apenas na tela do "servidor". Se é isso mesmo que deseja, talvez seria mais viável você criar um serviço ou mesmo windows forms separado e fazer a requisição (chamada) do mesmo quando desejar.

    Att,


    Se a resposta contribuiu com seu aprendizado por favor marque como util, se solucionou seu problema marque como resposta.

    • Marcado como Resposta RafaelVEL segunda-feira, 25 de abril de 2016 19:21
    segunda-feira, 25 de abril de 2016 19:17

Todas as Respostas

  • Boa tarde,

    Segue o código para tirar "print" da tela:

    private void PrintScreen()
    {
        try
        {
            System.Drawing.Bitmap printscreen = new System.Drawing.Bitmap(System.Windows.Forms.Screen.PrimaryScreen.Bounds.Width, System.Windows.Forms.Screen.PrimaryScreen.Bounds.Height);
            System.Drawing.Graphics graphics = System.Drawing.Graphics.FromImage(printscreen as System.Drawing.Image);
            graphics.CopyFromScreen(0, 0, 0, 0, printscreen.Size);
    
            byte[] byteArray = new byte[0];
            using (MemoryStream stream = new MemoryStream())
            {
                printscreen.Save(stream, System.Drawing.Imaging.ImageFormat.Png);
                stream.Close();
    
                byteArray = stream.ToArray();
            }
    
            File.WriteAllBytes(@"d:\\imagens\print.png", byteArray);
    
        }
        catch (Exception erro)
        {
            //Tratamento de erros
        }
    }

    Espero ter ajudado.

    Att,


    Se a resposta contribuiu com seu aprendizado por favor marque como util, se solucionou seu problema marque como resposta.

    • Sugerido como Resposta Silvaney segunda-feira, 25 de abril de 2016 17:43
    segunda-feira, 25 de abril de 2016 17:43
  • Obrigado amigo!

    Deu o seguinte erro:

     

    Erro de Compilação

    Descrição: Erro ao compilar um recurso necessário para atender esta solicitação. Examine os detalhes específicos do erro e modifique o código fonte apropriadamente. 

    Mensagem de Erro do Compilador: CS0234: O nome do namespace ou o tipo 'Windows' não existe no namespace 'System'. Precisa de uma referência de assembly?

    Erro de Origem:
    Linha 1965:        try
    Linha 1966:        {
    Linha 1967:            System.Drawing.Bitmap printscreen = new System.Drawing.Bitmap(System.Windows.Forms.Screen.PrimaryScreen.Bounds.Width, System.Windows.Forms.Screen.PrimaryScreen.Bounds.Height);
    Linha 1968:            System.Drawing.Graphics graphics = System.Drawing.Graphics.FromImage(printscreen as System.Drawing.Image);
    Linha 1969:            graphics.CopyFromScreen(0, 0, 0, 0, printscreen.Size);


    segunda-feira, 25 de abril de 2016 17:59
  • Realizai o teste criando um projeto "Windows Form". Que projeto é o seu?

    Att,


    Se a resposta contribuiu com seu aprendizado por favor marque como util, se solucionou seu problema marque como resposta.

    segunda-feira, 25 de abril de 2016 18:35
  • ASP.NET WebSite

    Att

    segunda-feira, 25 de abril de 2016 18:48
  • Boa tarde,

    Você vai precisar adicionar a referência "System.Drawing" e "System.Windows.Forms " clicando a  References, Add Reference... Para salvar você precisar substituir "File.WriteAllBytes(@"d:\\imagens\print.png", byteArray);" por:

    FileStream fs = new FileStream(@"d:\\imagens\print.png", FileMode.OpenOrCreate);
    fs.Write(byteArray, 0, byteArray.Length);
    fs.Close();

    É importante ressaltar que você não vai estar dando print na tela do "cliente" apenas na tela do "servidor". Se é isso mesmo que deseja, talvez seria mais viável você criar um serviço ou mesmo windows forms separado e fazer a requisição (chamada) do mesmo quando desejar.

    Att,


    Se a resposta contribuiu com seu aprendizado por favor marque como util, se solucionou seu problema marque como resposta.

    • Marcado como Resposta RafaelVEL segunda-feira, 25 de abril de 2016 19:21
    segunda-feira, 25 de abril de 2016 19:17
  • Obrigado!
    segunda-feira, 25 de abril de 2016 19:22