clase ParOrdenado publicos los objetos X, Y son cantidades mensajes ParOrdenado(deme absisa, deme ordenada) { copie absisa en X copie ordenada en Y } clase Trazo derivada_de Form publicos el objeto Grupo es un ArrayList el objeto Boton es un Button el objeto lapiz es un Pen(Color.Black, 2) los objetos i, xant, yant son cantidades mensajes Pintar(deme Control, deme Datos es un PaintEventArgs) { es Grupo.Count > 1 ? si: { el objeto parinicial es un ParOrdenado(0,0) copie Grupo[0] en parinicial copie parinicial.X en xant copie parinicial.Y en yant variando i desde 1 hasta Grupo.Count-1 haga { el objeto par es un ParOrdenado(0,0) copie Grupo[i] en par Datos.Graphics.DrawLine(lapiz, xant, yant, par.X, par.Y) copie par.X en xant copie par.Y en yant } } } RatonPulsado(deme Control, deme Datos es un MouseEventArgs) { el objeto punto es un ParOrdenado(doy Datos.X, doy Datos.Y) Grupo.Add(doy punto) copie Grupo.Count.ToString en Trazo.Text Trazo.Refresh } GatoPulsado(deme Control, deme Datos es un EventArgs) { el objeto Archivo es un System.IO.StreamWriter("PuntosMob299.txt") variando i desde 0 hasta Grupo.Count-1 haga { el objeto par es un ParOrdenado(0,0) copie Grupo[i] en par Archivo.Write(par.X) Archivo.Write(", ") Archivo.WriteLine(par.Y) } Archivo.Close System.Diagnostics.Process.Start("PuntosMob299.txt", "") muestre "Miau...Grupo con ", Grupo.Count, " puntos" } Trazo { Trazo.Manejador(Trazo.Paint, Pintar) Trazo.Manejador(Trazo.MouseDown, RatonPulsado) Trazo.Manejador(Boton.Click, GatoPulsado) Trazo.AgregarControl(Boton) }