html5之Canvas路径绘图、坐标变换应用实例


Posted in HTML / CSS onDecember 26, 2012

在上一篇中我们了解html5的Canvas ,在这一篇中不用多说,写一个html5的时钟应用程序试手。在这里主要设置了坐标变换的平移(translate)和旋转变换(ratate),以及html5 Canvas的路径绘图,beginPath,closePath,rect,arc等,还有就是html5 Canvas路径绘图重要的绘图状态的保存和恢复机制,save,restore。
多的也不说了,直接上代码,有不解的欢迎提问,以及对我的建议指教都可以。
ff下效果图
html5之Canvas路径绘图、坐标变换应用实例 
代码

复制代码
代码如下:

<html>
<head>
</head>
<body>
<canvas id="myCanvas" width="600" height="300">你的浏览器还不支持哦</canvas>
<script type="text/javascript">
var c = document.getElementById("myCanvas");
var cxt = c.getContext("2d");
var slen = 60;
var mlen = 50;
var hlen = 40;
cxt.strokeRect(0, 0, c.width, c.height);
cxt.beginPath();
cxt.strokeStyle = "#00f";
cxt.fillStyle = "#00f";
cxt.arc(200, 150, 5, 0, 2 * Math.PI, true);
cxt.fill();
cxt.closePath();
cxt.beginPath();
cxt.strokeStyle = "#00f";
cxt.arc(200, 150, 100, 0, 2 * Math.PI, true);
cxt.stroke();
cxt.closePath();
cxt.beginPath();
cxt.translate(200, 150); //平移原点;
cxt.rotate(-Math.PI / 2);
cxt.save();
for (var i = 0; i < 60; i++) {
if (i % 5 == 0) {
// cxt.fillStyle = "#ff0000";
cxt.fillRect(80, 0, 20, 5);
cxt.fillText("" + (i / 5 == 0 ? 12 : i / 5), 70, 0);
} else {
// cxt.strokeStyle = "#00f";
cxt.fillRect(90, 0, 10, 2);
}
//document.getElementById("div1").innerText += " " + i;
cxt.rotate(Math.PI / 30);
}
cxt.closePath();
var ls = 0, lm = 0, lh = 0;
function Refresh() {
cxt.restore();
cxt.save();
cxt.rotate(ls * Math.PI / 30);
cxt.clearRect(5, -1, slen+1, 2+2);
cxt.restore(); cxt.save();
cxt.rotate(lm * Math.PI / 30);
cxt.clearRect(5, -1, mlen+1, 3+2);
cxt.restore(); cxt.save();
cxt.rotate(lh * Math.PI / 6);
cxt.clearRect(5, -3, hlen+1, 4+2);
var time = new Date();
var s = ls=time.getSeconds();
var m = lm=time.getMinutes();
var h = lh=time.getHours();
cxt.restore();
cxt.save();
cxt.rotate(s * Math.PI / 30);
cxt.fillRect(5, 0, slen, 2);
cxt.restore(); cxt.save();
cxt.rotate(m * Math.PI / 30);
cxt.fillRect(5, 0, mlen, 3);
cxt.restore(); cxt.save();
cxt.rotate(h * Math.PI / 6);
cxt.fillRect(5, -2, hlen, 4);
}
var MyInterval = setInterval("Refresh();", 1000);
</script>
<div id="div1" style=" background:#00f;"></div>
</body>
</html>
HTML / CSS 相关文章推荐
css3过渡_动力节点Java学院整理
Jul 11 HTML / CSS
深入理解css中vertical-align属性
Apr 18 HTML / CSS
CSS3+HTML5+JS 实现一个块的收缩与展开动画效果
Nov 17 HTML / CSS
微信浏览器左上角返回按钮拦截功能
Nov 21 HTML / CSS
传统HTML页面实现模块化加载的方法
Oct 15 HTML / CSS
html5-canvas中使用clip抠出一个区域的示例代码
May 25 HTML / CSS
自定义html标记替换html5新增元素
Oct 17 HTML / CSS
html5指南-5.使用web storage存储键值对的数据
Jan 07 HTML / CSS
HTML5实现WebSocket协议原理浅析
Jul 07 HTML / CSS
深入探究HTML5的History API
Jul 09 HTML / CSS
吃透移动端 1px的具体用法
Dec 16 HTML / CSS
使用CSS实现六边形的图片效果
Aug 05 HTML / CSS
html5声频audio和视频video等新特性详细说明
Dec 26 #HTML / CSS
html5-Canvas可以在web中绘制各种图形
Dec 26 #HTML / CSS
在IE6系列等老式浏览器中使用HTML5的新标签实现方案
Dec 25 #HTML / CSS
HTML5引入的新数组TypedArray介绍
Dec 24 #HTML / CSS
突破canvas语法限制 让他支持链式语法
Dec 24 #HTML / CSS
HTML5重塑Web世界它将如何改变互联网
Dec 17 #HTML / CSS
如何使用html5与css3完成google涂鸦动画
Dec 16 #HTML / CSS
You might like
PHP COOKIE设置为浏览器进程
2009/06/21 PHP
php使用curl出现Expect:100-continue解决方法
2015/03/03 PHP
Laravel 集成 Geetest验证码的方法
2018/05/14 PHP
如何实现JS函数的重载
2006/09/22 Javascript
jquery下json数组的操作实现代码
2010/08/09 Javascript
jQuery获取注册信息并提示实现代码
2013/04/21 Javascript
jquery对元素拖动排序示例
2014/01/16 Javascript
Nodejs sublime text 3安装与配置
2014/06/19 NodeJs
JS不完全国际化&amp;本地化手册 之 理论篇
2016/09/27 Javascript
JavaScript仿网易选项卡制作代码
2016/10/06 Javascript
详细AngularJs4的图片剪裁组件的实例
2017/07/12 Javascript
js中less常用的方法小结
2017/08/09 Javascript
vue教程之toast弹框全局调用示例详解
2020/08/24 Javascript
利用JS测试目标网站的打开响应速度
2017/12/01 Javascript
微信小程序实现左右联动的实战记录
2018/07/05 Javascript
在vue项目中引入vue-beauty操作方法
2019/02/11 Javascript
js前端传json后台接收‘‘被转为quot的问题解决
2020/11/12 Javascript
Python读csv文件去掉一列后再写入新的文件实例
2017/12/28 Python
python网络编程 使用UDP、TCP协议收发信息详解
2019/08/29 Python
pytest fixtures装饰器的使用和如何控制用例的执行顺序
2021/01/28 Python
Python .py生成.pyd文件并打包.exe 的注意事项说明
2021/03/04 Python
HTML5+CSS3绘制锯齿状的矩形
2016/03/01 HTML / CSS
伦敦最有品味的百货:Liberty London
2016/11/12 全球购物
美国专营婴幼儿用品的购物网站:buybuy BABY
2017/01/01 全球购物
卡西欧B级产品官方网站:Casio Outlet
2018/05/22 全球购物
龟牌英国商店:Turtle Wax Brand Store UK
2019/07/02 全球购物
英国买鞋网站:Charles Clinkard
2019/11/14 全球购物
Wolford法国官网:奥地利奢侈内衣品牌
2020/08/11 全球购物
STP的判定过程
2012/10/01 面试题
市场部业务员岗位职责
2014/04/02 职场文书
党风廉政建设责任书
2014/04/14 职场文书
护士求职信
2014/07/05 职场文书
无财产无子女离婚协议书范文
2014/09/14 职场文书
班组长如何制订适合本班组的工作计划?
2019/07/10 职场文书
教你怎么用PyCharm为同一服务器配置多个python解释器
2021/05/31 Python
Redis keys命令的具体使用
2022/06/05 Redis