ayuda con programa vb.net

Iniciado por orlando_suarez, 7 Agosto 2019, 04:39 AM

0 Miembros y 1 Visitante están viendo este tema.

orlando_suarez

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.

Eleкtro

#1
Bueno, con el siguiente ejemplo que he desarrollado ya deberías tener por donde continuarlo para satisfacer tus requisitos:



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.