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#