Dynamic Shapes
PaintCode has a great feature called dynamic shapes. With dynamic shapes, you can define how shapes should behave when they are resized. This dynamic behavior is then baked in the generated code.

Frames and constraints have much wider range of uses than just a resizing. You can use them to change the shapes in many interesting and useful ways:

To make a shape dynamic:
- draw a frame around the shape
- define how the shape should behave when the enclosing frame is resized
Of course, a single frame may contain many shapes.
Frames

To create a Frame, simply select the “Frame” tool from the toolbar, then click and drag in the canvas.
Frames are not shapes. By themselves, they do not draw anything. However, they affect the generated code. Frames also affect the dynamic behavior of shapes inside them.
In the generated code, a frame corresponds to a method parameter:

Dynamic shapes derive their sizes and coordinates from their enclosing frames.
When you resize a frame in the canvas, all derived shapes are resized/moved around, too. To suppress this behavior, hold down the COMMAND key while resizing the frame.