Move, Resize and Rotate
All three operations work on any annotation (or group of annotations) and can be undone with Ctrl+Z.
Move
By Dragging
- Select the annotation (Select tool).
- Click and hold inside the annotation's body or on the small central blue handle.
- Drag to the new position.
- Release.
All selected annotations move together.
By Keyboard
| Action | Shortcut |
|---|---|
| Move 1 point | ↑ ↓ ← → |
| Move 10 points | Shift + arrow |
| Move to exact coordinates | Properties… → edit X / Y |
Resize
Eight square handles on the bounding box:
TL --- T --- TR
| |
L R
| |
BL --- B --- BR
- Corner handles (TL / TR / BL / BR) resize both axes.
- Edge handles (T / B / L / R) resize one axis.
- Hold
Shiftwhile dragging a corner to preserve aspect ratio. - Minimum size is enforced (shapes can't shrink below ~8 pt; text boxes below 50×30 pt).
For polygons and freehand, resizing scales all vertices proportionally within the new bounding box. For lines and arrows, dragging a corner moves the nearest endpoint.
Multi-Select Resize
When multiple annotations are selected, resize scales them all relative to the group bounding box — each annotation scales with a common factor from the anchor (opposite corner of the handle you're dragging).
Rotate
Every selected annotation has a rotation handle — a blue ellipse above the top-centre of the bounding box, connected by a dashed line.
- Select the annotation.
- Click the rotation handle.
- Drag in a circular motion. The annotation rotates around its centre.
- Release.
Angle Snapping
- By default, rotation snaps to 0°, 30°, 45°, 60°, 90°, 120°, 135°, 150°, 180°, 210°, 225°, 240°, 270°, 300°, 315°, 330°, with a 5° snap threshold.
- Hold
Shiftto disable snapping and rotate freely to any angle.
Multi-Select Rotation
Rotating a group rotates each annotation around the group centre, preserving their relative positions. This matches the behaviour of most design tools.
Combining Transforms
- Move + Resize + Rotate can be applied in any order. Spark tracks rotation separately from geometry, so rotating a rectangle doesn't distort its bounding box — it keeps a clean rectangular geometry with a rotation angle applied.
- Resizing a rotated shape scales the geometry along its rotated axes, not the screen axes.
Performance
Transform handles render at a fixed on-screen size regardless of zoom. Resize and rotate work smoothly on shapes with hundreds of vertices because Spark caches per-drag state and updates geometry in place rather than re-allocating.
Undo
Every transform (single move, single resize, single rotate) is one undo entry. Ctrl+Z reverts the whole transform to its starting state.
Tip — Holding a drag paused for several seconds does NOT create multiple undo entries; the single mouse-down-to-mouse-up operation is one atomic undo.