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 Pie工具推荐--让IE6-8支持一些优秀的CSS3特性
Sep 02 HTML / CSS
CSS3不透明度实例讲解
Apr 26 HTML / CSS
CSS3实现多样的边框效果
May 04 HTML / CSS
css3 中translate和transition的使用方法
Mar 26 HTML / CSS
前端面试必备之html5的新特性
Sep 05 HTML / CSS
HTML5边玩边学(2)基础绘图实现方法
Sep 21 HTML / CSS
HTML5 语音搜索(淘宝店语音搜素)
Jan 03 HTML / CSS
HTML5 CSS3实现一个精美VCD包装盒个性幻灯片案例
Jun 16 HTML / CSS
HTML5 文件域+FileReader 分段读取文件并上传到服务器
Oct 23 HTML / CSS
详解Canvas 跨域脱坑实践
Nov 07 HTML / CSS
基于Html5实现的语音搜索功能
May 13 HTML / CSS
新的CSS 伪类函数 :is() 和 :where()示例详解
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
转生史莱姆:萌王第一次撸串开心到飞起,哥布塔撸串却神似界王神
2018/11/30 日漫
php中AES加密解密的例子小结
2014/02/18 PHP
PHP中用mysqli面向对象打开连接关闭mysql数据库的方法
2016/11/05 PHP
PHP框架自动加载类文件原理详解
2017/06/06 PHP
Yii 2.0自带的验证码使用经验分享
2017/06/19 PHP
PHP实现打包下载文件的方法示例
2017/10/07 PHP
CI框架附属类用法分析
2018/12/26 PHP
Laravel向公共模板赋值方法总结
2019/06/25 PHP
php判断数组是否为空的实例方法
2020/05/10 PHP
JavaScript isPrototypeOf和hasOwnProperty使用区别
2010/03/04 Javascript
jQuery帮助之筛选查找 children([expr])
2011/01/31 Javascript
JavaScript中定义函数的三种方法
2015/03/12 Javascript
jquery实现触发时更新下拉列表内容的方法
2015/12/02 Javascript
JavaScript setTimeout使用闭包功能实现定时打印数值
2015/12/18 Javascript
Javascript 5种方法实现过滤删除前后所有空格
2016/06/22 Javascript
JS实现的简易拖放效果示例
2016/12/29 Javascript
jQuery自定义图片上传插件实例代码
2017/04/04 jQuery
python创建只读属性对象的方法(ReadOnlyObject)
2013/02/10 Python
Python异常处理总结
2014/08/15 Python
Python内存管理方式和垃圾回收算法解析
2017/11/11 Python
python定向爬取淘宝商品价格
2018/02/27 Python
对pandas将dataframe中某列按照条件赋值的实例讲解
2018/11/29 Python
Python3.6中Twisted模块安装的问题与解决
2019/04/15 Python
python通过http下载文件的方法详解
2019/07/26 Python
利用CSS3实现炫酷的飞机起飞动画
2016/09/17 HTML / CSS
请说出几个常用的异常类
2013/01/08 面试题
在C语言中"指针和数组等价"到底是什么意思?
2014/03/24 面试题
优秀团员个人的自我评价
2013/10/02 职场文书
党风廉政建设责任书
2014/04/14 职场文书
医学专业自荐信
2014/06/14 职场文书
工作收入住址证明
2014/10/28 职场文书
2014年幼儿园安全工作总结
2014/11/10 职场文书
三八妇女节新闻稿
2015/07/17 职场文书
幼儿园迎新生欢迎词
2015/09/30 职场文书
干货:如何写好工作计划!
2019/05/17 职场文书
Python简易开发之制作计算器
2022/04/28 Python