none
dibujar control en tiempo de ejecucion RRS feed

  • Pregunta

  • buenas noches, lo que deseo es agregar un picturebox pequeño, dentro de otro picturebox grande en tiempo de ejecución, pues ya lo logré pero tengo un inconveniente: es que cuando dinujo el control y muevo el mouse dentro del picturebox grande todo bien, pero supongamos que retrocedo un poco y el cursor esta dentro del control que estoy dibujando (picturebox pequeño) entonces ya no puedo redimensionarlo hasta que salga el cursor y se ubique dentro del picturebox grande

    mi consulta es, como evito ese inconveniente?, hay forma de mejorar mi código?

    Private activarControl As Boolean = False
    Private idControl As Integer = 0
    Private rectangulo As PictureBox = Nothing
    
    Private Sub PictureBox1_MouseClick(sender As Object, e As MouseEventArgs) Handles PictureBox1.Click
            activarControl = Not activarControl
    
            If activarControl Then
                activarControl = True
                idControl += 1
    
                rectangulo = New PictureBox
                rectangulo.Name = "Area" & idControl
                rectangulo.Size = New Size(5, 5)
                rectangulo.Location = New Point(e.X, e.Y)
                PictureBox1.Controls.Add(rectangulo)
            Else
                    PictureBox1.Controls.Remove(rectangulo)
                    rectangulo = Nothing
                    Exit Sub
            End If
                If e.X <= rectangulo.Location.X Or e.Y <= rectangulo.Location.Y Then
                    PictureBox1.Controls.Remove(rectangulo)
                    rectangulo = Nothing
                End If
            End If
    End Sub
    Private Sub PictureBox1_MouseMove(sender As Object, e As MouseEventArgs) Handles PictureBox1.MouseMove
            If activarControl = True AndAlso rectangulo IsNot Nothing Then
                Dim ancho, alto As Integer
                ancho = e.X - rectangulo.Location.X
                alto = e.Y - rectangulo.Location.Y
                rectangulo.Size = New Size(ancho, alto)
            End If
    End Sub
    

    Giancarlo


    • Editado gian2051 martes, 5 de febrero de 2019 5:34 olvide poner la preguta
    martes, 5 de febrero de 2019 5:33

Todas las respuestas

  • El problema lo tienes en que redimensionas tanto en MouseClick como en MouseMove.
    Tienes la variable activarControl para controlar si estás en MouseClick pero no la estás usando bien. Las líneas

            If activarControl Then
                activarControl = True

                ....
    No tienen sentido porque si entra en el If es porque ya tiene el valor True.

    Si activarControl es True se redimensiona en el MouseClick y también se redimensiona en MouseMove.


    Saludos, Javier J

    martes, 5 de febrero de 2019 8:06
  • Hola, puede ser, per el problema es con cualquier tamaño de lo que dibujo, cuando el cursor toca el área del control nuevo entonces se deiene el mouse_move.

    Por ejemplo si voy agrandando el control nuevo, no hay problema, pero si en algun momebto quiero achicarlo entonces pasa el cursor por el control nuevo y ya no hace nada. 


    Giancarlo

    martes, 5 de febrero de 2019 12:17