Simple and straightforward package that allows you to free draw on a canvas html element.
You can try it here!
Complete rewrite in Typescript, even though there are no API changes, I choose to do a major version bump.
- Lightweight (~11KB minified)
- Simplify canvas APIs
- Bucket tool
- Events (draw, fill, etc. )
- Touch support
- Undo and redo
Import as a module
npm install --save canvas-free-drawing
# or
yarn add canvas-free-drawing
or directly in the html:
<script src="canvas-free-drawing.min.js"></script>
Basic usage:
<canvas id="cfd"></canvas>
<script>
// initialize
const cfd = new CanvasFreeDrawing({
elementId: 'cfd',
width: 500,
height: 500,
});
// set properties
cfd.setLineWidth(10); // in px
cfd.setStrokeColor([0, 0, 255]); // in RGB
// listen to events
cfd.on({ event: 'redraw' }, () => {
// code...
});
</script>
Initialize the module.
Parameter | Type | Description |
---|---|---|
width | number | canvas width |
elementId | string | html element id |
height | number | canvas height |
lineWidth | number (default: 5) | canvas line width |
strokeColor | number[3] (default: [0, 0, 0]) | canvas stroke color |
backgroundColor | number[3] (default: [255, 255, 255]) | canvas background color |
disabled | boolean (default: false) | disable the ability to draw |
showWarnings | boolean (default: false) | enable warning in the console |
maxSnapshots | number (default: 10) | max number of "undos" |
Set line width.
Set line color.
Set both bucket tool color and line color.
Set background color, if true then it will be used as background in next clear()
.
Toggle drawing mode, returns its state.
You can also use enableDrawingMode()
and disableDrawingMode()
.
Property to check if drawing mode is enabled
Set bucket tool parameters, tolerance is from 0 to 100.
Toggle bucket tool, returns its state.
Property to check if bucket tool is enabled.
Clear the canvas.
Save the canvas as base64 and returns a string - this method uses the native method toDataURL().
Restore the canvas from the string previously saved.
Undo last action on the canvas.
You can define the maximum undo and redo allowed with maxSnapshots
in the initialization.
Redo last action on the canvas
Colors must be set with an array with RGB values: [0-255, 0-255, 0-255].
Subscribe to an event emitter, the callback will be called when the event gets called.
enum AllowedEvents {
redraw,
fill,
mouseup,
mousedown,
mouseenter,
mouseleave,
}
counter
will debounce the events (only redraw
at the moment), once every n times based on counter
the event will trigger.
// this will be triggered once every 10 times the canvas actually redraw
cfd.on({ event: 'redraw', counter: 10 }, () => {
// code...
});