This project involves the development of a sophisticated geometric drawing application that enables users to create and manipulate drawings composed of various geometric shapes. Implemented using the Scrum process, the application is designed to provide an intuitive and feature-rich environment for both casual users and advanced graphic designers.
The primary interface of the application presents an initially empty window where users can create drawings by selecting and placing geometric shapes. The supported shapes include line segments, rectangles, and ellipses. Users have the flexibility to customize the appearance of these shapes by selecting their colors. At least eight different colors must be supported, and for closed shapes such as rectangles, users can also choose the fill color of the interior.
Once shapes are added to the drawing, users can interact with them in various ways. They can select a shape with a mouse operation to perform edits such as deletion
, movement
, color changes
, and resizing
. Additionally, standard operations like Cut
, Copy
, and Paste
are supported for shapes. The application features unlimited undo functionality, allowing users to revert any changes made during their session.
Shapes within the drawing can be reordered with commands to send a shape "to the front"
or "to the back"
, which is particularly useful in scenarios where shapes overlap. The visibility and layering of overlapping shapes can be managed to achieve the desired visual effect.
The application supports zooming capabilities with at least eight different levels, ensuring that users can view their drawings in varying degrees of detail. The drawing surface can extend beyond the visible window, with scrolling functionality to navigate to different parts of the drawing. An optional grid can be displayed to assist in the precise positioning of shapes, with customizable grid size and visibility settings.
Beyond basic geometric shapes, users can create arbitrary polygons and text shapes. For text shapes, users can adjust the character size. The application also allows for advanced transformations including rotation by any angle
, mirroring
(horizontally or vertically), and stretching
(horizontally or vertically).