Η γραμμή Private pLinePoints() as PointF ορίζει μόνο τη μεταβλητή, δεν δημιουργεί και τον πίνακα. Λογικό είναι να πάρεις Null Reference Exception αμέσως μόλις προσπαθήσεις να χρησιμοποιήσεις το pLinePoints. Έτσι κι αλλιώς, η SetValue απλά αλλάζει το περιεχόμενο μίας υπάρχουσας θέσης στον πίνακα, δεν προσθέτει καινούριες εγγραφές. Είναι σαν να έγραψες pLinePoints(i)=GPoints. Για να δημιουργήσεις τον πίνακα θα πρέπει να γράψεις Private pLinePoints(999) as PointF.
Ο κώδικας σου έχει και άλλα προβλήματα. Έτσι όπως έχεις το while θα γράφεις πάντα στη θέση 0 και το πρόγραμμα θα κολλήσει στο loop. Ακόμα και αν χρησιμοποιήσεις for ή αν αυξήσεις το i, θα έχεις πρόβλημα με την SetValue. To PointF είναι structure που σημαίνει ότι όταν ορίζεις τον πίνακα δημιουργούνται αμέσως και τα 1000 σημεία του πίνακα. Το loop σου ουσιαστικά πετάει 1000 PointF για να φτιάξει άλλα 1000. Τέλος, ο ορισμός των μεταβλητών έξω από τη μέθοδο που χρησιμοποιούνται είναι ΠΑΡΑ πολύ κακή τακτική.
Αντί να χρησιμοποιείς ένα πίνακα είναι προτιμότερο να χρησιμοποιήσεις μία λίστα, η οποία παρέχει την Add για να προσθέσεις νέα σημεία.
Παναγιώτης Καναβός, Freelancer
Twitter: http://www.twitter.com/pkanavos