VB.Net - Capturar pantalla

Ahora vamos a crear un jpg que contenga una captura de la pantalla.

Hemos creado una función que devuelve una imagen, usamos el SendKeys para capturar la pantalla y la extraemos del portapapeles, luego llamaremos a la funcion y el resultado lo guardaremos en una ruta del disco duro.
Mira que bonito olle!

Public Function TrincarImagen() As Image

' Tamaño de lo que queremos copiar
' En este caso el tamaño de la ventana principal
Dim fSize As Size = Screen.PrimaryScreen.Bounds.Size
' Creamos el bitmap con el área que vamos a capturar
Dim bm As New Bitmap(fSize.Width, fSize.Height)
' Un objeto Graphics a partir del bitmap
Dim gr As Graphics = Graphics.FromImage(bm)
' Copiar todo el área de la pantalla
gr.CopyFromScreen(0, 0, 0, 0, fSize)

Return bm
End Function

Ahora solo queda llamar a la funcion y guardar la imagen. Seria algo asi:


Dim Pantallazo As Image
Pantallazo = TrincarImagen()
Pantallazo.Save("RUTA\pantallazo.jpg")



Listo!

You liked this post? Subscribe via RSS feed and get daily updates.

11 comentarios:

  1. Hola, te felicito por la información, clara y concisa.
    Mi consulta, después de hacer el save a disco manejo la imagen grabada y cuando le hago delete no me deja por estar en uso, Qué debo hacer? Desde ya muchas gracias.
    Saludos. Pablo.

  2. hola es muy didáctico
    si me puedes ayudar con esto me sale un error al crear un directorio
    Public Class Form1
    Public Function TrincarImagen() As Image
    Dim fSize As Size = Screen.PrimaryScreen.Bounds.Size
    Dim bm As New Bitmap(fSize.Width, fSize.Height)
    Dim gr As Graphics = Graphics.FromImage(bm)
    gr.CopyFromScreen(0, 0, 0, 0, fSize)
    Return bm
    End Function
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    Dim Pantallazo As Image
    Dim CARPETA As String
    Pantallazo = TrincarImagen()
    CARPETA = InputBox("CUAL ES EL DANE DE LA SEDE Y EL NOMBRE")
    My.Computer.FileSystem.CreateDirectory("S:\ANTIVIRUZ\INGETTEL\ " & CARPETA & " ")
    Pantallazo.Save("S:\ANTIVIRUZ\INGETTEL\" & CARPETA & "\pantallazo.jpg")
    End Sub
    End Class

  3. metete en el culo esa basura,,

  4. metete en el culo esa basura,,

  5. precisamente lo que necesitaba, gracias

  6. Buenisimo.....!!!!!!!....Lo acondicione a un control especifico (Datagrid)
    Aqui mi codigo para alguien que lo necesite


    Public Function copiargrid() As Image

    Dim gr As Graphics = Me.CreateGraphics
    ' Tamaño de lo que queremos copiar
    Dim fSize As Size = DataGridView1.Size
    ' Creamos el bitmap con el área que vamos a capturar
    ' En este caso, con el tamaño del formulario actual
    Dim bm As New Bitmap(fSize.Width - 10, fSize.Height - 10, gr)
    ' Un objeto Graphics a partir del bitmap
    Dim gr2 As Graphics = Graphics.FromImage(bm)
    ' Copiar el área de la pantalla que ocupa el formulario
    gr2.CopyFromScreen(Me.Location.X + DataGridView1.Location.X + 5, Me.Location.Y + DataGridView1.Location.Y + 30, 0, 0, fSize)

    Return bm
    End Function


    Sub guardargrid()
    Dim Pantallazo As Image
    Pantallazo = copiargrid()
    Pantallazo.Save("C:\Carpeta Exporta Sistema\pantallazo.jpg")
    End Sub

  7. Excelente código desde el orígen, aún más lo del amigo Jose Giron, aunque no entiendo los + 30 en Location por ejemplo. Un abrazo.

  8. Excelente aporte. Creo que los insultos además de no ser merecidos, no aportan nada. Gracias por compartir tu código.

  9. Excelente. Pero al pasar un tiempo se cuelga y muestra error Excepción del tipo 'System.ArgumentException' en System.Drawing.dll

  10. Hola, muchas gracias por el aporte.
    Saludos

  11. hola buen día,
    buen aporte pero se llena la memoria de la app, como se prodría liberar eso?

    saludos y gracias!!

Publicar un comentario