Path Creation

There are two ways to create a path in valora.


You could use draw commands on the canvas which immediately result in the path, but the path can only be drawn and not held for mutation or other work.

canvas.move_to(P2::new(430., 225.));
canvas.line_to(P2::new(83., 225.));
canvas.line_to(P2::new(256., 525.));


Alternatively, you could use some types provided by valora to define the path in a way you can hold, mutate, and otherwise do work with. For example, this code which repeats the triangle scaling down each time:

let triangle = Ngon::triangle(, 200.);
let repeated = std::iter::successors(Some(triangle), |t| {

for triangle in repeated.take(15) {
    canvas.paint(Stroked {
        width: 2.,
        element: triangle,

Valora provides Ngon for equilateral shapes, Ellipse for ellipses, and Polygon for all other shapes.

Last updated