在介绍 undo  redo 的实现之前。要先讲一下canvas的toDataURL()方法。

toDataURL()方法将canvas上所绘制的内容转换成格式png格式图片,并将图片通过base64编码。转换成形如如:data:image/png;base64,iVBORw0KGg.......的字符串,用来表示图片数据。

(PS:对此比較困惑的读者能够自行查找关于HTML

图片 BASE64 存储的相关问题,这个知识点还是非常重要的)

undo redo 的原理实际上非常easy。就是当每运行一次绘画,则将画板的内容转换成base64编码的字符串,存到缓存数组中去,然后在须要undo 的时候,将画板清空。再将缓存数组中的最后一次编辑的图片绘制到画板上就可以。相关的实现细节例如以下代码所看到的:

//undo redo

var history =new Array();

var cStep = -1;

/**

* put current canvas to cache

*/

function historyPush()

{

cStep++;

if (cStep < history.length)

{

history.length = cStep;

}

history.push($("#myCanvas").get(0).toDataURL());

}

/**

* function: undo

*/

function undo()

{

if (cStep >= 0)

{

cStep--;

var tempImage = new Image();

tempImage.src = history[cStep];

tempImage.onload = function () { ctx.drawImage(tempImage, 0, 0);};

}

}

/**

* function: redo

*/

function redo()

{

if (cStep

{

clearCanvas();

cStep++;

var tempImage = new Image();

tempImage.src = history[cStep];

tempImage.onload = function () { ctx.drawImage(tempImage, 0, 0); };

}

}

基于HTML5的在线绘图工具,基于HTML5 Canvas和jQuery 的绘图工具的实现相关推荐

  1. 基于HTML5 Canvas和jQuery 的画图工具的实现

    简介 HTML5 提供了强大的Canvas元素,使用Canvas并结合Javascript 可以实现一些非常强大的功能.本文就介绍一下基于HTML5 Canvas 的画图工具的实现.废话少说,先看成品 ...

  2. 基于PHP MySQL在线考试系统,基于PHP和MySQL的考试系统的研究

    68 技术在线 2010年10月下 第30期(总第216期) 随着考生的增加.考试要求的不断提高,对考试系统的要求越来越高,相应的教师和管理员的工作强度也越来越大,传统的考试方式已不能充分满足当前考生 ...

  3. 基于python的在线考试系统-基于 Python 的电子教室和在线考试系统源代码

    Python 是近年倍受推崇的语言,这里介绍的是两个与教学相关的开源项目.一个是用于计算机教室管理的电子教室系统,第二个是与之关联的在线考试系统,当然,这个系统也可以单列出来.这两个项目还只是个雏形, ...

  4. 基于python的在线考试系统-基于Django的在线考试系统

    项目目录结构: account为扩展的Django用户模块 analysis为用户答题分析模块 api为接口路由 business为机构配置信息模块 competition为比赛核心模块 config ...

  5. html5实现在线动态画板,Javascript HTML5 Canvas实现的一个画板

    DEMO6:自定义画板 浏览器不支持canvas YELLOW RED BLUE GREEN WHITE BLACK 4PX 8PX 16PX EXPORT var canvas = document ...

  6. 基于html5的在线教育,基于HTML5的在线学习系统的设计与实现

    基于HTML5的在线学习系统的设计与实现 发布时间:2019-11-18所属分类:科技论文浏览:1次 摘 要: 摘 要: 在线课程学习网站的发展迅速,吸引了广大用户.基于 HTML5 的在线学习系统经 ...

  7. html5摄像头 在线演示,基于HTML5实现的超酷摄像头(HTML5 webcam)摄

    }); WebRTC可能是来岁最受关心的HTML5标准了,Mozilla为此开辟了一套协帮你节造软件的API,例如,摄像头,麦克风,或者是加快表.你可以或许不依赖其它的插件来调用你需要的本机软件设备. ...

  8. 基于html5的音乐网站,基于C#和HTML5的在线音乐网站设计

    毕业设计是基于c#和html5的在线音乐网站设计,下载了visual studio 2017准备开发.这个软件可以写页面也可以开发后台,很方便了. 项目的创建:asp.net web,visual s ...

  9. 图片怎么转为html5,将图片转化为矢量并canvas化的容易工具(基于Node.js + HTML5 canvas)...

    将图片转化为矢量并canvas化的简单工具(基于Node.js + HTML5 canvas) 一.前言 最近需要做一个图标的矢量化,但是没有数据,因此采用了node.js作为数据处理工具,canva ...

  10. html5网站测试工具,基于HTML5网页的前端技术测试技巧

    51Testing软件测试网)QTQ e-c HTML5是一种最新发布网页构架的普遍模型,是构建对程序.对用户都更有价值的数据驱动的的前端技术框架,它的价值在于融合CSS/javaScript/fla ...

最新文章

  1. CNN 常用网络结构解析 1x1 卷积运算 示意图
  2. Java程序员必备秘籍 Scala与Clojure函数式编程语言
  3. 使用Ethereum C++ Aleth客户端创建具有两个同步节点的以太坊Ethereum私有网络
  4. 从此以后,江湖有了它的传说!
  5. 成功解决tensorflow\contrib\learn\python\learn\datasets\mnist.py: maybe_download (from tensorflow.contri
  6. How to not show unnecessary zeros when given integers but still have float answers when needed
  7. boost::regex模块信用卡匹配相关的测试程序
  8. geth rpc无法开启_三分了解以太坊 Geth 客户端快照加速机制
  9. 史上最完整的iOS DIY framework 详细教程(一)
  10. w550官方例程_急!求索爱w550的刷机所需要的所有文件! 全部分送上!
  11. 【Windows】线程漫谈——线程同步之信号量和互斥量
  12. 二分法解决力扣374.猜数字大小 C语言
  13. centos7修改ip地址命令_每天一条Linux命令(12) hostnam (超详细)
  14. hdu 1693 Eat the Trees 插头dp
  15. 我竟然用git send-mail通过QQ邮箱提交了push request
  16. Unity 常用脚本:ScreenCapture
  17. T Day-1 星空之夜
  18. 控制贺尔碧格PRL及PIL模块式RT-PVR6系列比例放大器
  19. 通过位与方法获取三色值,十六进制色值转换RGB
  20. 【QCM2150】WCN3680 WFA WPA3 STA 5.6.1测试失败

热门文章

  1. 配置aconda_重装windows系统后配置Anaconda
  2. 如何判断是否被职场PUA探针及处理
  3. Keepalived HAProxy应用
  4. Nacos 配置不生效
  5. Dell Optiplex 960 n series 释放SLIC
  6. IDEA Spring facet的意思
  7. python 3.7.0 小甲鱼 有道词典翻译 (error:50)问题解决
  8. 联想E431 win10+Unbutun+Deepin系统安装
  9. 5V单端差分信号编码器转脉冲24V电平集电极开路变送器
  10. 华侨大学计算机转专业要求,2021年华侨大学大一新生转专业及入学考试相关规定...