C# - Capturando a tela


 Hoje vou apresentar uma opção para capturar a tela usando um projeto console.

Eu já publiquei um artigo que mostra como capturar telas em um projeto Windows Forms neste link:  C# Capturando telas

Hoje vou mostrar uma forma bem mais simples que você pode usar e adaptar às suas necessidades.

Vamos criar um projeto Console no VS 2022 Preview usando o .NET 8 chamado CapturaTela.

No arquivo de projeto vamos incluir a referência a Microsoft.WindowsDesktop,App.WindowsForms :


<ItemGroup> 
   <FrameworkReference Include="Microsoft.WindowsDesktop.App.WindowsForms" />
</ItemGroup>

Agora que temos uma referência para System.Windows.Forms, podemos obter as dimensões da tela – estamos interessados nas coordenadas iniciais (x e y) e em seu tamanho (w e h). Obtemos essas informações de SystemInformation.VirtualScreen.

Assim na classe Program vamos incluir o código abaixo:

using System.Drawing;
using System.Drawing.Imaging;
using System.Windows.Forms;

var screen = SystemInformation.VirtualScreen;

int x = screen.Left;
int y = screen.Top;
int w = screen.Width;
int h = screen.Height;

Console.WriteLine("Iniciar captura de tela\nTecle algo para iniciar...");
Console.ReadKey();

var image = new Bitmap(w, h);
using var graphics = Graphics.FromImage(image);
graphics.CopyFromScreen(x, y, 0, 0, new Size(w, h));
string picturesDirectory = Environment.GetFolderPath(Environment.SpecialFolder.MyPictures);

string fileName = $"Screenshot {DateTime.Now:yyyy-MM-dd HHmmss}.png";
string filePath = Path.Combine(picturesDirectory, fileName);

image.Save(filePath, ImageFormat.Png);

Console.WriteLine("Tela capturada e salva em : " + filePath);

Console.ReadKey();

Entendendo o código :

Por fim, a localização onde a imagem foi salva é mostrada no console.

Resumindo, este código faz o seguinte:

Executando o projeto teremos o seguinte resultado:

Abrindo o arquivo : Screenshot 2023-11-22 184654.png teremos a imagem a seguir:

E estamos conversados...

"Porque Deus enviou o seu Filho ao mundo, não para que condenasse o mundo, mas para que o mundo fosse salvo por ele."
João 3:17

Referências:


José Carlos Macoratti