HTML5 Canvas 小例子 旋转的时钟
2024-10-16 14:18:41
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Canvas</title>
<script type="text/javascript" src="jQuery.js"></script>
</head>
<style type="text/css">
body {
padding: 0;
margin: 0;
background: black;
}
#canvas {
background: white;
margin: 100px 0 0 300px;
}
#canvas>span {
color: white;
font-size: 14px;
}
</style>
<body>
<canvas id="canvas" width="600" height="500">
<span>您的浏览器不支持</span>
</canvas>
</body>
</html>
<script type="text/javascript">
/*获取绘制环境*/
var oc = $('#canvas')[0];
canvas = oc.getContext('2d');
/*定义圆心和半径*/
var x = 250, y = 250, r = 150; var time = setInterval(function() {
ClocksWatche();
}, 1000); function ClocksWatche() {
/*清理画布*/
canvas.clearRect(0, 0, oc.width, oc.height);
/*开始绘制*/
canvas.beginPath();
for(var i = 0; i < 60; i++) {
/*绘制起始点移到圆心*/
canvas.moveTo(x, y);
/*根据圆心和半径每6度绘制一次(圆心横坐标,圆心纵坐标,其实弧度,结束弧度,是否逆时针)*/
canvas.arc(x, y, r, 6 * i * Math.PI / 180, 6 * (i + 1) * Math.PI / 180, false);
}
/*连接至起始点*/
canvas.closePath();
/*画线*/
canvas.stroke();
/*设置线的粗细*/
canvas.lineWidth = 3;
/*开始绘制*/
canvas.beginPath();
for(var i = 0; i < 60; i++) {
/*绘制起始点移到圆心*/
canvas.moveTo(x, y);
/*根据圆心和半径没30度绘制一次*/
canvas.arc(x, y, r, 30 * i * Math.PI / 180, 30 * (i + 1) * Math.PI / 180, false);
}
/*连接至起始点*/
canvas.closePath();
/*画线*/
canvas.stroke();
/*设置填充颜色*/
canvas.fillStyle = 'white';
canvas.beginPath();
canvas.moveTo(x, y);
canvas.arc(x, y, r * 14 / 15, 0, 360, false);
canvas.closePath();
canvas.fill(); var loacalDate = new Date();
var hours = loacalDate.getHours();
var minute = loacalDate.getMinutes();
var sencond = loacalDate.getSeconds();
hours = (hours * 30 - 90 + minute / 2) * Math.PI / 180;
minute = (minute * 6 - 90) * Math.PI / 180;
sencond = (sencond * 6 - 90) * Math.PI / 180; canvas.beginPath();
canvas.lineWidth = 5;
canvas.moveTo(x, y);
canvas.arc(x, y, r * 8 / 15, hours, hours, false);
canvas.stroke(); canvas.beginPath();
canvas.lineWidth = 3;
canvas.moveTo(x, y);
canvas.arc(x, y, r * 10 / 15, minute, minute, false);
canvas.stroke(); canvas.beginPath();
canvas.lineWidth = 1;
canvas.moveTo(x, y);
canvas.arc(x, y, r * 14 / 15, sencond, sencond, false);
canvas.stroke();
}
</script>
最新文章
- WordPress数据库优化技巧
- 1、基于MFC的OpenGL程序
- Bootstrap 固定定位(Affix)
- 《BI那点儿事》数据流转换——导入列、导出列
- HDU 2899 Strange fuction 【三分】
- 第十四章:Annotation(注释)
- 膜拜(codevs 3369)
- 转载:mybatis自动生成
- 优化Android应用内存的若干方法
- (转)JS获取当前对象大小以及屏幕分辨率等
- 【repost】如何学好编程 (精挑细选编程教程,帮助现在在校学生学好编程,让你门找到编程的方向)四个方法总有一个学好编程的方法适合你
- vue + vuex 表单处理
- 杭州电 1372 Knight Moves(全站搜索模板称号)
- [转]Linux Shell History (快速使用Linux命令)
- 432B - Football Kit
- 多模块分布式系统的简单服务访问 - OSGI原形(.NET)
- ural1316 Electronic Auction
- css补充
- Salesforce Lightning开发学习(二)Component组件开发实践
- mysql-8.0.11安装步骤
热门文章
- 数据仓库专题(21):Kimball总线矩阵说明-官方版
- xftp找不到匹配的outgoing encryption 算法 怎么解决
- ALGO-9_蓝桥杯_算法训练_摆动序列(DP)
- bzoj5020: [THUWC 2017]在美妙的数学王国中畅游
- Java学习——多线程例子:李四王五
- hasClass() removeClass() addClass()
- jdbi
- 【架构师之路】集群/分布式环境下5种session处理策略
- 修改了jdk在环境变量中的路径怎么cmd中的jdk版本没有变
- MySQL MHA 搭建&;测试(环境:CentOS7 + MySQL5.7.23)