我很难重置/清除画布的内容。我目前正在使用: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: <input type="text">
</div>
JQuery(我的最新尝试)
$('.reset-canvas').click(function() {
var myCanvas = document.getElementById("#simple_sketch");
var width = myCanvas.width;
myCanvas.width = width + 1;
});
方法2:
$('.reset-canvas').click(function() {
canvas.width = canvas.width;
});
方法3:
$('.reset-canvas').click(function() {
var myCanvas = document.getElementById("simple_sketch");
var ctx = myCanvas.getContext('2d');
ctx.clearRect(0, 0, myCanvas.width, myCanvas.height);
});
答案 0 :(得分: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);
});
答案 1 :(得分:0)
试试这个:
var ctx = myCanvas.getContext('2d');
ctx.save();
ctx.setTransform(1, 0, 0, 1, 0, 0);
ctx.clearRect(0, 0, myCanvas.width, myCanvas.height);
ctx.restore();