1.0.6 • Published 2 years ago

canvas-drawing v1.0.6

Weekly downloads
-
License
MIT
Repository
-
Last release
2 years ago

canvas-drawing

a easy to use drawing board lib 🎨

  • 0 dependencies
  • Modern browser compatibility

Installing

Using npm:

npm install canvas-drawing

Using yarn:

yarn add canvas-drawing

Using script tag

<script src="your_path/dist/canvas-drawing.min.js"></script>

Play

live example

or

git clone this repository then open example/index.html in your browser

example1

example1

Usage

Initialize

<script type="text/javascript" src="//{you path to the dist file}/dist/canvas-drawing.min.js"></script>
<style>.container { width: 500px; height: 500px; }</style>
<div class="container"></div>
// More options are available in the following documents
const options = {
  container: document.getElementsByClassName('container')[0]
}
/*
  A canvas has 2 sizes, the dimension of the pixels in the canvas and the display size. 
  canvas's dimension of the pixels is (devicePixelRatio * canvas's display size) by default.
  canvas's display size equals container's size (width/height)
*/  
const draw = new canvasDrawing(options); 

Options

OptionsTypeDefault valueDescription
containerHtmlDom (required)/Container for canvas
bgImgStringEmpty stringCanvas background Image's url, if you needed.
canvasBgColorString#fffCanvas background Color
lineColorString#f00Color of brush
lineWidthString / Number1Width of brush
arrowSizeString / Number15Size of arrows
eraserSizeString / Number10Size of eraser
textFontSizeString / Number16Font size of the textArea
textLineHeightString / Number20Font lineheight of the textArea
textColorString#f00Font color of the textArea
textareaPlaceholderStringType here...Textarea's placeholder
ratioNubmerwindow.devicePixelRatioAffects the quality of the picture

APIs

MethodArgumentsDescription
config( type,val )tpye's enum(lineColor, lineWidth, arrowSize, eraserSize, canvasBgColor, textFontSize, textLineHeight, textColor, bgImg, textareaPlaceholder, ratio)Modifying the default configuration
setMode( mode )mode's enum(pencil, straightLine, rect, circle, arrow, text, eraser)Set current mode
saveImg( options )default value { tpye: 'png', fileName: 'canvas_imgae' }Save the canvas as an image, and download.
generateBase64(type)default value "png"Generate Base64 data
undo()/Undo operation
redo()/Redo operation
clear()/Clear canvas

Listeners

coords it will return canvas's coords (x, y) and Mouse's coords (clientX, clientY)

drawBegin
  import CanvasDrawing from 'canvas-drawing'
  const draw = new CanvasDrawing({container: Dom})
  draw.evt.on('drawBegin', function(coords) {
    console.log('begin', coords);  
  })
drawing
  draw.evt.on('drawing', function(coords) {
    console.log('drawing', coords);  
  })
drawEnd
  draw.evt.on('drawEnd', function(coords) {
    console.log('end', coords);
  })

removeListeners

  draw.evt.off('drawBegin');
  draw.evt.off('drawing');
  draw.evt.off('drawEnd');
  // or
  draw.evt.removeAllListeners();

Example

  // init
  import CanvasDrawing from 'canvas-drawing'
  const container = document.getElementsByClassName('container')[0]
  const draw = new CanvasDrawing({container: container})

  // methods
  draw.conifg('lineColor', '#FF1493')                         // Change the color of the brush.
  draw.setMode('rect')                                        // Now you can draw the rectangle.

  draw.generateBase64().then(data => console.log(data))       // generateBase64 method default is to export the PNG base64 data.                  
  draw.generateBase64('jpeg').then(data => console.log(data)) // get smaller data.              

  draw.saveImg()                                              // Save the canvas as an PNG images, and the file name is canvas_imgae.png.
  draw.saveImg({fileName: '233.png'})                         // Just Change of file name.
  draw.saveImg({tpye: 'jpeg', fileName: 'small.jpeg'})        // Sometimes we just need smaller pictures.

License

MIT

1.0.6

2 years ago

1.0.5

2 years ago

1.0.4

2 years ago

1.0.3

2 years ago

1.0.2

2 years ago

1.0.1

2 years ago

1.0.0

2 years ago