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 相关文章推荐
你应该知道的30个css选择器
Mar 19 HTML / CSS
纯CSS3制作漂亮带动画效果的主机价格表
Apr 25 HTML / CSS
10分钟理解CSS3 FlexBox弹性布局
Dec 20 HTML / CSS
Html5如何唤起百度地图App的方法
Jan 27 HTML / CSS
html5指南-4.使用Geolocation实现定位功能
Jan 07 HTML / CSS
html5实现canvas阴影效果示例
May 07 HTML / CSS
HTML5 LocalStorage 本地存储详细概括(多图)
Aug 18 HTML / CSS
HTML5 WebSocket实现点对点聊天的示例代码
Jan 31 HTML / CSS
基于canvas的骨骼动画的示例代码
Jun 12 HTML / CSS
使用canvas一步步实现图片打码功能的方法
Jun 17 HTML / CSS
css3实现的加载动画效果
Apr 07 HTML / CSS
HTML CSS 一个标签实现带动画的抖音LOGO
Apr 26 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
Windows Apache2.2.11及Php5.2.9-1的安装与配置方法
2009/06/08 PHP
解析WordPress中函数钩子hook的作用及基本用法
2015/12/22 PHP
ThinkPHP5实现作业管理系统中处理学生未交作业与已交作业信息的方法
2016/11/12 PHP
Windows上php5.6操作mongodb数据库示例【配置、连接、获取实例】
2019/02/13 PHP
简单实用的全选反选按钮例子
2013/10/18 Javascript
nodejs实现HTTPS发起POST请求
2015/04/23 NodeJs
javascript+canvas实现刮刮卡抽奖效果
2015/07/29 Javascript
javascript实现九宫格相加数值相等
2020/05/28 Javascript
浅谈js对象的创建和对6种继承模式的理解和遐想
2016/10/16 Javascript
JS和jQuery通过this获取html标签中的属性值(实例代码)
2017/09/11 jQuery
node错误处理与日志记录的实现
2018/12/24 Javascript
JS字符串与二进制的相互转化实例代码详解
2019/06/28 Javascript
jQuery-Citys省市区三级菜单联动插件使用详解
2019/07/26 jQuery
JavaScript实现身份证验证代码实例
2019/08/26 Javascript
vue-admin-template配置快捷导航的代码(标签导航栏)
2020/09/04 Javascript
Python保存MongoDB上的文件到本地的方法
2016/03/16 Python
python获取指定字符串中重复模式最高的字符串方法
2018/06/29 Python
django-allauth入门学习和使用详解
2019/07/03 Python
python中for循环变量作用域及用法详解
2019/11/05 Python
Python安装whl文件过程图解
2020/02/18 Python
python爬虫基础知识点整理
2020/06/02 Python
Django form表单与请求的生命周期步骤详解
2020/06/07 Python
Python修改DBF文件指定列
2020/12/19 Python
python中zip()函数遍历多个列表方法
2021/02/18 Python
关于css中margin的值和垂直外边距重叠问题
2020/10/27 HTML / CSS
美国牛仔品牌:True Religion
2018/11/16 全球购物
C语言如何决定使用那种整数类型
2016/11/26 面试题
系统管理员的职责包括那些?管理的对象是什么?
2013/01/18 面试题
Python面试题:如何用Python来发送邮件
2016/03/15 面试题
新员工培训个人的自我评价
2013/10/09 职场文书
实习生单位鉴定意见
2013/12/04 职场文书
教师岗位职责范本
2013/12/29 职场文书
雏鹰争章活动总结
2014/05/09 职场文书
养成教育经验材料
2014/05/26 职场文书
小学美术教学反思
2016/02/17 职场文书
MySQL 开窗函数
2022/02/15 MySQL