Paint de código mixto

Escribí este proyecto en 2011, sin lugar a duda ha sido el software mejor planeado que hice en la Universidad. Me tomó al rededor de dos semanas de diseño puro. Los requerimientos del proyecto a continuación:

Cree un “Paint” básico utilizando Assembler para implementar la lógica de bajo nivel (set color y get color), y mezcle sus procedimientos utilizando algún lenguaje de alto nivel para obtener los algoritmos complejos de dibujo (líneas, elipses, polígonos, etcétera).

Decidí tratar al programa como una Máquina de estado Finito, debido a que esta arquitectura haría el manejo de eventos de mouse y teclado muy simple. Además, haría fácil la implementación de animaciones para cada herramienta. Las características principales de este proyecto son:

  1. Mouse / Keyboard Event driven.
  2. MEF GUI.
  3. 17 funciones estándar:
    1. Abrir archivo
    2. Guardar archivo
    3. Copiar
    4. Cortar
    5. Pegar
    6. Undo (1 paso)
    7. Texto
    8. Seleccionar
    9. Color picker
    10. Borrar
    11. Fill
    12. Lápiz
    13. Linea
    14. Rectangulo
    15. Elipse
    16. Spray
    17. Polígono
  4. Todas las opciones tienen parámetros customizables:
    1. Con o sin relleno
    2. Relleno con patrones
    3. Ancho de línea
  5. Implementación de los algoritmos eficientes:
    1. Bresenham’s Algorithm (líneas y elipses)
    2. Non-recursive stacked-segment algorithm para el flood fill.
    3. Scanline algorithm para los polígonos rellenos cóncavos.

paint9 paint8 paint5 paint7 paint6 paint4 paint3 paint2

 

comments powered by Disqus

Categorías

Recientes