Documentation
Learn all about jCanvasjCanvas
Canvas
- Clear Canvas
- Rotate Canvas
- Scale Canvas
- Translate Canvas
- Pixel Manipulation
- Get Canvas Image
- Draw Manually
- Detect Pixel Ratio
Drawings
Layers
Events
Styles
Paths
A path in jCanvas consists of one or more connected lines, arcs, curves, or vectors.
Basic usage
You can draw a path using the drawPath()
method. It accepts a variable number of arguments which define the different kinds of subpaths within your path. These arguments are defined using p1
, p2
, p3
, and so on (however many as desired).
Note that for each of these subpath arguments, you must specify the type of the subpath (for instance, type: 'line'
).
// Draw the outline of a cartoon face
$('canvas').drawPath({
strokeStyle: '#000',
strokeWidth: 4,
p1: {
type: 'line',
x1: 200, y1: 50,
x2: 100, y2: 150,
x3: 200, y3: 150,
x4: 120, y4: 200
},
p2: {
type: 'quadratic',
cx1: 175, cy1: 250,
x2: 225, y2: 200
}
});
Now, if you were to draw the quadratic curve in the above example using the drawQuadratic()
method, you must specify the x1
and y1
properties. However, using drawPath()
the curve continues from the last point on the previous subpath (p1
).
If you were to include the x1
and y1
properties, the curve would no longer be connected to the previous subpath. Consider the following example.
// Draw a face with the jaw disconnected
$('canvas').drawPath({
strokeStyle: '#000',
strokeWidth: 4,
p1: {
type: 'line',
x1: 200, y1: 50,
x2: 100, y2: 150,
x3: 200, y3: 150,
x4: 120, y4: 200
},
p2: {
type: 'quadratic',
x1: 130, y1: 210,
cx1: 180, cy1: 250,
x2: 225, y2: 200
}
});
Arcs
You can also use the drawPath()
method to create sequences of interconnected arcs.
The following example will create a flower shape using arcs.
$('canvas')
.drawPath({
strokeStyle: '#000',
strokeWidth: 4,
closed: true,
x: 160, y: 150,
// Top petal
p1: {
type: 'arc',
x: 0, y: -50,
start: -90, end: 90,
radius: 50
},
// Right petal
p2: {
type: 'arc',
x: 50, y: 0,
start: 0, end: 180,
radius: 50
},
// Bottom petal
p3: {
type: 'arc',
x: 0, y: 50,
start: 90, end: 270,
radius: 50
},
// Left petal
p4: {
type: 'arc',
x: -50, y: 0,
start: 180, end: 360,
radius: 50
}
});
Note that the x
and y
coordinates for each subpath are relative to the x and y coordinates of the entire path.
Also note that the subpath objects inherit default property values from the global jCanvas preferences (which is set through the jCanvas()
method.
Arrows
Just like every other path type in jCanvas, generic paths support arrows at either end of the path. See the section on arrows for descriptions of the arrow properties.
For generic paths, arrow properties must be specified in a subpath object, not the entire path object.
// Draw the outline of a cartoon face
$('canvas').drawPath({
strokeStyle: '#000',
strokeWidth: 4,
p1: {
type: 'vector',
startArrow: true,
arrowAngle: 60,
arrowRadius: 30,
x: 200, y: 50,
a1: 225, l1: 200,
},
p2: {
type: 'quadratic',
cx1: 150, cy1: 250,
x2: 225, y2: 200,
endArrow: true,
arrowAngle: 60,
arrowRadius: 30
}
});


