locked
Matriz dinámica de Pointf RRS feed

  • Pregunta

  • Hola a todos.
    Tengo que pintar una gráfica a base de una serie de puntos que voy leyendo de un fichero. El problema es que a priori no sé cuantos puntos voy a tener, y ahí empiezan mis quebraderos de cabeza con las matrices.

    Si yo hiciera algo como:

         
            Dim puntos (100)  As PointF

    Mas adelante, a medida que voy leyendo valores del fichero, puedo en un bucle añadir los puntos correspondientes a la matriz:
           
                    puntos.SetValue(New PointF(valorX,valorY), i)
                  
    y así poder dibujar la curva correspondiente (se supone que pb es del tipo PictureBox):

            pb.CreateGraphics.DrawCurve(Pens.Blue, puntos)


    Pero claro, yo no sé si puedo tener en un principio 100, 200, 124.... puntos. Y si hago:

    Dim puntos1 As PointF() = New PointF() {}

    Luego no sé como añadir los valores que voy leyendo del fichero.

    Os agradezco de antemano la ayuda.
           
    miércoles, 26 de septiembre de 2007 11:37

Respuestas

  • "Baguel" escribió:

    > Pero claro, yo no sé si puedo tener en un principio 100, 200, 124.... puntos.

    Hola:

    Entiendo que lo que únicamente tienes que hacer es redimensionar la matriz cuando desees añadir un nuevo valor PointF.

    A nivel del formulario declararías la matriz con un único elemento:

        ' Punto inicial
        Private puntos() As PointF = {New PointF(10, 10)}

    Posteriormente, conforme leas del fichero los valores que tienes que añadir, irías redimensionando la matriz dinámicamente:

            ' Redimensionamos la matriz para que acepte
            ' un nuevo punto.
            '
            ReDim Preserve puntos(puntos.Length)

            ' Nº total de elementos existentes actualmente
            ' en el array menos 1.
            '
            Dim index As Integer = puntos.Length - 1

            Dim valorX As Single = 200
            Dim valorY As Single = 200

            ' Añadimos un nuevo valor PointF al final del array
            '
            puntos.SetValue(New PointF(valorX, valorY), index)

            pb.CreateGraphics.DrawCurve(Pens.Blue, puntos)

    Un saludo

     


    Enrique Martínez
      [MS MVP - VB]


    domingo, 1 de mayo de 2011 17:14
    Moderador