这篇文章主要介绍了HTML5中的canvas如何绘制钟表的方法的相关资料,小编觉得HTML真的是越来越强大的,现在分享给大家,也给大家做个参考。对HTML的小伙伴们可以一起跟随小编过来看看吧

本文介绍了canvas如何绘制钟表的方法,分享给大家,具体如下:

效果图为

上代码:

var canvas = document.getElementById('canvas');

var ctx = canvas.getContext('2d');

var year,month,day,hour,second,minute;

// 绘制表盘

function drawClockPie(){

ctx.beginPath();

ctx.lineWidth = 2;

ctx.strokeStyle = '#333';

ctx.arc(150,150,146,0,2*Math.PI);

ctx.stroke();

ctx.closePath();

ctx.beginPath();

ctx.arc(150,150,6,0,2*Math.PI);

ctx.fillStyle = 'red';

ctx.fill();

ctx.closePath();

}

// 绘制时刻度

function drawClockHours(){

for(var i = 0,l = 12; i < 12; i++){

ctx.save();

ctx.translate(150,150);

ctx.rotate(i*1/12*2*Math.PI);

ctx.beginPath();

ctx.lineWidth = 5;

ctx.strokeStyle = '#333';

ctx.moveTo(0,-140);

ctx.lineTo(0,-125);

ctx.stroke();

ctx.closePath();

ctx.restore();

}

}

// 绘制分刻度

function drawClockMins(){

for(var i = 0,l = 60; i < 60; i++){

ctx.save();

ctx.translate(150,150);

ctx.rotate(i*1/60*2*Math.PI);

ctx.beginPath();

ctx.lineWidth = 3;

ctx.strokeStyle = '#333';

ctx.moveTo(0,-140);

ctx.lineTo(0,-133);

ctx.stroke();

ctx.closePath();

ctx.restore();

}

}

// 绘制时针

function drawHourPin(){

ctx.save();

ctx.translate(150,150);

ctx.rotate((hour*60*60+minute*60+second)/(12*60*60)*2*Math.PI);

ctx.beginPath();

ctx.strokeStyle = '#333';

ctx.lineWidth = 3;

ctx.moveTo(0,0);

ctx.lineTo(0,-40);

ctx.stroke();

ctx.closePath();

ctx.restore();

}

// 绘制分针

function drawMinPin(){

ctx.save();

ctx.translate(150,150);

ctx.rotate((minute*60+second)/(60*60)*2*Math.PI);

ctx.beginPath();

ctx.strokeStyle = '#333';

ctx.lineWidth = 2;

ctx.moveTo(0,0);

ctx.lineTo(0,-60);

ctx.stroke();

ctx.closePath();

ctx.restore();

}

// 绘制秒针

function drawSecPin(){

ctx.save();

ctx.translate(150,150);

ctx.rotate(second/60*2*Math.PI);

ctx.beginPath();

ctx.strokeStyle = 'red';

ctx.lineWidth = 1;

ctx.moveTo(0,0);

ctx.lineTo(0,-80);

ctx.stroke();

ctx.closePath();

ctx.restore();

}

// 绘制时间文字

function drawText(){

hour = hour >= 12 ? hour - 12 : hour;

var time = '现在是' + year + '年' + month +

'月' + day + '日' + hour + '时' + minute +

'分' + second + '秒';

ctx.font = '15px 黑体';

ctx.fillText(time,24,350);

}

// 获取时间

function getTimes(){

var date = new Date();

year = date.getFullYear();

month = date.getMonth() + 1;

day = date.getDate();

hour = date.getHours();

minute = date.getMinutes();

second = date.getSeconds();

}

setInterval(function(){

ctx.clearRect(0,0,600,600);

drawClockPie();

drawClockHours();

drawClockMins();

getTimes();

drawText();

drawHourPin();

drawMinPin();

drawSecPin();

},1000);

注:

当然时间也可以不用这样每隔一秒就获取,直接获取一次按秒递增就行。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持PHP中文网。

相关推荐:

php画钟,canvas如何绘制钟表的方法_html5教程技巧相关推荐

  1. php 画虚线,HTML5 Canvas绘制圆点虚线实例_html5教程技巧

    HTML5 Canvas 提供了很多图形绘制的函数,但是很可惜,Canvas API只提供了画实线的函数(lineTo),却并未提供画虚线的方法.这样的设计有时会带来很大的不便,<JavaScr ...

  2. html 根据坐标画多边形,Canvas多边形绘制的实现方法

    前言 Canvas绘制多变形非常简单,只要懂得Canvas路径 + 简单的初中数学知识即可完成 解析 思路如上,非常简单,计算每一个点的位置通过lineTo()绘制路径即可 核心代码解析如下(或在Co ...

  3. html5 手机拍视频滤镜,用canvas实现图片滤镜效果附演示_html5教程技巧

    这是一个很有意思的特效,模拟摄像机拍摄电视屏幕画面时出现点状颗粒的效果.颗粒的大小通过变换矩阵实现,可以任意调节,有兴趣研究的朋友可以尝试更多的效果,代码没有经过优化,只是一个粗糙的Demo,大家可以 ...

  4. 将图片画到canvas 上的几种方法

    我的网站:http://www.mzzy8.com/ 任何的知识体系,都是由小的知识体系构成,你要想成为高手 无法第一步就是把所有的琐碎的知识都搞定它! 写的多了,自然就会了,这也是为啥要写笔记,写笔 ...

  5. 在c++中使用easyx画一个实时走动的钟表(方法细节)

    这次的任务是用c++画出实时走动的钟表,并且与当前系统的时间一致. 由于我们使用的是c++语言,我们更需要用这个例子来提高我们对面向对象程序设计的理解. 我们首先需要分析出需求,"画一个能够 ...

  6. 用php绘制空心圆,html5使用canvas画空心圆与实心圆_html5教程技巧

    这里给大家分享的是一个学习canvas的时候做的画空心圆与实心圆的练习题,非常简单. 代码如下: var canvas=document.getElementById("canvas&quo ...

  7. html绘制圆形和弧形的代码,通过HTML5 Canvas API绘制弧线和圆形的教程

    在html5中,CanvasRenderingContext2D对象也提供了专门用于绘制圆形或弧线的方法,请参考以下属性和方法介绍: JavaScript Code复制内容到剪贴板 arc(x, y, ...

  8. canvas动态绘制图片的方法

    应用场景 在制作html5小游戏时需要使用canvas绘制图片,但是图片是异步加载的,需要发送请求获取数据,这就导致不能在设置src之后直接使用绘制方法,而是需要等待图片加载完成. 加载单张图片 使用 ...

  9. html点线面制作,利用HTML5绘制点线面组成的3D图形的示例_html5教程技巧

    玩Canvas玩了有两三个礼拜了,平面的东西玩来玩去也就那样,所以就开始折腾3D了. 因为Canvas画布终究还是平面的,所以要有3D就得抽象出一个Z轴.然后再把3D坐标转换成2D坐标,画到画布上,再 ...

最新文章

  1. 蒟蒻JZZ的犯错汇总
  2. 用SAPI实现Speech Recognition(SR) - 命令控制模式
  3. POJ-3621 Sightseeing Cows 最优比率环、01分数规划
  4. liunx 下巧妙使用代理服务器(squid)
  5. mysql-Federated存储方式,远程表,相当于sql server的linked server
  6. php debug用什么意思,phpdebug_backtrace()函数是干什么的?
  7. 数据结构——基于 Dijsktra 算法的最短路径求解
  8. 零配置 之Spring基于Java类定义Bean配置元数据
  9. 学习l1图做图像分析
  10. 5G 和 IoT 究竟意味着什么?
  11. 【EOS】EOS环境基础
  12. cs231n学习(1)图像分类器:KNN和线性分类器(上)
  13. python语言与存货管理,(二)实现对库存管理系统的模块化编程
  14. 红外接收电路自己制作,我用过的
  15. 【转载】制作一个超精简的WIN7.gho
  16. 可以上qq不能上网页的解决办法
  17. linux下打开.mpp文件(微软project).
  18. Centos GNOME桌面
  19. 【c语言】C语言运动会系统
  20. mac系统docker发布镜像报错:错误the user name or passphrase you entered is not correct解决

热门文章

  1. EST | 西湖大学鞠峰组提出表型宏基因组学用于超广谱抗生素耐药组的高通量环境检测...
  2. 刘盈盈计算机科学与技术,四川省2013年度中等职业学校省级优秀毕业生名单_29131...
  3. 时间序列分析之指数平滑法(holt-winters及代码)
  4. 机器学习元老之间的关系图
  5. 如何用TANGO探戈和VVDI编程器来刷写宝马PCF7953钥匙
  6. 三王乱战孙宇晨背后:我们需要一场的区块链真理大辩论
  7. 外媒聚焦:孙宇晨任格林纳达驻WTO大使,为WTO注入数字经济动力
  8. 基于网络中心性的计算机网络脆弱性评估方法
  9. Ab3d.Reader3ds - 3ds 文件导入器 --FIX-Crack
  10. 从0到1 手把手搭建spring cloud alibaba 微服务大型应用框架(三) (mini-cloud) 搭建认证服务(认证/资源分离版) oauth2.0 (中)