Ferramentas de Usuário

Ferramentas de Site


dev_net:vb.net:printscreen

Printscreen de um Form

É-nos útil, por alguma razão, tirar um printscreen, seja só ao Form em questão ou a toda a janela em redor. Os exemplos abaixo relatam as duas situações que mencionei.

Printscreen Form:

Imports System.Drawing.Image
Public Class Form1
 
    Dim coordenadasGraph As Graphics
    Dim AreaBmp As Bitmap
    Dim Destino As New SaveFileDialog
 
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        With Destino
            .Filter = "PNG (*.png)|.png" ' Podem utilizar os tipos de imagem que bem entenderem
            .FileName = ""
            If .ShowDialog = Windows.Forms.DialogResult.OK Then
                Timer1.Enabled = True
                Timer1.Start()
            End If
        End With
    End Sub
 
    Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
        ' Apanhamos as dimensões actuais do nosso form
        AreaBmp = New Bitmap(Me.Size.Width, Me.Size.Height, System.Drawing.Imaging.PixelFormat.Format32bppArgb)
        coordenadasGraph = Graphics.FromImage(AreaBmp)
        ' Assim como as suas coordenadas
        coordenadasGraph.CopyFromScreen(Me.Location.X, Me.Location.Y, 0, 0, Me.Size, CopyPixelOperation.SourceCopy)
 
        AreaBmp.Save(Destino.FileName, Imaging.ImageFormat.Png) ' Guardamos a imagem para o local escolhido
        Timer1.Enabled = False
        Timer1.Stop()
    End Sub
End Class
O uso do timer é necessário, pois caso contrário, quando clicarem no botão para tirar o printscreen, será tão rápido a tira-lo que não vai capturar a tela do Form, mas sim outras telas.
Basta, assim, colocar o timer com o intervalo de 1000 ms (1 segundo).

Printscreen janela:

Imports System.Drawing.Bitmap
Public Class Form1
 
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        ' Apanhamos as dimensões do nosso ecrã
        Dim TamanhoJanela As Size = New Size(Screen.PrimaryScreen.Bounds.Width, Screen.PrimaryScreen.Bounds.Height)
        Dim PrintScreen As New Bitmap(Screen.PrimaryScreen.Bounds.Width, Screen.PrimaryScreen.Bounds.Height)
        ' Desenhamos a imagem capturada
        Dim Desenhar As System.Drawing.Graphics = System.Drawing.Graphics.FromImage(PrintScreen)
        Desenhar.CopyFromScreen(New Point(0, 0), New Point(0, 0), TamanhoJanela)
        ' Por fim, guardamos-a no local pretendido, com o formato pretendido.
        ' Desta vez decidi não utilizar o sistema de escolha do local para guardar a imagem
        ' de forma a exemplificar os dois sistemas.
        PrintScreen.Save("C:PrintScreen.jpg", System.Drawing.Imaging.ImageFormat.Jpeg)
    End Sub
End Class

Artigo escrito por bioshock

dev_net/vb.net/printscreen.txt · Última modificação em: 2018/05/14 21:37 (edição externa)