Draw colored shapes. Lines, rectangles, ellipses, polygons, freehand strokes, and flood fills — directly onto an image. [more]
Categories: DeepSkyColors, Painting, MaskGeneration
Keywords: drawing, shapes, paint, color, fill, outline, line, rectangle, ellipse, polygon, freehand, magic wand, flood fill, opacity, softness, thickness, eyedropper.
[hide]
[hide]
Welcome to DynamicDraw, a PixInsight process module for drawing colored shapes directly onto an image. We trace shapes by hand — a freehand stroke, a straight line, a rectangle, an ellipse, a polygon, or a magic-wand flood fill — and DynamicDraw composites our chosen color onto the target view at the position and shape we drew. It is a painting tool, not a mask generator: the pixels we draw land on the image itself. Of course, we can paint on an image that will be used as a mask.
Every shape carries its own properties: color, opacity, a fill, an outline, or both (with adjustable thickness), and an optional softness that adds a soft edge without shrinking the shape. We pick colors with a full RGB color picker, or sample them straight from the image with the eyedropper. What we draw is rendered live on the image, exactly as it will be applied. There is no separate preview window.
Each shape is a discrete, undoable step. DynamicDraw keeps its own undo/redo history while we compose, and when we Execute the process, the result is painted onto the view as a single, standard PixInsight history step (so it can also be undone the usual way). The complete set of shapes is serialized into the process instance, so a composition can be saved to a process icon and re-applied later.
DynamicDraw is useful whenever we want to add graphical elements to an image: annotating or marking a region, blocking out an area with a flat color, sketching frames and guides, drawing arrows or callouts as line/shape combinations, or recoloring a region selected by tone with the magic-wand fill.
[hide]
The only official distribution of DynamicDraw is via a PixInsight repository. This is the safest way to install a module or script, as the installation is handled by PixInsight itself, which will fetch the module directly and safely from our PixInsight repository at:
https://repo.deepskycolors.com/DynamicDraw/
Make sure the trailing / is part of the URL. Also, be sure to keep our repository URL in your list of PixInsight repositories to receive timely updates.
By distributing DynamicDraw only via our PixInsight repository, installation comes with the guarantee of our Developer and Repository certificates, verified by PixInsight itself from the moment it connects to our repository, until it validates and completes installation of the DynamicDraw module.
If we ever want to be sure that we have the latest version available to us, we go to PixInsight’s RESOURCES menu, select Updates,
then Manage Repositories to make sure our repository is still there, then RESOURCES > Updates > Check for Updates.
DynamicDraw is a dynamic process, so it operates on whichever view we point it at first, and then we work with DynamicDraw to compose our drawing, rather than adjusting parameters on the process dialog first and then selecting a target when we are ready to apply.
To launch it:
While in dynamic mode the cursor changes over a valid target view, and everything we draw is rendered live on top of the image. Nothing is permanently written to the image until we Execute the process.
DynamicDraw runs on a trial-then-registered licensing model. During the trial period, the tool is fully functional with no feature restrictions. When the trial expires, DynamicDraw will display a notice at startup and will not open until a valid registration key is entered (see 3.9 Registration and licensing). No internet connection is needed: keys are validated offline.
[hide]
The DynamicDraw panel is organized top to bottom into: a tool toolbar (which also holds the history controls and a shape counter at its right end), a Shape style group containing the appearance controls (Style, Color, Opacity, Thickness, Softness) together with the Contract/Expand and Magic Wand (Tolerance) controls, and the classic PixInsight interface bar at the very bottom. The rest of the interaction happens directly on the image, where we draw and see the live result.
The toolbar at the top of the panel holds the drawing-mode tools, plus the history controls at its right end. The drawing-mode buttons are mutually exclusive. We pick one.
One more button sits to the right of the drawing tools, set slightly apart. It is a toggle, not one of the mutually-exclusive drawing modes above:
Every shape we draw inherits the current Shape style — color, opacity, fill or outline, thickness and softness — captured at the moment we commit the shape. There is no add/subtract or invert: each action simply paints onto the image, in the order drawn, and later shapes composite over earlier ones according to their opacity.
The Shape style group defines how the next shape will look. These attributes are captured per shape at the moment it is committed, so shapes with different colors, opacities and styles can coexist in the same drawing.
Clicking either color swatch opens the DynamicDraw color picker: a saturation/value square with a hue strip, a hexadecimal color field, and a Pick from image button. The dialog title tells us which color we are editing — Select fill color or Select outline color — depending on the swatch and the current Style.
The eyedropper button (in the Color row, labeled Pick color from image) lets us sample a color straight from the target view. We click the eyedropper to arm it — the cursor changes to a pipette — and then click anywhere on the image to set the current color from the pixel we clicked (a small average around the click point). The eyedropper fills whichever color is active: the fill color, or the outline color when we armed it from the outline swatch's Pick from image. Clicking the eyedropper again, or sampling once, disarms it.
The Softness control sets a soft-edge radius (a Gaussian sigma, in pixels, up to 50) applied to new shapes as we create them. A softness of 0 produces a crisp, hard edge; larger values fade the shape's border into the image.
Softness adds the soft transition outward, beyond the shape's edge — it never shrinks or moves the geometry. A shape drawn at softness 8 covers exactly the same area as the same shape at softness 0, plus a feathered halo around it. This makes it safe to soften a shape without it creeping inward from where we drew it.
Softness is stored per shape: each shape remembers the value it was drawn with. As we move through the history (see History bar), the slider updates to show the softness of the current shape. To change the softness of a shape we have already drawn, we navigate the history to that shape, set the slider to the new value, and click the small Apply (checkmark) button at the end of the Softness row. The button lights up whenever the slider differs from the current shape's stored value, signalling a pending change; clicking it re-softens that shape in place. This is not a separate history step — undoing the shape removes the softness change along with it.
The Contract/Expand control resizes a region by a number of pixels. It applies to the Magic Wand fill only — for the drawn shapes (freehand, line, rectangle, ellipse, polygon) we simply draw them at the size we want, so the control is disabled in those modes.
Like Softness, Contract/Expand is stored per wand fill: the value applies to new wand fills as we make them, the slider tracks the current wand node as we travel the history, and an Apply (checkmark) button at the end of the row commits a new value to a wand fill we have already made (it lights up while a change is pending). The reset button next to it returns the displayed amount to 0. This is handy for tightening a wand fill just inside a tonal boundary, or growing it to safely cover a structure plus a margin.
These two controls govern the Magic Wand fill tool and are active only while the wand is the selected drawing mode:
The wand grows a contiguous area. It spreads outward from the click point through connected matching pixels and stops at borders that exceed the tolerance, so it does not paint matching pixels elsewhere in the image. The detected region is then filled with the current color, honoring the current Style, opacity, softness and Contract/Expand, and is recorded as an ordinary shape in the history.
The History buttons —
We can jump to any state in our history, then edit that shape's softness (or a wand fill's contract/expand), or delete the shape from the sequence, leaving all other shapes untouched.
The right end of the toolbar holds a set of history controls with a shape counter beneath them. Every shape we draw is one step we can move through:
The information label reports the current state (the number of shapes drawn versus the total in the history). Keyboard shortcuts work while the cursor is over the image (dynamic mode):
| Ctrl+Z | Undo |
| Ctrl+Shift+Z | Undo All |
| Ctrl+Y | Redo |
| Ctrl+Shift+Y | Redo All |
| Delete | Delete |
This in-interface history lets us compose freely before committing anything. Once we Execute, the whole composition is painted onto the image as a single PixInsight process-history step, which we can also undo the normal way.
The Move / Rotate button on the toolbar (to the right of the Magic Wand) is an edit toggle rather than a drawing tool. While it is active, drawing is suspended and an oriented bounding box is shown around the current shape (the most recent one in the history).
The cursor shows what a drag will do: a four-way arrow over the body (move) and a rotate cursor over a corner. To transform an earlier shape, step back through the history until it becomes the current shape, then grab its box. Magic-Wand fills cannot be moved or rotated. Their geometry is tied to the image pixels they were grown from — so moving or rotating a magic wand fill is not possible.
A move or rotation is applied to the current shape in place: it is part of that shape rather than a separate history step, and it is saved with the instance, so a repositioned or rotated shape survives Execute, save-to-icon and reload. Navigating the history (undo / redo / delete, by button or keyboard) automatically leaves Move/Rotate mode.
The Preferences button (the wrench icon on the process interface bar) opens the DynamicDraw license information dialog. This dialog reports the current license state:
When the module is not yet licensed, the dialog shows a “Click here to register” link. Clicking it opens the registration dialog, where we enter our email and license key. The fields are validated as we type, and the Register button enables only once a valid email/key pair is entered. After a successful registration the info dialog refreshes in place to the “licensed to” state — no need to reopen it.
[hide]
A typical drawing workflow:
Launch DynamicDraw and move the cursor over the target image. The first stroke locks that view as the target.
Choose a drawing mode (Freehand, Line, Rectangle, Ellipse, Polygon, or Magic Wand) from the toolbar. For the Magic Wand, set the Tolerance and metric first (see Magic Wand options).
Set the Shape style: pick a color (or sample one with the eyedropper), choose Fill / Outline / Fill and outline, and set Opacity, Thickness and Softness. Each shape keeps the style it was drawn with, so we can change these between shapes.
Draw the shape. It is composited onto the image immediately and appears live, exactly as it will be applied.
Add more shapes as needed. Later shapes draw over earlier ones according to their opacity.
Reposition or rotate any shape with the Move / Rotate toggle (see Moving and rotating shapes): drag the box to move it, drag a corner to rotate it.
Use the history controls (or Ctrl+Z / Ctrl+Y) to step back and forth as we refine the composition, and the per-shape Softness (or per-wand Contract/Expand) Apply buttons to tweak a shape after the fact.
When satisfied, Execute the process (apply it to the view). DynamicDraw paints the whole composition onto the active image as one undoable history step.
How the drawing is composited (overview). Shapes are processed in the order they were drawn. For each shape, DynamicDraw builds its coverage (the filled interior, or a centered outline band of the chosen thickness, or both), applies any outward softness, and blends the shape's color into the image using out = src·(1−a) + color·a, where a is the shape's coverage scaled by its opacity. On monochrome targets the color is reduced to its luminance. The result is written directly to the target view's pixels.
[hide]
Build complex graphics incrementally. Many small shapes, each with its own color and style, are often easier to control than one elaborate freehand trace.
Use Rectangle/Ellipse with Shift for clean squares and circles, and Line with Shift for perfectly horizontal, vertical or 45° strokes.
Reach for the Polygon tool for straight edges. When a boundary is better described by a few straight segments than by a shaky freehand trace, click the corners. And remember, Backspace can undo the last vertex before closing.
Let the Magic Wand do the tracing when a region is defined by tone or color. Start with a low Tolerance and raise it until the fill just covers what we want; switch the metric to RGB when color, not brightness, separates the area from its surroundings.
Set the style before drawing each shape. Because color, opacity, style, thickness and softness are stored per shape, we can freely mix, say, a soft translucent fill behind a crisp opaque outline.
Soften without shrinking. Softness adds its falloff outward, so raising it never pulls the shape in from where we drew it — draw at the size we want, then soften as much as we like.
Combine Fill and outline for callouts and frames: a translucent fill plus a contrasting outline color reads clearly over a busy image.
Sample colors from the image with the eyedropper to match an existing tone exactly — useful for blending a fill into the background or picking a star/nebula color.
Reposition instead of redrawing. Placed a shape slightly off, or want it at an angle? Turn on Move / Rotate and drag the box to move it or a corner to rotate it — no need to draw it again. Step back in the history first to grab an earlier shape.
Use the keyboard while drawing: Ctrl+Z / Ctrl+Y (and the Shift variants for all-the-way) let us experiment without leaving the image.
Save our work as a process icon. Because the full set of shapes is serialized into the instance, we can drag the instance to a process icon and re-apply or tweak the exact same composition later.
Copyright © 2026 Deep Sky Colors. All Rights Reserved.