六狼论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博账号登陆

只需一步,快速开始

搜索
查看: 100|回复: 0

Html5 Canvas 中的save 和 restore

[复制链接]

升级  10%

17

主题

17

主题

17

主题

秀才

Rank: 2

积分
65
 楼主| 发表于 2013-1-24 06:41:04 | 显示全部楼层 |阅读模式
最近在学习html5的canvas,对其中的save 和 restore有一些疑惑 
 
save是保存一次状态 这保存所有的canvas 上下文属性。例如style, lineWidth等
把这个状态压入一个堆栈
 
restore 恢复上一次save的状态,从堆栈里面推出一个状态。
 
我弄了一个画正方形的 效果  边长随着点击递增
画笔的颜色在2种颜色里面循环交替
 
然后在每画三次的时候,恢复上一次状态
代码如下:
 
window.onload = function(){var Draw = function() {this.canvas = document.getElementById('canvas');this.storkeStyles = ['#09F','#3FE'];this.count = 1;};Draw.prototype = {init:function(){this.ctx = this.canvas.getContext('2d');this.ctx.lineWidth = 2;this.draw();},draw:function(){this.ctx.strokeRect(100 - 5*this.count,100 -5*this.count,10*this.count,10*this.count);this.ctx.save();this.count++;this.ctx.strokeStyle = this.storkeStyles[this.count % 2]},redraw:function(){this.ctx.restore();}};var draw = new Draw();draw.init();document.getElementById('draw_button').onclick = function(){draw.draw();}document.getElementById('redraw_button').onclick = function(){draw.redraw();}} 
页面:
 
<div><canvas id='canvas' width='200' height='200'></canvas><input type='button' value='draw' id='draw_button'/><input type='button' value='redraw' id='redraw_button'/></div>  
 
您需要登录后才可以回帖 登录 | 立即注册 新浪微博账号登陆

本版积分规则

快速回复 返回顶部 返回列表