none
Representación gráfica | Rectángulos y Lineas | Windows Forms | Visual Studio 2013. RRS feed

  • Pregunta

  • Estimados.

    Buenas a todos.

    Antes que nada les agradezco leer mi pregunta.

    La consulta que deseo realizar tiene que ver con la creación de rectángulos y lineas. Estoy diseñando dentro de un formulario ingresando datos en dos (2) campos de texto una representación gráfica sencilla de un rectángulo dividió por varias lineas o rectángulos, mediante la siguiente formula.

     Formula: X = Largo / Ancho.

     Donde:

     X - Cantidad de partes a dividir el rectángulo.

     Largo - Longitud.

     Ancho - Longitud.

    Estuve intentando usar para crear la linea y el rectángulo estos códigos.

     ' Dibujar linea.

       PictureBoxDibujo.CreateGraphics.DrawLine(Pens.Red, 10, 10, 20, 20)

     ' Dibujar rectángulo.

      PictureBoxDibujo.CreateGraphics.DrawRectangle(Pens.Red, 10, 10, 20, 20)

     No logro que me funcione como muestro en la imagen que adjunto.

    Si alguno de ustedes me puede orientar como podría hacerlo.

    Sin más en espera de sus comentarios y respuestas.

    Muchas gracias.

    Atte.

    Andry Rodríguez Pérez.

    miércoles, 27 de mayo de 2015 2:15

Todas las respuestas

  • Estimados.

    Por favor, alguno podría ayudarme con esta pregunta que realice.

    Muchas gracias.

    Saludos.

    viernes, 29 de mayo de 2015 23:49
  • Échale un vistazo a este código.

    Toma los valores de ancho y alto de dos TextBox: txtAncho y txtAlto.

        Private Sub Form1_Paint(sender As Object, e As PaintEventArgs) Handles MyBase.Paint
            Dim ancho As Integer, alto As Integer
            ' Posición del rectángulo
            Dim posicion As Point = New Point(100, 100)
    
            ' Toma los valores ancho y alto de los textbox
            If (Integer.TryParse(txtAncho.Text, ancho) AndAlso Integer.TryParse(txtAlto.Text, alto)) Then
                ' Dibuja el rectángulo
                e.Graphics.DrawRectangle(Pens.Black, posicion.X, posicion.Y, ancho, alto)
                If (alto < ancho) Then
                    ' Dibuja las líneas
                    Dim posLinea = alto
                    While posLinea < ancho
                        e.Graphics.DrawLine(Pens.Black, _
                            New Point(posicion.X + posLinea, posicion.Y), New Point(posicion.X + posLinea, posicion.Y + alto))
                        posLinea += alto
                    End While
                End If
            End If
        End Sub
    
        Private Sub txtDim_TextChanged(sender As Object, e As EventArgs) Handles txtAncho.TextChanged, txtAlto.TextChanged
            Me.Invalidate()
        End Sub
    

    sábado, 30 de mayo de 2015 5:15
  • Estimado Asier Villanueva.

    Gracias por la respuesta.

    Estuve mirando el código e intente colocarlo dentro del evento clic de un botón y me funciono, pero necesito que la representación gráfica este contenida dentro de un contenedor, una caja de imagen o Chart.

    Saludos.


    lunes, 1 de junio de 2015 0:16
  • Puedes usarlo también en el evento Paint de un PictureBox:

        Private Sub txtDim_TextChanged(sender As Object, e As EventArgs) Handles txtAncho.TextChanged, txtAlto.TextChanged
            PictureBox1.Invalidate()
        End Sub
    
        Private Sub PictureBox1_Paint(sender As Object, e As PaintEventArgs) Handles PictureBox1.Paint
            Dim ancho As Integer, alto As Integer
            ' Posición del rectángulo
            Dim posicion As Point = New Point(10, 10)
    
            ' Toma los valores ancho y alto de los textbox
            If (Integer.TryParse(txtAncho.Text, ancho) AndAlso Integer.TryParse(txtAlto.Text, alto)) Then
                ' Dibuja el rectángulo
                e.Graphics.DrawRectangle(Pens.Black, posicion.X, posicion.Y, ancho, alto)
                If (alto < ancho) Then
                    ' Dibuja las líneas
                    Dim posLinea = alto
                    While posLinea < ancho
                        e.Graphics.DrawLine(Pens.Black, _
                            New Point(posicion.X + posLinea, posicion.Y), New Point(posicion.X + posLinea, posicion.Y + alto))
                        posLinea += alto
                    End While
                End If
            End If
        End Sub
    

    martes, 2 de junio de 2015 19:31