- HTML5 教程
- HTML5 - 首页
- HTML5 - 概述
- HTML5 - 语法
- HTML5 - 属性
- HTML5 - 事件
- HTML5 - Web 表单 2.0
- HTML5 - SVG
- HTML5 - MathML
- HTML5 - Web 存储
- HTML5 - Web SQL 数据库
- HTML5 - 服务器发送事件
- HTML5 - WebSocket
- HTML5 - Canvas
- HTML5 - 音频和视频
- HTML5 - 地理位置
- HTML5 - 微数据
- HTML5 - 拖放
- HTML5 - Web Workers
- HTML5 - IndexedDB
- HTML5 - Web 消息传递
- HTML5 - Web CORS
- HTML5 - WebRTC
- HTML5 演示
- HTML5 - Web 存储
- HTML5 - 服务器发送事件
- HTML5 - Canvas
- HTML5 - 音频播放器
- HTML5 - 视频播放器
- HTML5 - 地理位置
- HTML5 - 拖放
- HTML5 - Web Worker
- HTML5 - Web幻灯片
- HTML5 工具
- HTML5 - SVG 生成器
- HTML5 - MathML
- HTML5 - Velocity 绘图
- HTML5 - 二维码
- HTML5 - Validator.nu 验证
- HTML5 - Modernizr
- HTML5 - 验证
- HTML5 - 在线编辑器
- HTML5 - 颜色代码构建器
- HTML5 标签参考
- HTML5 - 问答
- HTML5 - 标签参考
- HTML5 - 已弃用的标签
- HTML5 - 新标签
- HTML5 资源
- HTML5 - 有用资源
- HTML5 - 讨论
HTML5 Canvas - 保存和恢复状态
HTML5 canvas 提供了两种重要的保存和恢复 canvas 状态的方法。canvas 绘图状态基本上是所有已应用样式和转换的快照,包括以下内容:
诸如平移、旋转和缩放等转换。
当前剪辑区域。
以下属性的当前值:strokeStyle, fillStyle, globalAlpha, lineWidth, lineCap, lineJoin, miterLimit, shadowOffsetX, shadowOffsetY, shadowBlur, shadowColor, globalCompositeOperation, font, textAlign, textBaseline.
每次调用save方法时,canvas 状态都会存储到堆栈中,并且每次调用restore方法时,都会从堆栈中返回最后保存的状态。
序号 | 方法和描述 |
---|---|
1 | save() 此方法将当前状态压入堆栈。 |
2 | restore() 此方法弹出堆栈顶部的状态,将上下文恢复到该状态。 |
示例
以下是一个简单的示例,它使用上述方法来演示如何调用restore以恢复原始状态,并且最后一个矩形再次以黑色绘制。
<!DOCTYPE HTML> <html> <head> <style> #test { width: 100px; height:100px; margin: 0px auto; } </style> <script type = "text/javascript"> function drawShape() { // get the canvas element using the DOM var canvas = document.getElementById('mycanvas'); // Make sure we don't execute when canvas isn't supported if (canvas.getContext) { // use getContext to use the canvas for drawing var ctx = canvas.getContext('2d'); // draw a rectangle with default settings ctx.fillRect(0,0,150,150); // Save the default state ctx.save(); // Make changes to the settings ctx.fillStyle = '#66FFFF' ctx.fillRect( 15,15,120,120); // Save the current state ctx.save(); // Make the new changes to the settings ctx.fillStyle = '#993333' ctx.globalAlpha = 0.5; ctx.fillRect(30,30,90,90); // Restore previous state ctx.restore(); // Draw a rectangle with restored settings ctx.fillRect(45,45,60,60); // Restore original state ctx.restore(); // Draw a rectangle with restored settings ctx.fillRect(40,40,90,90); } else { alert('You need Safari or Firefox 1.5+ to see this demo.'); } } </script> </head> <body id = "test" onload = "drawShape();"> <canvas id = "mycanvas"></canvas> </body> </html>
上述示例将产生以下结果:
html5_canvas.htm
广告