clase A derivada_de Form publicos los objetos figura son Bitmap(100,100) los objetos x, y son cantidades el objeto estáBotónPresionado es un caracter("no") el objeto bSelección es un Button el objeto Listado es un System.Collections.ArrayList mensajes A{ A.Manejador(A.Paint , Pinte) A.Manejador(A.MouseDown , Presionado) A.Manejador(A.MouseMove , Movido) A.Manejador(A.MouseUp , Soltado) A.Manejador(bSelección.Click , Selección) A.AgregarControl(bSelección) copie 50 en x, y copie "Imagen" en bSelección.Text } Pinte(deme C, deme P es un PaintEventArgs) { P.Graphics.DrawImage(figura, x, y) } Presionado(deme C, deme P es un MouseEventArgs) { /*Observe que no se controla sobre ubicación y tamaño*/ copie "si" en estáBotónPresionado } Movido(deme C, deme P es un MouseEventArgs) { es estáBotónPresionado = "si" ? si: { copie P.X en x /* realmente debe conservarse la posición */ copie P.Y en y /* relativa a la esquina superior derecha */ } A.Refresh } Soltado(deme C, deme P es un MouseEventArgs) { copie "no" en estáBotónPresionado } Selección(deme C, deme P es un EventArgs) { el objeto diálogo es un OpenFileDialog diálogo.ShowDialog el objeto nuevaImagen es un Bitmap(diálogo.FileName) copie nuevaImagen en figura, bSelección.BackgroundImage Listado.Add(diálogo.FileName) copie diálogo.FileName en A.Text el objeto archivo es un StreamWriter("ListadoImágenesUtilizadas.txt") el objeto i es una cantidad variando i desde 0 hasta Listado.Count-1 haga archivo.WriteLine(Listado[i]) archivo.Close A.Refresh }