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!
11 comentarios:
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.
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
metete en el culo esa basura,,
metete en el culo esa basura,,
precisamente lo que necesitaba, gracias
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
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.
Excelente aporte. Creo que los insultos además de no ser merecidos, no aportan nada. Gracias por compartir tu código.
Excelente. Pero al pasar un tiempo se cuelga y muestra error Excepción del tipo 'System.ArgumentException' en System.Drawing.dll
Hola, muchas gracias por el aporte.
Saludos
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