Paths¶
-
beginpath
(x=None, y=None)¶ Start a new Bézier path. This command is needed before any other path drawing commands such as
moveto()
,lineto()
, orcurveto()
. Finally, theendpath()
command draws the path on the screen.If x and y are not specified, this command should be followed by a
moveto()
call.
-
moveto
(x, y)¶ Move the Bézier “pen” to the specified point without drawing.
Can only be called between
beginpath()
andendpath()
.
-
lineto
(x, y)¶ Draw a line from the pen’s current point to the specified (x,y) coordinates.
Can only be called between
beginpath()
andendpath()
.
-
curveto
(x1, y1, x2, y2, x3, y3)¶ Draws a curve between the current point in the path and a new destination point.
The last two parameters are the coordinates of the destination point. The first 4 parameters are the coordinates of the two control points, which define the edge and slant of the curve.
Can only be called between
beginpath()
andendpath()
.x, y = 10, 62 # Start curve point x1, y1 = 50, 115 # Left control point x2, y2 = 75, 10 # Right control point x3, y3 = 115, 62 # End curve point # Only strokes autoclosepath(False) nofill() strokewidth(12) stroke(0.1) # Draw the curve beginpath() moveto(x, y) curveto(x1, y1, x2, y2, x3, y3) endpath() # To show where the control points are, # we draw helper lines strokewidth(2) stroke(1, 0.2, 0.2, 0.6) # The first control point starts at the # x, y position line(x, y, x1, y1) # And the second control point is the # end curve point line(x2, y2, x3, y3)
-
arcto
(x, y, radius, angle1, angle2)¶ Continues the path with a circular arc in a way identical to
arc()
. A line will be drawn between the current point and the arc’s starting point.
-
closepath
()¶ Close the path; in case the current point is not the path’s starting point, a line will be drawn between them.
-
endpath
(draw=True)¶ The endpath() command is the companion command to beginpath(). When endpath() is called, the path defined between beginpath() and endpath() is drawn. Optionally, when endpath(draw=False) is called, the path is not drawn but can be assigned to a variable and drawn to the screen at a later time with the drawpath() command.
-
drawpath
(path)¶ Draws a path on the screen. A path is a series of lines and curves defined between beginpath() and endpath(). Normally, endpath() draws the path to the screen, unless when calling endpath(draw=False). The path can then be assigned to a variable, and this variable used as a parameter for drawpath().
Note: if you have one path that you want to draw multiple times with drawpath(), for example each with its own rotation and position, you need to supply a copy with
drawpath(path.copy())
.stroke(0.2) beginpath(10, 10) lineto(40, 10) p = endpath(draw=False) drawpath(p)
-
autoclosepath
(close=True)¶ Defines whether paths are automatically closed by connecting the last and first points with a line. It takes a single parameter of True or False. All shapes created with beginpath() following this command will adhere to the setting.
-
findpath
(points, curvature=1.0)¶ Constructs a fluid path from a list of coordinates. Each element in the list is a 2-tuple defining the x-coordinate and the y-coordinate. If the curve has more than three points, the curvature parameter offers some control on how separate segments are stitched together: from straight lines (0.0) to smooth curves (1.0).
points = [(10, 10), (90, 90), (350, 200)] ellipsemode(CENTER) for x, y in points: ellipse(x, y, 6, 6) nofill() stroke(0.2) autoclosepath(False) path = findpath(points) drawpath(path)
-
beginclip
(path)¶
-
endclip
()¶ The beginclip() and endclip() commands define a clipping mask. The supplied parameter defines the path to be used as a clipping mask.
All basic shapes and path commands return paths that can be used with beginclip() - setting the
draw
parameter of a shape command will simply return the path without actually drawing the shape. Any shapes, paths, texts and images between beginclip() and endclip() are clipped: any part that falls outside the clipping mask path is not drawn.p = ellipse(20, 20, 60, 60, draw=False) beginclip(p) stroke(0.5) strokewidth(15) line(20, 20, 80, 80) line(20, 80, 80, 20) line(50, 20, 50, 80) endclip()