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实现折角效果实例源码
Sep 28 HTML / CSS
CSS3之transition实现下划线的示例代码
May 30 HTML / CSS
详解Html5微信支付爬坑之路
Jul 24 HTML / CSS
HTML5探秘:用requestAnimationFrame优化Web动画
Jun 03 HTML / CSS
HTML5 Canvas的性能提高技巧经验分享
Jul 02 HTML / CSS
html5使用canvas画空心圆与实心圆
Dec 15 HTML / CSS
使用spring mvc+localResizeIMG实现HTML5端图片压缩上传的功能
Dec 16 HTML / CSS
HTML5本地存储和本地数据库实例详解
Sep 05 HTML / CSS
canvas简易绘图的实现(海绵宝宝篇)
Jul 04 HTML / CSS
Html5页面二次分享的实现
Jul 30 HTML / CSS
AmazeUI在模态框中嵌入表单形成模态输入框
Aug 20 HTML / CSS
app内嵌H5 webview 本地缓存问题的解决
Oct 19 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面向对象全攻略 (十二) 抽象方法和抽象类
2009/09/30 PHP
PHP数组实例总结与说明
2011/08/23 PHP
PHP管理依赖(dependency)关系工具 Composer 安装与使用
2014/08/18 PHP
Laravel配置全局公共函数的方法步骤
2019/05/09 PHP
一个很简单的办法实现TD的加亮效果.
2006/06/29 Javascript
js 对象是否存在判断
2009/07/15 Javascript
jQuery实现倒计时按钮功能代码分享
2014/09/03 Javascript
浏览器复制插件zeroclipboard使用指南
2016/03/26 Javascript
JS 实现倒计时数字时钟效果【附实例代码】
2016/03/30 Javascript
全面解析Bootstrap中nav、collapse的使用方法
2016/05/22 Javascript
JavaScript函数中关于valueOf和toString的理解
2016/06/14 Javascript
JavaScript面试题大全(推荐)
2016/09/22 Javascript
CodeMirror js代码加亮使用总结
2017/03/25 Javascript
vue的Virtual Dom实现snabbdom解密
2017/05/03 Javascript
微信小程序 开发MAP(地图)实例详解
2017/06/27 Javascript
JS运动特效之任意值添加运动的方法分析
2018/01/24 Javascript
React diff算法的实现示例
2018/04/20 Javascript
java实现单链表增删改查的实例代码详解
2019/08/30 Javascript
python写日志封装类实例
2015/06/28 Python
Python实现PS滤镜碎片特效功能示例
2018/01/24 Python
Python OpenCV获取视频的方法
2018/02/28 Python
django多个APP的urls设置方法(views重复问题解决)
2019/07/19 Python
Python常用扩展插件使用教程解析
2020/11/02 Python
pycharm中leetcode插件使用图文详解
2020/12/07 Python
Python 中Operator模块的使用
2021/01/30 Python
澳大利亚百货商店中销量第一的商务衬衫品牌:Van Heusen
2018/07/26 全球购物
Petmate品牌官方网站:宠物用品
2018/11/25 全球购物
FC-Moto西班牙:摩托车手最大的购物场所之一
2019/04/11 全球购物
Pedro官网:新加坡时尚品牌
2019/08/27 全球购物
初始化了一个没有run()方法的线程类,是否会出错?
2014/03/27 面试题
《维生素c的故事》教学反思
2014/02/18 职场文书
西双版纳导游词
2015/02/03 职场文书
2015年度质量工作总结报告
2015/04/27 职场文书
详解Redis实现限流的三种方式
2021/04/27 Redis
教你怎么用Python监控愉客行车程
2021/04/29 Python
python套接字socket通信
2022/04/01 Python