User Guide
04.2 · Editing Annotations

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

  1. Select the annotation (Select tool).
  2. Click and hold inside the annotation's body or on the small central blue handle.
  3. Drag to the new position.
  4. Release.

All selected annotations move together.

By Keyboard

ActionShortcut
Move 1 point
Move 10 pointsShift + arrow
Move to exact coordinatesProperties… → 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 Shift while 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.

  1. Select the annotation.
  2. Click the rotation handle.
  3. Drag in a circular motion. The annotation rotates around its centre.
  4. 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 Shift to 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

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.