A graphics port.
A path specification.
A real number.
A real number.
A boolean.
A boolean.
One of the keywords :even-odd
and :winding
.
graphics-state parameters passed as keyword arguments.
The function draw-path
draws the path
path
at (
x
y
) in
port
.
When
closed
is non-nil, a line is drawn from the last point in the path to the start of the last figure in the path. When
filled
is non-nil, the path is filled, otherwise its outline is drawn; the
closed
argument is ignored if
filled
is non-nil.
transform
,
foreground
,
background
,
thickness
,
scale-thickness
,
dashed
,
dash
,
line-end-style
,
line-joint-style
and
mask
from
port
's graphics state (see graphics-state) are all used.
fill-rule
specifies how overlapping regions are filled. Possible values for
fill-rule
are :even-odd
and :winding
.
path is a path specification, which consists of path elements that describe a number of disconnected figures. The origin of the path is ( x y ), so all other coordinates within the path are translated relative to that point.
The following formats of path specification are supported:
The following path elements can be used:
Closes the current figure by adding a straight line from the current point to the start point.
Closes the current figure and starts a new one at ( x y ).
Adds a straight line to the current figure, from the current point to ( x y ) and makes ( x y ) be the current point.
:arc
x
y
width
height
start-angle
sweep
&optional
movep
Adds an elliptical arc to the current figure, contained in the rectangle from (
x
y
) to (
x+width
y+width
) from
start-angle
to
start-angle+sweep-angle
. Both angles are specified in radians and positive values mean anticlockwise. If
movep
is nil
(the default), then a straight line is also added from the current point to the start of the arc, otherwise a new figure is started from the start of the arc. The end of the arc becomes the new current point.
Adds a cubic Bézier curve to the current figure, from the current point to ( x y ) using control points ( cx1 cy1 ) and ( cx2 cy2 ).
Adds a self contained figure, a rectangle from ( x y ) to ( x+width y+width ).
:ellipse
x
y
x-radius
y-radius
Adds a self contained figure, an ellipse of the given radii centered on ( x y ).
Adds the path elements elements , scaling them by sx and sy .
Adds the path elements elements , rotating them theta radians about the origin. If theta is positive, then the rotation is clockwise.
Adds the path elements elements , translating them by dx and dy .
Adds the path elements elements , transformed by transform .
Draws two lines from (40 30) to (140 30) and from (140 30) to (140 130):
(draw-path port '((:line 100 0) (:line 100 100)) 40 30)
Draws an outline triangle with vertices (40 30), (140 30) and (140 130):
(draw-path port '((:line 100 0) (:line 100 100))
40 30 :closed t)
Draws a filled triangle with vertices (40 30), (140 30) and (140 130):
(draw-path port '((:line 100 0) (:line 100 100))
40 30 :filled t)
Draws a filled triangle exactly as in the previous example but using a function to generate the path elements:
(flet ((generate (fn)
(funcall fn :line 100 0)
(funcall fn :line 100 100)))
(draw-path port #'generate 40 30 :filled t))
Draws 6 copies of a shape consisting of two lines and an arc:
(labels ((generate-1 (fn)
(funcall fn :line 50 0)
(funcall fn :line 50 50)
(funcall fn :arc 0 -50 100 100
(/ pi -2) (/ pi -2)))
(generate-6 (fn)
(dotimes (x 6)
(funcall fn :rotate (* 2 pi (/ x 6))
#'generate-1))))
(draw-path port #'generate-6 80 80))
(example-edit-file "capi/graphics/paths")
There are further examples in Self-contained examples.
CAPI User Guide and Reference Manual (Windows version) - 3 Aug 2017