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的方法
Aug 29 HTML / CSS
用纯css3实现的图片放大镜特效效果非常不错
Sep 02 HTML / CSS
初探CSS3中的calc()功能
Jul 14 HTML / CSS
详解CSS3的box-shadow属性制作边框阴影效果的方法
May 10 HTML / CSS
HTML5 Web存储方式的localStorage和sessionStorage进行数据本地存储案例应用
Dec 09 HTML / CSS
HTML5 语音搜索(淘宝店语音搜素)
Jan 03 HTML / CSS
HTML5实现简单图片上传所遇到的问题及解决办法
Jan 20 HTML / CSS
HTML5中使用postMessage实现两个网页间传递数据
Jun 22 HTML / CSS
解决canvas转base64/jpeg时透明区域变成黑色背景的方法
Oct 23 HTML / CSS
纯HTML5+CSS3制作生日蛋糕(代码易懂)
Nov 16 HTML / CSS
canvas裁剪clip()函数的具体使用
Mar 01 HTML / CSS
box-shadow单边阴影的实现
May 21 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
mysql 中InnoDB和MyISAM的区别分析小结
2008/04/15 PHP
PHP数据流应用的一个简单实例
2012/09/14 PHP
php遍历目录方法小结
2015/03/10 PHP
深入理解php printf() 输出格式化的字符串
2016/05/23 PHP
Laravel框架模板继承操作示例
2018/06/11 PHP
Prototype Template对象 学习
2009/07/19 Javascript
javascript阻止scroll事件多次执行的思路及实现
2013/11/08 Javascript
js Date概念详细介绍
2013/11/22 Javascript
js 限制input只能输入数字、字母和汉字等等
2013/12/18 Javascript
微信小程序遇到修改数据后页面不渲染的问题解决
2017/03/09 Javascript
JavaScript 值类型和引用类型的初次研究(推荐)
2017/07/19 Javascript
浅析JS中常用类型转换及运算符表达式
2017/07/23 Javascript
详解处理Vue单页面应用SEO的另一种思路
2018/11/09 Javascript
React Native中Mobx的使用方法详解
2018/12/04 Javascript
JS去除字符串最后的逗号实例分析【四种方法】
2019/06/20 Javascript
小程序如何在不同设备上自适应生成海报的实现方法
2019/08/20 Javascript
基于iview-admin实现动态路由的示例代码
2019/10/02 Javascript
python启动办公软件进程(word、excel、ppt、以及wps的et、wps、wpp)
2009/04/09 Python
详解Python中time()方法的使用的教程
2015/05/22 Python
python实现字符串连接的三种方法及其效率、适用场景详解
2017/01/13 Python
Python模块结构与布局操作方法实例分析
2017/07/24 Python
python实现校园网自动登录的示例讲解
2018/04/22 Python
python3使用smtplib实现发送邮件功能
2018/05/22 Python
完美解决python中ndarray 默认用科学计数法显示的问题
2018/07/14 Python
python json.loads兼容单引号数据的方法
2018/12/19 Python
值得收藏的10道python 面试题
2019/04/15 Python
想学画画?python满足你!
2020/12/24 Python
英国最大的电脑零售连锁店集团:PC World
2016/10/10 全球购物
Sasa莎莎海外旗舰店:香港莎莎美妆平台
2018/03/21 全球购物
简述数据库的设计过程
2015/06/22 面试题
四风查摆问题自查报告
2014/10/10 职场文书
2014年镇党建工作汇报材料
2014/11/02 职场文书
党的群众路线教育实践活动调研报告
2014/11/03 职场文书
2015年保洁员工作总结
2015/05/04 职场文书
幼儿园圣诞节活动总结
2015/05/06 职场文书
2016年员工政治思想表现评语
2015/12/02 职场文书