无法清除画布

Anc*_*end 0 javascript jquery html5 canvas html5-canvas

我很难重置/清除画布的内容.我目前正在使用:Sketch.js插件生成一个自由格式的画布.它完全符合我的需要,但它似乎没有一个简单的画布'重置'函数调用来清除内容.

jsfiddle:http: //jsfiddle.net/k7fmq/

注意:我读到'宽度'方法在chrome中不起作用,并且这两种方法似乎都不适用于'自由形式'画布,但仅适用于我没有测试过的形状.

这是我到目前为止所尝试的:

标记

<div class="signature-field">
            Signature:
    <span class="sketch-container">
            <canvas style="border:1px solid grey; border-radius:7px;" id="simple_sketch" width="400" height="150"></canvas>
            <span class="save-signature">Save Signature</span>
            <span class="reset-canvas">Reset Canvas</span>
    </span>
    Date: <input type="text"><br/><br/>Name:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <input type="text">
</div>
Run Code Online (Sandbox Code Playgroud)

JQuery(我的最新尝试)

$('.reset-canvas').click(function() {
        var myCanvas = document.getElementById("#simple_sketch");
        var width = myCanvas.width;
        myCanvas.width = width + 1;

 });
Run Code Online (Sandbox Code Playgroud)

方法2:

  $('.reset-canvas').click(function() {
           canvas.width = canvas.width; 
   });
Run Code Online (Sandbox Code Playgroud)

方法3:

$('.reset-canvas').click(function() {
       var myCanvas = document.getElementById("simple_sketch");
       var ctx = myCanvas.getContext('2d');
       ctx.clearRect(0, 0, myCanvas.width, myCanvas.height);
 });
Run Code Online (Sandbox Code Playgroud)

Shm*_*dty 6

试试这个:http://jsfiddle.net/k7fmq/1/

Sketchpad插件保留一系列"动作",并重新绘制每个更新(这似乎是不必要的,真的,但是whatevs).

var sktch = $('#simple_sketch').sketch();  // store a reference to the element.
var cleanCanvas = $('#simple_sketch')[0];

$('.save-signature').click(function(){
    /* replace canvas with image */
    var canvas = document.getElementById("simple_sketch");
    var img    = canvas.toDataURL("image/png");
    $('#simple_sketch').replaceWith('<img src="'+img+'"/>');
    $('.signature-buttons').replaceWith('');
});
$('.reset-canvas').click(function(){
    sktch.sketch().actions = [];       // this line empties the actions. 
    var myCanvas = document.getElementById("simple_sketch");
    var ctx = myCanvas.getContext('2d');

    ctx.clearRect(0, 0, myCanvas.width, myCanvas.height);
});
Run Code Online (Sandbox Code Playgroud)