Chapter 4. Working with Shapes and Figures
In this chapter, we develop a program capable of drawing lines, arrows, rectangles, and ellipses. The application can be viewed as a more advanced version of the circle application. Similar to the circle application, we have a list of figures and we catch the user's mouse actions. However, there are four different kinds of figures: lines, arrows, rectangles, and ellipses. They are defined in a class hierarchy that is similar to but more advanced than the hierarchy in the Tetris game. Moreover, we also introduce cut, copy, paste, cursor control, and registry handling:
The user can add new figures, move one or several figures, modify figures by grabbing their endpoints, mark and unmark figures by pressing the mouse button and the Ctrl key, and mark several figures by enclosing them by a rectangle. When a figure is marked, it becomes annotated with small black squares. The user can modify the shape of a figure by grabbing one of the...