canvas-绘制时钟
把最近学到的一些canvas技能全部发上来,刚开始写博客,感觉还不太习惯,不过我相信慢慢就会习惯了。不啰嗦了,把代码送上,看不懂的话可以先去学习下基础教程,把基础学好了也就能看懂了。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
</head>
<body>
<canvas id="canvas" width="500" height="500">你的浏览器不支持canvas</canvas>
<script>
var canvas = document.getElementById("canvas");
var ctx = canvas.getContext("2d"); function clock(){
ctx.clearRect(0,0,canvas.width,canvas.height);
var date = new Date();
var s = date.getSeconds();
var m = date.getMinutes();
var h = date.getHours();
var r = canvas.width/2.5; //半径
ctx.save();
ctx.translate(250,250);//平移之后坐标系跟着变化
ctx.rotate(-Math.PI/2);//旋转之后坐标系跟着变化 ctx.save();// 记录旋转画布之前初始状态
ctx.lineWidth = 3;
ctx.strokeStyle = "#CCCCCC";
//分刻度
for(var i = 0;i < 60;i++ ){
ctx.beginPath();
ctx.rotate(Math.PI/30);
ctx.moveTo(165,0);
ctx.lineTo(180,0);
ctx.stroke();
}
ctx.restore();// 恢复初始状态,未旋转前 ctx.save();
ctx.lineWidth = 5;
ctx.strokeStyle="black";
//时刻度
for (var i = 0; i < 12; i++) {
ctx.beginPath();
ctx.rotate(Math.PI/6);// 旋转画布绘制刻度
ctx.moveTo(155,0);
ctx.lineTo(180,0);
ctx.stroke();
}
ctx.restore(); ctx.save();
//秒针
ctx.strokeStyle = "blue";
ctx.lineWidth = 2;
ctx.beginPath();
ctx.rotate(s*Math.PI/30);
ctx.moveTo(-40,0);
ctx.lineTo(170,0);
ctx.stroke(); ctx.restore(); ctx.save();
//分针
ctx.strokeStyle = "black";
ctx.lineWidth = 3;
ctx.beginPath();
ctx.rotate((m*Math.PI/30) + (s*Math.PI/1800));
ctx.moveTo(-30,0);
ctx.lineTo(160,0);
ctx.stroke();
ctx.restore(); ctx.save();
//时针
ctx.strokeStyle = "red";
ctx.lineWidth = 4;
ctx.beginPath();
ctx.rotate((h*Math.PI/6)+(m*Math.PI/360) + (s*Math.PI/21600));
ctx.moveTo(-10,0);
ctx.lineTo(150,0);
ctx.stroke();
ctx.restore(); ctx.beginPath();
ctx.arc(0,0,5,0,360,false);
ctx.closePath();
ctx.fillStyle = "#ebebeb";
ctx.fill();
ctx.stroke(); ctx.restore(); //添加数字
for(i = 0;i<12;i++){
angle = i * 30;
// 转换为弧度制,Math.sin、Math.cos都接受弧度制单位
angle = angle*Math.PI/180;;
font = (i + 3 > 12)?i+3-12 : i+3;
fontX = 244+Math.round(Math.cos(angle)*(r-60));
fontY = 256+Math.round(Math.sin(angle)*(r-60));
ctx.font = 'bold 14px 微软雅黑';
ctx.fillText(font+'',fontX,fontY);
} ctx.restore();
window.requestAnimationFrame(clock);
//外圆框
ctx.lineWidth=4;
ctx.strokeStyle="gray";
ctx.beginPath();
ctx.arc(250,250,r,0,Math.PI*2,true);
ctx.stroke();
ctx.restore();
ctx.restore();
}
window.requestAnimationFrame(clock); clock ();
</script>
</body>
</html>
效果图:

canvas-绘制时钟的更多相关文章
- 使用canvas绘制时钟
使用canvas绘制时钟 什么使canvas呢?HTML5 <canvas> 元素用于图形的绘制,通过脚本 (通常是JavaScript)来完成.<canvas> 标签只是图 ...
- Canvas绘制时钟
①首先在HTML的body标签中添加一个canvas标签,用于绘制时钟. <canvas id="myCanvas" width="600" height ...
- HTML5 之Canvas 绘制时钟 Demo
<!DOCTYPE html> <html> <head> <title>Canvas 之 时钟 Demo</title> <!--简 ...
- html5 Canvas绘制时钟以及绘制运动的圆
1.绘制时钟 <!-- js代码 --> <script type="text/javascript"> window.onload=function(){ ...
- 小任务之Canvas绘制时钟
背景图的绘制(大圆.数字.小圆点) 掌握基础知识:圆的绘制(arc方法),关于圆的弧度的计算,数学中关于sin cos的用法 圆的弧度为2*Math.PI 12个数字分得弧度每个为2*Math.PI/ ...
- 用canvas绘制时钟
用canvas做时钟其实很简单,下面是我做出的效果: 是不是还挺漂亮的? 下面上代码: html <div class="whole"> <canvas id=& ...
- HTML5 Canvas 绘制时钟
网上会看到很多绘制的时钟,看代码也是云里雾里,自学了下Canvas,觉得不难,就自己做了一个. 先看一下截图: 比较简陋,但是该有的都有了,样式只加了个阴影. html代码就不贴了,就一个canvas ...
- 使用canvas绘制时钟 (http://heeroluo.net/Article/Detail/95)
准备工作 在HTML中指定一个区域放置时钟: <div id="clock" style="position: relative;"></di ...
- canvas绘制时钟及注释及save和restore的用法
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8" ...
- 用canvas绘制一个简易时钟
在见识了html5中canvas的强大,笔者准备制作一个简易时钟. 下面就是成果啦,制作之前我们先分析一下,绘制一个时钟需要做哪些准备. 一 . 1.首先这个时钟分为表盘,指针(时针,分针,秒针)和数 ...
随机推荐
- 带你揭开ATM的神秘面纱
相信大家都用过ATM取过money吧,但是有多少人真正是了解ATM的呢?相信除了ATM从业者外了解的人寥寥无几吧,鄙人作为一个从事ATM软件开发的伪专业人士就站在我的角度为大家揭开ATM的神秘面纱吧. ...
- Hello Hibernate
Hibernate 一个框架; 一个 Java 领域的持久化框架; 一个 ORM 框架 ORM(Object/Relation Mapping): 对象/关系映射 –ORM的思想:将关系数据库中表中的 ...
- JSONObject put,accumulate,element的区别(转载)
原文链接:http://ljhzzyx.blog.163.com/blog/static/3838031220126810430157/ public Object put (Object key ...
- 网易云课堂 OCP
数据库DBA任务: 管理数据库可用性 设计并创建数据库 管理物理结构 管理基于设计的存储 管理安全性 网络管理 备份与恢复 数据库调整与优化 关系型数据库(RDBMS) 多个表数据之间存在着关系 关系 ...
- 创建和运行shell脚本程序
转载请标明http://www.cnblogs.com/winifred-tang94/ 要创建一个shell脚本程序,首先新建一个文本文件,然后在这个文本文件中按照shell编程规则输入shell命 ...
- Setup Factory 打包.netframework 2.0
在setup factory 的安装目录下的Dependencies中新建目录dotnet20/并放入dotnetfx2.0.exe: Dependencies目录中再加xml文件dotnet20.x ...
- zookeeper3.4.6的安装
最近为了解决HDFS的单点故障的问题,采用了HA的方式是实现,并通过zookeeper来实现自动切换,既然需自动切换的话,那么必须要安装zookeeper,我选用的版本是3.4.6.下面详细介绍一下其 ...
- [转] linux中巧用ctrl-z后台运行程序
背景: 最近在执行一些长时间程序的时候,老是一不小心忘了输入‘&’ , 结果终端就卡在那里了,很是郁闷 以前总是再新开一个终端. 今天翻看<鸟哥的linux私房菜>的时候,发现介绍 ...
- PHP_Session
Session有12个函数分别是: 01 session_start: 初始 session 02 session_destroy: 结束 session 03 session_unset: 释放s ...
- JQuery基础DOM操作
DOM创建节点及节点属性 通过JavaScript可以很方便的获取DOM节点,从而进行一系列的DOM操作.但实际上一般开发者都习惯性的先定义好HTML结构,但这样就非常不灵活了. 试想下这样的情况:如 ...