VueJS Component - drawable 'object-based' canvas
Vue3.
yarn add vue-drawable-canvas
To test - clone repo and run:
yarn serve
To use (See the playground folder for a working demo):
<!-- MyComponent.vue -->
<template>
<VueDrawableCanvas
ref="canvas"
/>
</template>
<script>
import VueDrawableCanvas from 'vue-drawable-canvas';
export default {
name: 'MyComponent',
components: {
VueDrawableCanvas,
},
};
</script>
The component have these modes of usage:
String |
---|
draw |
erase |
move |
The component can draw these shapes:
String |
---|
pencil |
circle |
rectangle |
triangle |
text |
background |
The given mode and shape are set by props.
Canvas shapes are erased or moved by selecting the appropriate mode then clicking and/or dragging the shape.
Name | Type | Default value | Description |
---|---|---|---|
width | Number | 800 | The canvas width |
height | Number | 600 | The canvas height |
font | String | 3rem Arial | The font size and type |
lineWidth | Number | 5 | The width of the stroke |
strokeStyle | String | #000000 | The color of the stroke |
fillStyle | String | transparent | The color of the fill. Note: also sets the text color |
backgroundColor | String | transparent | The background color |
backgroundImage | String | '' | The background image |
stretchBackgroundImage | Boolean | false | Stretces the background image to fit the canvas |
shape | string | string | The shape to be drawn |
mode | string | string | The canvas mode |
devicePixelRatio | Boolean | true | Adjust the canavs resolution based on the devicePixelRatio |
Event | Data | Description |
---|---|---|
mousedown | MouseEvent, Coordinate | Emits the mouse event and the coordinate relative to the canvas where the mouse was clicked |
target | Coordinate | If mouse click or drag is above an object on the canvas the coordinates relative to the canvas is emitted |
Method name | Parameters | Return value | Description |
---|---|---|---|
clear | - | void | Clear the canvas and the undo/redo history |
undo | - | void | - |
redo | - | void | - |
save | scale | Number | returns blob |
drawText | (coordinate, text) | void | Adds text to the canvas. The coordinate is the top left coordinate where the text will be placed. (Text is rendered with textBaseline 'top') |