分享

HTML5 canvas绘图的redo和undo功能的实现

 delmarks 2015-03-04
HTML5 canvas绘图的redo和undo功能的实现

查看演示 下载地址

在前面我们学会了如何使用html5 canvas制作涂鸦画板,那么能不能实现像windows画图板或Photoshop的redo和undo功能呢?答案是肯定的,本教程中我们将来实现它。

为了实现canvas的redo/undo功能,我们需要保存canvas的快照(通过canvas的toDataURL方法来实现),将每一个快照都存储在一个数组cPushArray中,当我们每次往canvas中绘制线条的时候,我们都使用一个cPush方法来往数组中存储快照。

如果cPush方法被调用,而当前的操作又不是最好的位置,数组将自动增长。在当前位置之后的数组记录将被全部删除。

var cPushArray = new Array();
var cStep = -1;
var ctx;
// ctx = document.getElementById('myCanvas').getContext("2d");
     
function cPush() {
    cStep++;
    if (cStep < cPushArray.length) { cPushArray.length = cStep; }
    cPushArray.push(document.getElementById('myCanvas').toDataURL());
}                               

当我们点击了undo按钮,cUndo方法将被调用,并使用drawImage方法显示前一个绘图状态:

function cUndo() {
    if (cStep > 0) {
        cStep--;
        var canvasPic = new Image();
        canvasPic.src = cPushArray[cStep];
        canvasPic.onload = function () { ctx.drawImage(canvasPic, 0, 0); }
    }
}                               

查看演示 下载地址

本文版权属于jQuery之家,转载请注明出处:http://www./ziliaoku/qianduanjiaocheng/201502151385.html

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多