none
PixtureBox mover imagen con el mouse RRS feed

  • Pregunta

  • Tengo un form donde he colocado un panel y le he habilitado el autoscroll al panel

    luego al panel le agrego un picturebox con propiedad sizemode = AutoSize

    Cuando inicio el form me inica el picturebox con scroll y funciona bien

    lo que necesito es poder el curso sobre la imagen hacer click y mover la imagen

    he utilizado varios códigos pero la imagen se me va hacia abajos adjunto el código para surevisión y mejora.

    Gracias.

    Public Partial Class Form1
    Inherits Form
    Private x As Integer = 0
    Private y As Integer = 0
    Public Sub New()
    InitializeComponent
    ()
    End Sub

    Private Sub button1_MouseDown(sender As Object, e As MouseEventArgs)
    x
    = e.X
    y
    = e.Y
    End Sub

    Private Sub button1_MouseMove(sender As Object, e As MouseEventArgs)
    If e.Button = MouseButtons.Left Then
    button1
    .Left = (button1.Left + e.X) - x
    button1
    .Top = (button1.Top + e.Y) - y
    End If
    End Sub
    End Class


    Conocuica

    miércoles, 24 de abril de 2013 20:53

Respuestas

  • hola conocuica

    veo que utilizas los eventos mousemove y mouseDown de un boton??? no deberia ser del pictureBox?

    creo que el codigo seria mas bien asi:

       public partial class Form1 : Form
        {
            private bool btnDown;
            private int offsetX;
            private int offsetY;
    
            public Form1()
            {
                InitializeComponent();
            }
    
            private void pictureBox1_MouseDown(object sender, MouseEventArgs e)
            {
                // el boton izquierdo esta pulsado
                if (e.Button == MouseButtons.Left)
                {
                    btnDown = true;
                    offsetX = e.X;
                    offsetY = e.Y;
                }
            }
    
            private void pictureBox1_MouseMove(object sender, MouseEventArgs e)
            {
                if (btnDown)
                {
                    // mover el pictureBox con el raton               
                    pictureBox1.Left += e.X - offsetX;
                    pictureBox1.Top += e.Y - offsetY;
                }
            }
    
            private void pictureBox1_MouseUp(object sender, MouseEventArgs e)
            {
                // el boton izquierdo se libera
                if (e.Button == MouseButtons.Left)
                {
                    btnDown = false;
                }
            }
        }

    si te funciona marca como respuesta, y que tengas suerte!

    oops sorry !! creo que usas Visual Basic.. usa http://converter.telerik.com/ o http://www.developerfusion.com/tools/convert/csharp-to-vb/ para convertir codigo de c# a VB.
    • Editado santival miércoles, 24 de abril de 2013 22:54
    • Marcado como respuesta conocuica sábado, 4 de mayo de 2013 13:15
    miércoles, 24 de abril de 2013 22:47

Todas las respuestas

  • hola conocuica

    veo que utilizas los eventos mousemove y mouseDown de un boton??? no deberia ser del pictureBox?

    creo que el codigo seria mas bien asi:

       public partial class Form1 : Form
        {
            private bool btnDown;
            private int offsetX;
            private int offsetY;
    
            public Form1()
            {
                InitializeComponent();
            }
    
            private void pictureBox1_MouseDown(object sender, MouseEventArgs e)
            {
                // el boton izquierdo esta pulsado
                if (e.Button == MouseButtons.Left)
                {
                    btnDown = true;
                    offsetX = e.X;
                    offsetY = e.Y;
                }
            }
    
            private void pictureBox1_MouseMove(object sender, MouseEventArgs e)
            {
                if (btnDown)
                {
                    // mover el pictureBox con el raton               
                    pictureBox1.Left += e.X - offsetX;
                    pictureBox1.Top += e.Y - offsetY;
                }
            }
    
            private void pictureBox1_MouseUp(object sender, MouseEventArgs e)
            {
                // el boton izquierdo se libera
                if (e.Button == MouseButtons.Left)
                {
                    btnDown = false;
                }
            }
        }

    si te funciona marca como respuesta, y que tengas suerte!

    oops sorry !! creo que usas Visual Basic.. usa http://converter.telerik.com/ o http://www.developerfusion.com/tools/convert/csharp-to-vb/ para convertir codigo de c# a VB.
    • Editado santival miércoles, 24 de abril de 2013 22:54
    • Marcado como respuesta conocuica sábado, 4 de mayo de 2013 13:15
    miércoles, 24 de abril de 2013 22:47
  • Tu código es perfecto muchas gracias.

    Conocuica

    sábado, 4 de mayo de 2013 13:16