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实现的几个小loading效果
Sep 27 HTML / CSS
使用css3背景渐变中的透明度来设置不同颜色的背景渐变
Mar 31 HTML / CSS
CSS3实现超酷的黑猫警长首页
Apr 26 HTML / CSS
利用纯CSS3实现动态的自行车特效源码
Jan 20 HTML / CSS
CSS3中媒体查询结合rem布局适配手机屏幕
Jun 10 HTML / CSS
CSS3动画特效在活动页中的应用
Jan 21 HTML / CSS
css3实现圆锥渐变conic-gradient效果
Feb 12 HTML / CSS
html5 css3网站菜单实现代码
Dec 23 HTML / CSS
整理HTML5移动端开发的常用触摸事件
Apr 15 HTML / CSS
解析html5 canvas实现背景鼠标连线动态效果代码
Jun 17 HTML / CSS
HTML5 播放 RTSP 视频的实例代码
Jul 29 HTML / CSS
CSS控制继承中的height能变为可继承吗
Jun 10 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实现无限级分类
2014/12/24 PHP
以实例全面讲解PHP中多进程编程的相关函数的使用
2015/08/18 PHP
详谈PHP面向对象中常用的关键字和魔术方法
2017/02/04 PHP
php使用GD2绘制几何图形示例
2017/02/15 PHP
php经典趣味算法实例代码
2020/01/21 PHP
jQuery对指定元素中指定字符串进行替换的方法
2015/03/17 Javascript
jQuery实现表格隔行及滑动,点击时变色的方法【测试可用】
2016/08/20 Javascript
微信小程序之小豆瓣图书实例
2016/11/30 Javascript
vue使用axios实现文件上传进度的实时更新详解
2017/12/20 Javascript
浅谈webpack性能榨汁机(打包速度优化)
2019/01/09 Javascript
小程序绑定用户方案优化小结
2019/05/15 Javascript
vue使用混入定义全局变量、函数、筛选器的实例代码
2019/07/29 Javascript
Python爬虫模拟登录带验证码网站
2016/01/22 Python
深入浅出学习python装饰器
2017/09/29 Python
使用Python读取安卓手机的屏幕分辨率方法
2018/03/31 Python
Python3.6中Twisted模块安装的问题与解决
2019/04/15 Python
Tensorflow 1.0之后模型文件、权重数值的读取方式
2020/02/12 Python
浅谈在django中使用filter()(即对QuerySet操作)时踩的坑
2020/03/31 Python
pyecharts动态轨迹图的实现示例
2020/04/17 Python
Django中FilePathField字段的用法
2020/05/21 Python
python+pygame实现坦克大战小游戏的示例代码(可以自定义子弹速度)
2020/08/11 Python
python入门教程之基本算术运算符
2020/11/13 Python
html5 Canvas画图教程(4)—未闭合的路径及渐变色的填充方法
2013/01/09 HTML / CSS
S’well Bottle保温杯官网:绝缘不锈钢水瓶
2018/05/09 全球购物
财务经理岗位职责
2013/11/09 职场文书
普通院校学生的自荐信
2013/11/27 职场文书
《天安门广场》教学反思
2014/04/23 职场文书
大学生应聘导游自荐信
2014/06/02 职场文书
市场营销策划方案
2014/06/11 职场文书
“向国旗敬礼”主题班会活动设计方案
2014/09/27 职场文书
2015年助残日活动总结
2015/03/27 职场文书
刘胡兰观后感
2015/06/16 职场文书
早恋主题班会
2015/08/14 职场文书
六年级数学教学反思
2016/02/16 职场文书
《小蝌蚪找妈妈》教学反思
2016/02/23 职场文书
SQL Server #{}可以防止SQL注入
2022/05/11 SQL Server