none
Me recorta mas por la parte superior y izquierda RRS feed

  • Pregunta

  • Buenas estoy intentando capturar parte del escritorio y ersulta que me recorta mas por la parte superio y izquierda que por la parte derecha y inferior 

    vamos que no es correcto a lo que yo marco con el rectangulo y no se donde tocar

    Gracias

    en el Form1 

    Public Class Form1
    
        Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
            'Hide()
    
            Dim captura As New Form2
            If captura.ShowDialog() = Windows.Forms.DialogResult.OK Then
                Dim bitmap As Bitmap = CapturaPantalla(captura.xyPos, captura.tam)
    
                If Not bitmap Is Nothing Then
                    bitmap.Save("c:\walter\captura" & DateTime.Now.ToString("yyyyMMddHHmmss") & ".png", System.Drawing.Imaging.ImageFormat.Png)
                End If
            End If
    
            'Show()
        End Sub
    
        Function CapturaPantalla(pos As Point, tam As Size) As Bitmap
            Dim bounds As Rectangle
            Dim screenshot As System.Drawing.Bitmap
            Dim graph As Graphics
            bounds = Screen.PrimaryScreen.Bounds
            If tam.Width < 1 Or tam.Height < 1 Then Return Nothing
    
            screenshot = New System.Drawing.Bitmap(tam.Width, tam.Height)
            graph = Graphics.FromImage(screenshot)
            graph.CopyFromScreen(pos, New Point(0, 0), tam)
            Clipboard.SetDataObject(screenshot)
            Return screenshot
            ' '' ''ORIGINAL
            '' ''If tam.Width < 1 Or tam.Height < 1 Then Return Nothing
    
            '' ''Dim bmp As New Bitmap(tam.Width, tam.Height)
            '' ''Dim g As Graphics = Graphics.FromImage(bmp)
            '' ''g.CopyFromScreen(pos, New Point(0, 0), tam, CopyPixelOperation.Blackness)
            '' ''g.Dispose()
            '' ''Return bmp
            ' '' ''ORIGINAL
    
        End Function
    
        
    End Class

    en el form 2

    Public Class Form2
    
        Dim pos As Point
        Dim rect As Rectangle
    
        Public xyPos As Point
        Public tam As Size
        
    
        Private Sub Form2_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
            Opacity = 0.1
            WindowState = FormWindowState.Maximized
            FormBorderStyle = Windows.Forms.FormBorderStyle.None
            Cursor = Cursors.Cross
        End Sub
    
        Private Sub Form2_MouseDown(sender As System.Object, e As System.Windows.Forms.MouseEventArgs) Handles MyBase.MouseDown
            If e.Button = Windows.Forms.MouseButtons.Left Then
                pos = e.Location
            End If
        End Sub
    
        Private Sub Form2_MouseUp(sender As System.Object, e As System.Windows.Forms.MouseEventArgs) Handles MyBase.MouseUp
            If e.Button = Windows.Forms.MouseButtons.Left Then
                tam = New Size(Math.Abs(pos.X - e.Location.X), Math.Abs(pos.Y - e.Location.Y))
    
                If pos.X > e.Location.X Then pos.X = e.Location.X
                If pos.Y > e.Location.Y Then pos.Y = e.Location.Y
    
                xyPos = pos
                DialogResult = Windows.Forms.DialogResult.OK
                Close()
            End If
        End Sub
    
        Private Sub Form2_MouseMove(sender As System.Object, e As System.Windows.Forms.MouseEventArgs) Handles MyBase.MouseMove
            If e.Button = Windows.Forms.MouseButtons.Left Then
    
                rect.Width = e.X - pos.X
                rect.Height = e.Y - pos.Y
    
                If (rect.Width < 0) Then
                    rect.Width *= -1
                    rect.X = pos.X - rect.Width
                Else
                    rect.X = pos.X
                End If
    
                If (rect.Height < 0) Then
                    rect.Height *= -1
                    rect.Y = pos.Y - rect.Height
                Else
                    rect.Y = pos.Y
                End If
    
                Invalidate()
            End If
        End Sub
    
        Private Sub Form2_Paint(sender As System.Object, e As System.Windows.Forms.PaintEventArgs) Handles MyBase.Paint
            'e.Graphics.DrawRectangle(Pens.Black, rect)
            Dim myLapicero1 As New Pen(Color.Blue, 1)
            e.Graphics.FillRectangle(Brushes.Blue, rect)
    
        End Sub
    
        Private Sub Form2_KeyDown(sender As System.Object, e As System.Windows.Forms.KeyEventArgs) Handles MyBase.KeyDown
            tam.Width = 0
            tam.Height = 0
            DialogResult = Windows.Forms.DialogResult.Cancel
            Close()
        End Sub
    
        Private Sub Form2_MouseClick(sender As Object, e As MouseEventArgs) Handles Me.MouseClick
            If e.Button = Windows.Forms.MouseButtons.Right Then
                Close()
            End If
        End Sub
    End Class

    Y lo que busco es que me salga unas lineas como estas 



    • Editado JETET lunes, 16 de octubre de 2017 12:09
    lunes, 16 de octubre de 2017 11:56

Respuestas

Todas las respuestas

  • Tomas como referencia solo el area de trabajo o toda la pantalla?

    Si necesitas ayuda sube tu avance de otro modo no puedo ayudarte , Suerte!

    lunes, 16 de octubre de 2017 14:01
  • toda la pantalla
    martes, 17 de octubre de 2017 8:54
  • No lo creo cuando mas no puedes tomar captura de solo la barra de tareas , lo intente e intente modificar el codigo y no he tenido un resultado. Seria cuestion de verlo al detalle ,estare a la espera de alguna modificacion . Pero yo creo que el error va por que solo toma solo el area de trabajo y al cojer el point , si te das cuenta mis dimensiones son 1600*900 y el aumentaba a ese area 1607 y 907 intente restandole 7  pero no funciono .


    Si necesitas ayuda sube tu avance de otro modo no puedo ayudarte , Suerte!

    martes, 17 de octubre de 2017 13:57
  • Deleted
    • Marcado como respuesta JETET miércoles, 18 de octubre de 2017 19:43
    miércoles, 18 de octubre de 2017 2:37
  • 1000 Gracias miqui 

    todo perfecto

    miércoles, 18 de octubre de 2017 19:43