`
qiaoqinqie
  • 浏览: 59932 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

Html5 Canvas 中的save 和 restore

阅读更多

最近在学习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>
 

 

 

分享到:
评论

相关推荐

    android中canvas的save和restore用法

    `save()`和`restore()`是`Canvas`类中两个非常重要的方法,它们用于管理和恢复绘图状态,确保复杂的绘图操作能够正确无误地进行。在本文中,我们将深入探讨这两个方法的用法、原理以及它们在实际开发中的应用。 `...

    Android canvas.save()和canvas.restore()的理解

    `save()`和`restore()`是`Canvas`中两个非常关键的方法,它们主要用于管理绘图状态,确保复杂绘图过程中的可逆性和精确性。在本文中,我们将深入理解这两个方法的作用以及如何在实际应用中使用它们。 首先,`canvas...

    android 中canvas的save和resotre用法

    `save()`和`restore()`是Canvas的重要方法,用于保存和恢复绘图状态,这对于实现复杂的图形变换、绘制流程控制以及避免不必要的计算至关重要。下面将详细阐述这两个方法的用法和应用场景。 1. `save()`方法: `save...

    Android Canvas save restore演示

    `save()`和`restore()`是Canvas中的两个关键方法,它们在复杂的绘图场景中起到至关重要的作用。本演示将深入探讨这两个方法以及它们在Android图形绘制中的应用。 `Canvas.save()`方法的主要功能是保存当前Canvas的...

    html5 canvas中文文档

    `save()`方法用来保存Canvas的状态,它会将当前所有应用的样式和变换存储到一个栈中。 ```javascript ctx.save(); ``` 此时,任何新的样式或变换都会在当前状态下继续叠加,直到调用`restore()`方法恢复之前的...

    html5 canvas.rar

    此外,还可以使用`clearRect`来清除指定区域,`save`和`restore`用于保存和恢复当前绘图状态。 在"image"文件中,可能包含了一个图像资源,我们可以利用Canvas API将图片加载到canvas上并进行处理。`drawImage`方法...

    html5 canvas绘制3D地球旋转动画特效

    HTML5 Canvas是Web开发中的一个强大工具,它允许开发者在网页上进行动态图形绘制,创造出丰富的视觉效果。在这个“html5 canvas绘制3D地球旋转动画特效”中,我们将深入探讨如何利用HTML5 Canvas API来创建一个逼真...

    微信小程序小技巧系列《十一》canvas中的save和restore,view使用bindtap传值 ...

    一:canvas中的save和restore   一直以来没有特别明白canvas中的save()和restore()函数,这次终于通过微信小程序中使用此函数的时候弄明白了,以下代码可以运行在微信小程序中~~ 看效果: (此图片来源于网络,如有...

    html5 canvas 绘制的视频播放控制条

    在这个项目中,我们利用HTML5 Canvas来实现一个自定义的视频播放控制条,以此替换HTML视频元素默认的控制界面,提升用户界面的美观度和交互性。 1. **HTML5 Video Element** HTML5的`&lt;video&gt;`标签是用来嵌入视频...

    原生js html5 canvas 3D云动画效果

    在IT行业中,HTML5、Canvas和JavaScript是创建交互式网页内容的重要工具,特别是对于实现动态图形和动画。本文将深入探讨如何使用原生JavaScript和HTML5的Canvas API来创建3D云动画效果。 首先,HTML5 Canvas是一个...

    Html5 Canvas API

    在HTML中,你可以设置它的宽度和高度属性,例如`&lt;canvas id="myCanvas" width="400" height="400"&gt;&lt;/canvas&gt;`。 2. **Context对象**:Canvas API的核心是`2D渲染上下文`(`2D Rendering Context`),通过`canvas....

    HTML 5 CANVAS游戏开发实战_高清完整版

    HTML5 Canvas是Web开发中的一个强大工具,它允许开发者在网页上进行动态图形绘制,为创建丰富的交互式游戏和应用程序提供了可能。在这个“HTML 5 CANVAS游戏开发实战_高清完整版”中,我们将深入探讨如何利用Canvas ...

    html5<canvas游戏连连看>

    5. **状态管理**:Canvas的绘图状态可以通过`save()`和`restore()`方法进行保存和恢复。在游戏逻辑中,这可以用来切换不同状态的绘图,比如正常状态和选中状态。 6. **动画制作**:通过定时器(如`...

    使用HTML5 canvas 标签进行图片裁剪、旋转、缩放示例代码

    通过查看和分析这些文件,你可以更好地理解如何在实际项目中运用HTML5 canvas进行图片处理。 总的来说,HTML5 canvas提供了一套丰富的绘图API,使开发者能够在浏览器端进行复杂的图像操作,无需借助服务器端的处理...

    html5 canvas绘制随机游动线条动画特效

    7. **优化性能**:为了避免不必要的重绘,可以使用`context.save()`和`context.restore()`保存和恢复绘图状态,或者将不经常改变的属性(如线条颜色)设置为变量,减少对Canvas API的调用。 这个“html5 canvas绘制...

    HTML5 canvas纸片3D旋转动画.zip

    在HTML中,你可以通过`&lt;canvas&gt;`标签来创建一个canvas元素,并通过ID选择器在JavaScript中引用它。例如: ```html &lt;canvas id="myCanvas" width="500" height="500"&gt;&lt;/canvas&gt; ``` 接着,我们需要获取canvas的2D...

    HTML5 Canvas实现3D旋转物体动画及模糊发光特效源码

    在Canvas中,我们可以使用`save()`和`restore()`方法来保存和恢复当前的绘图状态,`translate()`、`rotate()`和`scale()`方法则可以对坐标系进行平移、旋转和缩放。开发者通过不断调整这些变换,模拟出物体的3D旋转...

    html5 canvas开发详解第二版 示例代码

    9. **保存和恢复状态**:`save()`和`restore()`方法可以保存和恢复Canvas的状态,方便重复绘制或保持一致性。 10. **WebGL集成**:虽然这不是Canvas API的一部分,但HTML5还引入了WebGL,可以与Canvas结合,实现3D...

    HTML5 Canvas酷炫科技背景动画特效

    3. **绘图函数**:使用2D渲染上下文提供的绘图方法,如`clearRect()`清除指定区域,`save()`和`restore()`保存和恢复绘图状态,`translate()`和`rotate()`进行坐标平移和旋转,`scale()`执行缩放等。 4. **动画原理...

    html5 canvas碎片3D环绕地球天体运动动画特效

    2. **矩阵变换**:使用`save()`和`restore()`方法保存和恢复绘图状态,以及`translate()`, `rotate()`, `scale()`等函数对物体进行平移、旋转和缩放,实现3D运动效果。特别是`rotate()`函数,它可以围绕任意轴进行...

Global site tag (gtag.js) - Google Analytics