Test Foro de elhacker.net SMF 2.1

Programación => Programación General => .NET (C#, VB.NET, ASP) => Mensaje iniciado por: orlando_suarez en 7 Agosto 2019, 04:39 AM

Título: ayuda con programa vb.net
Publicado por: orlando_suarez en 7 Agosto 2019, 04:39 AM
Comunidad, necesito ayuda con un programa, tengo una interfaz para tomar una foto y la guarda en un picture box, el detalle es que no encuentro algún código para mover la foto dentro de este pciture box, ya que es para una credencial y la foto original sale mas grande, algo como la función que tiene Facebook al cambiar una imagen y te permite mover la ubicación de la misma en un cierto espacio.
Título: Re: ayuda con programa vb.net
Publicado por: Eleкtro en 8 Agosto 2019, 16:15 PM
Bueno, con el siguiente ejemplo que he desarrollado ya deberías tener por donde continuarlo para satisfacer tus requisitos:

(https://i.imgur.com/ALRDUhP.gif)

Código (vbnet) [Seleccionar]
Public Class PictureBoxEx : Inherits PictureBox

   Protected isMoving As Boolean ' Flag that determine whether the image is moving.
   Protected ptStart As Point    ' Point where image moving starts.
   Protected ptMove As Point     ' Point where image moving is at.
   Protected ptEnd As Point      ' Point where image moving ends.

   Protected Overrides Sub OnMouseDown(e As MouseEventArgs)
       If (e.Button = MouseButtons.Left) Then
           Me.ptStart = New Point(e.X, e.Y)
           Me.isMoving = True
       End If

       MyBase.OnMouseDown(e)
   End Sub

   Protected Overrides Sub OnMouseUp(e As MouseEventArgs)
       Me.Update()
       Me.isMoving = False
       Me.ptEnd = Me.ptMove

       MyBase.OnMouseUp(e)
   End Sub

   Protected Overrides Sub OnMouseMove(e As MouseEventArgs)
       If (Me.isMoving) AndAlso (Me.Image IsNot Nothing) Then
           Me.ptMove = New Point(Me.ptEnd.X + (e.X - Me.ptStart.X), Me.ptEnd.Y + (e.Y - Me.ptStart.Y))
           Me.Invalidate()
       End If

       MyBase.OnMouseMove(e)
   End Sub

   Protected Overrides Sub OnPaint(pe As PaintEventArgs)
       If (Me.isMoving) AndAlso (Me.Image IsNot Nothing) Then
           With pe.Graphics
               .TranslateTransform(Me.ptMove.X, Me.ptMove.Y)
               .DrawImage(Me.Image, Point.Empty)
           End With
       End If

       MyBase.OnPaint(pe)
   End Sub

End Class


PD: nótese que para el ejemplo de arriba utilizo la imagen especificada en la propiedad PictureBox.Image, pero puedes hacer lo mismo con la imagen de la propiedad PictureBox.BackgroundImage.

Saludos.