最近在学习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>
分享到:
相关推荐
`save()`和`restore()`是`Canvas`类中两个非常重要的方法,它们用于管理和恢复绘图状态,确保复杂的绘图操作能够正确无误地进行。在本文中,我们将深入探讨这两个方法的用法、原理以及它们在实际开发中的应用。 `...
`save()`和`restore()`是`Canvas`中两个非常关键的方法,它们主要用于管理绘图状态,确保复杂绘图过程中的可逆性和精确性。在本文中,我们将深入理解这两个方法的作用以及如何在实际应用中使用它们。 首先,`canvas...
`save()`和`restore()`是Canvas的重要方法,用于保存和恢复绘图状态,这对于实现复杂的图形变换、绘制流程控制以及避免不必要的计算至关重要。下面将详细阐述这两个方法的用法和应用场景。 1. `save()`方法: `save...
`save()`和`restore()`是Canvas中的两个关键方法,它们在复杂的绘图场景中起到至关重要的作用。本演示将深入探讨这两个方法以及它们在Android图形绘制中的应用。 `Canvas.save()`方法的主要功能是保存当前Canvas的...
`save()`方法用来保存Canvas的状态,它会将当前所有应用的样式和变换存储到一个栈中。 ```javascript ctx.save(); ``` 此时,任何新的样式或变换都会在当前状态下继续叠加,直到调用`restore()`方法恢复之前的...
此外,还可以使用`clearRect`来清除指定区域,`save`和`restore`用于保存和恢复当前绘图状态。 在"image"文件中,可能包含了一个图像资源,我们可以利用Canvas API将图片加载到canvas上并进行处理。`drawImage`方法...
HTML5 Canvas是Web开发中的一个强大工具,它允许开发者在网页上进行动态图形绘制,创造出丰富的视觉效果。在这个“html5 canvas绘制3D地球旋转动画特效”中,我们将深入探讨如何利用HTML5 Canvas API来创建一个逼真...
一:canvas中的save和restore 一直以来没有特别明白canvas中的save()和restore()函数,这次终于通过微信小程序中使用此函数的时候弄明白了,以下代码可以运行在微信小程序中~~ 看效果: (此图片来源于网络,如有...
在这个项目中,我们利用HTML5 Canvas来实现一个自定义的视频播放控制条,以此替换HTML视频元素默认的控制界面,提升用户界面的美观度和交互性。 1. **HTML5 Video Element** HTML5的`<video>`标签是用来嵌入视频...
在IT行业中,HTML5、Canvas和JavaScript是创建交互式网页内容的重要工具,特别是对于实现动态图形和动画。本文将深入探讨如何使用原生JavaScript和HTML5的Canvas API来创建3D云动画效果。 首先,HTML5 Canvas是一个...
在HTML中,你可以设置它的宽度和高度属性,例如`<canvas id="myCanvas" width="400" height="400"></canvas>`。 2. **Context对象**:Canvas API的核心是`2D渲染上下文`(`2D Rendering Context`),通过`canvas....
HTML5 Canvas是Web开发中的一个强大工具,它允许开发者在网页上进行动态图形绘制,为创建丰富的交互式游戏和应用程序提供了可能。在这个“HTML 5 CANVAS游戏开发实战_高清完整版”中,我们将深入探讨如何利用Canvas ...
5. **状态管理**:Canvas的绘图状态可以通过`save()`和`restore()`方法进行保存和恢复。在游戏逻辑中,这可以用来切换不同状态的绘图,比如正常状态和选中状态。 6. **动画制作**:通过定时器(如`...
通过查看和分析这些文件,你可以更好地理解如何在实际项目中运用HTML5 canvas进行图片处理。 总的来说,HTML5 canvas提供了一套丰富的绘图API,使开发者能够在浏览器端进行复杂的图像操作,无需借助服务器端的处理...
7. **优化性能**:为了避免不必要的重绘,可以使用`context.save()`和`context.restore()`保存和恢复绘图状态,或者将不经常改变的属性(如线条颜色)设置为变量,减少对Canvas API的调用。 这个“html5 canvas绘制...
在HTML中,你可以通过`<canvas>`标签来创建一个canvas元素,并通过ID选择器在JavaScript中引用它。例如: ```html <canvas id="myCanvas" width="500" height="500"></canvas> ``` 接着,我们需要获取canvas的2D...
在Canvas中,我们可以使用`save()`和`restore()`方法来保存和恢复当前的绘图状态,`translate()`、`rotate()`和`scale()`方法则可以对坐标系进行平移、旋转和缩放。开发者通过不断调整这些变换,模拟出物体的3D旋转...
9. **保存和恢复状态**:`save()`和`restore()`方法可以保存和恢复Canvas的状态,方便重复绘制或保持一致性。 10. **WebGL集成**:虽然这不是Canvas API的一部分,但HTML5还引入了WebGL,可以与Canvas结合,实现3D...
3. **绘图函数**:使用2D渲染上下文提供的绘图方法,如`clearRect()`清除指定区域,`save()`和`restore()`保存和恢复绘图状态,`translate()`和`rotate()`进行坐标平移和旋转,`scale()`执行缩放等。 4. **动画原理...
2. **矩阵变换**:使用`save()`和`restore()`方法保存和恢复绘图状态,以及`translate()`, `rotate()`, `scale()`等函数对物体进行平移、旋转和缩放,实现3D运动效果。特别是`rotate()`函数,它可以围绕任意轴进行...