我正在创建一个应用程序,允许用户在画布上绘制一个数字(使用鼠标)。当他们点击提交时,图像应该保存为JPEG,清除应该擦除画布中绘制的数字。我是HTML5 Canvas的新手。我看到一些教程,其中创建了一个画布,但我无法保存和清除画布。任何帮助都将不胜感激。谢谢。
下面是我的HTML:
<div style="padding-bottom: 20px;padding-left: 210px;">
<div class="btn-group" role="group" aria-label="...">
<button type="button" id="save" class="btn btn-default">Submit</button>
<button type="button" id="clear" class="btn btn-default">Clear</button>
</div></div>
</div>
脚本标签中的Javascript:
var clear = document.getElementById('clear');
clear.addEventListener('click', clearCanvas);
var clearCanvas = function(e) {
ctx.fillStyle = "white";
ctx.fillRect(0, 0, 500, 400);
ctx.clearRect(20, 20, 100, 50);
}
2条答案
按热度按时间izkcnapc1#
您使用的教程没有提到几个关键事项:
canvasInAPerfectWorld
行:你可以删除它。<head>
部分添加<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.js"></script/>
。$( document ).ready(function() { <your javascript here> });
canvasWidth
和canvasHeight
变量:在使用变量之前添加这一行:var canvasWidth = 600; var cavasHeight = 400;
onClick()
函数,看看它们会被用来做什么)。完成的结果应该如下所示:
至于将画布保存为JPEG格式,这就更复杂了。正如markE所指出的,这里有一个相关的问题,它显示了一种方法。
EDIT:增加“清除”按钮:
你的“绘图”实际上只是一系列存储在clickX、clickY和clickDrag数组中的钢笔移动。每次调用
redraw()
时,都会从数组重新创建绘图。因此,仅仅绘制一个白色矩形只会清除屏幕,直到下一个redraw()
。相反,你可以通过在javascript中添加以下内容来清除数组:vsnjm48y2#
我认为这是一个重复的问题。看这里
Can I get image from canvas element and use it in img src tag?