VB .NET - Capturando e Salvando telas
Neste programa feito na linguagem VB .NET podemos capturar e salvar as telas do computador local e salvar as telas no formato JPG.
Os dois formulários usados no projeto são vistos a seguir:
No primeiro temos os seguintes controles inseridos a partir da ToolBox:
O segundo formulário possui os seguintes controles:
Funciona assim:
Você pode capturar a tela atual diretamente clicando no botão Capturar ou pode ainda definir um tempo de até 5 segundos usando o controle NumericUpDown. Se o contador for selecionado o segundo formulário irá exibir um contador regressivo antes de exibir a tela capturada no primeiro formulário. Durante este processo a opacidade do primeiro formulário é alterada para zero até a exibição final do contador quando retorna a 100.
A seguir temos o código usando no primeiro formulário :
Public Class Form1 Dim timp As New DateTime() Private Sub btnCapturar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnCapturar.Click Me.Opacity = 0 If chkContador.Checked = True Then contador.ShowDialog() End If Me.ShowInTaskbar = False timp = Now() Dim bounds As Rectangle Dim _tela As System.Drawing.Bitmap Dim graph As Graphics bounds = Screen.PrimaryScreen.Bounds _tela = New System.Drawing.Bitmap(bounds.Width, bounds.Height, System.Drawing.Imaging.PixelFormat.Format32bppArgb) graph = Graphics.FromImage(_tela) graph.CopyFromScreen(bounds.X, bounds.Y, 0, 0, bounds.Size, CopyPixelOperation.SourceCopy) picTela.Image = _tela Me.Opacity = 100 Me.ShowInTaskbar = True btnSalvar.Enabled = True btnLimpar.Enabled = True End Sub Private Sub btnSalvar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSalvar.Click Dim filesavedialog1 As New SaveFileDialog SaveFileDialog1.Title = "Salvar tela" SaveFileDialog1.FileName = "tela_" & timp.ToString("HH-mm-dd-MM-yyyy") & ".jpg" SaveFileDialog1.Filter = "JPEG File| .jpg" Try If SaveFileDialog1.ShowDialog = Windows.Forms.DialogResult.OK Then picTela.Image.Save(SaveFileDialog1.FileName, System.Drawing.Imaging.ImageFormat.Jpeg) End If Catch ex As Exception MsgBox(ex.Message, MsgBoxStyle.Critical) End Try End Sub Private Sub btnLimpar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnLimpar.Click picTela.Image = Nothing btnSalvar.Enabled = False btnLimpar.Enabled = False End Sub Private Sub chkContador_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles chkContador.CheckedChanged If chkContador.Checked = True Then nupContador.Enabled = True ElseIf chkContador.Checked = False Then nupContador.Enabled = False End If End Sub End Class |
O código definido no segundo formulário é o seguinte:
Public Class contador Dim i As Integer = Form1.nupContador.Value Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick If i > 0 Then i -= 1 Label1.Text = i Else Me.Close() End If End Sub Private Sub contador_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load Label1.Text = i End Sub End Class |
Neste código estamos usando o evento Tick do controle Timer para exibir o contador na tela antes de encerrar a captura da tela selecionada.
Executando o projeto e capturando uma tela temos o resultado abaixo:
Muito fácil e simples com o VB .NET.
Pegue o projeto completo aqui: CapturaTelas.zip
João 14:25
Estas coisas vos tenho falado, estando ainda convosco.João 14:26
Mas o Ajudador, o Espírito Santo a quem o Pai enviará em meu nome, esse vos ensinará todas as coisas, e vos fará lembrar de tudo quanto eu vos tenho dito.Referências:
Super DVD Vídeo Aulas - Vídeo Aula sobre VB .NET, ASP .NET e C#