如何使用按钮从Fabric.js画布中删除图像

时间:2014-11-08 09:32:24

标签: javascript html5 canvas fabricjs

我是canvas和Fabric.js的新手。我按照一些教程,现在可以添加图像到画布。但不知道如何删除它。点击按钮

HTML

<div id="container">
   <input type="file" id="imageLoader" name="imageLoader" />
   <input type="button" id="imageRemove" name="imageRemove" />
   <canvas id="canvas" width="400" height="400" style="width:400px;height:400px" ></canvas>

JS

var canvas = new fabric.Canvas('canvas', {
    backgroundColor: 'rgb(240,240,240)'
});

var imageLoader = document.getElementById('imageLoader');
imageLoader.addEventListener('change', handleImage, false);

function handleImage(e) {
  var reader = new FileReader();
  reader.onload = function (event) {
    var img = new Image();
    img.onload = function () {
        var imgInstance = new fabric.Image(img, {
            scaleX: 1,
            scaleY: 1
        })
        canvas.add(imgInstance);
    }
    img.src = event.target.result;
}
reader.readAsDataURL(e.target.files[0]);
}

var imageRemove = document.getElementById('imageRemove');
imageLoader.addEventListener('change', handleRemove, false);

function handleRemove(e) {
   canvas.remove(canvas.getActiveObject());
}

编辑:

这是Jsfiddle

1 个答案:

答案 0 :(得分:3)

您可以使用clear()清除画布对象,并使用renderAll()重绘给定的画布。

试用此代码:

<强> DEMO

HTML:

    <div id="container">
    <input type="file" id="imageLoader" name="imageLoader" />
    Remove:<input type="button" value="remove" id="imageRemove" name="imageRemove" onClick="handleRemove()"/>
    <canvas id="canvas" width="400" height="400" style="width:400px;height:400px" ></canvas>

JS代码:

var canvas = new fabric.Canvas('canvas', {
    backgroundColor: 'rgb(240,240,240)'
});

var imageLoader = document.getElementById('imageLoader');
imageLoader.addEventListener('change', handleImage, false);

function handleImage(e) {
  var reader = new FileReader();
  reader.onload = function (event) {
    var img = new Image();
    img.onload = function () {
        var imgInstance = new fabric.Image(img, {
            scaleX: 1,
            scaleY: 1
        })
        canvas.add(imgInstance);
    }
    img.src = event.target.result;
}
reader.readAsDataURL(e.target.files[0]);
}

//var imageRemove = document.getElementById('imageRemove');
//imageLoader.addEventListener('change', handleRemove, true);

function handleRemove() {
canvas.clear().renderAll(); // Here is your clear canvas function
}