绘制时钟

  <!doctype html>
  <html lang="en">
  <head>
  <meta charset="UTF-8">
  <title>Canvas绘制时钟Demo</title>
  <style>
  #myCanvas{
  border: 1px solid;
  }
  </style>
  </head>
  <body>
  <canvas id="myCanvas" width="500" height="400">
  很抱歉,你的浏览器不支持canvas元素
  </canvas>
  <script>
  var c = document.getElementById(‘myCanvas‘);//获取Canvas对象
  var ctx = c.getContext(‘2d‘);//获取上下文
  function drawClock()
  {
  ctx.clearRect(0,0, c.width, c.height);//清除画布
  c.width = c.width;//清除画布时需要重置宽度,否则会有一个画布的重叠
  var x = 250,y = 200,r = 180;//定义圆盘的中心坐标和圆盘的半径
  /*获取实际的时间*/
  var objTime = new Date();
  var objHour = objTime.getHours();
  var objMin = objTime.getMinutes();
  var objSen = objTime.getSeconds();
  /*将时间转换为具体的弧度*/
  /*
  * 因为时钟是从12点的位置算作开始,但是canvas是3点钟的位置算作0度,所以-90度指向12点方向
  * 时针是每小时相隔30度,objMin/2是为了做出当分针过半时,时针也相应的处于两个小时之间
  * 分针和秒针是每次相隔6度
  */
  var arcHour = (-90+objHour*30 + objMin/2)*Math.PI/180;
  var arcMin = (-90+objMin*6)*Math.PI/180;
  var arcSen = (-90+objSen*6)*Math.PI/180;
  /*绘制圆盘*/
  ctx.beginPath();
  for(var i=0;i<60;i++)//一共360度,一共60分钟,每分钟相隔6度,360/6=60
  {
  ctx.moveTo(x,y);
  ctx.arc(x,y,r,6*i*Math.PI/180,6*(i+1)*Math.PI/180,false);
  }
  ctx.closePath();
  ctx.stroke();
  /*绘制白盘盖住下面的线*/
  ctx.fillStyle = ‘white‘;
  ctx.beginPath();
  ctx.arc(x,y,r*19/20,0,360*Math.PI/180,false);//半径取值为r的20分之19
  ctx.closePath();
  ctx.fill();
  /*依葫芦画瓢,制作每一个小时的线*/
  /*绘制圆盘*/
  ctx.beginPath();
  ctx.lineWidth = 3;
  for(var i=0;i<12;i++)//一共360度,一共12个小时,每小时相隔30度,360/30=12
  {
  ctx.moveTo(x,y);
  ctx.arc(x,y,r,30*i*Math.PI/180,30*(i+1)*Math.PI/180,false);
  }
  ctx.closePath();
  ctx.stroke();
  /*绘制白盘盖住下面的线*/
  ctx.fillStyle = ‘white‘;
  ctx.beginPath();
  ctx.arc(x,y,r*18/20,0,360*Math.PI/180,false);//半径取值为r的20分之18
  ctx.closePath();
  ctx.fill();
  /*开始绘制时针分针和秒针,技巧就是起始弧度和结束弧度值一样*/
  /*开始绘制时针*/
  ctx.beginPath();
  ctx.moveTo(x,y);
  ctx.lineWidth = 7;
  ctx.lineCap = ‘round‘;
  ctx.arc(x,y,r*10/20,arcHour,arcHour,false);//半径取值为r的20分之10
  ctx.stroke();
  ctx.closePath();
  /*开始绘制分针*/
  ctx.beginPath();
  ctx.moveTo(x,y);
  ctx.lineWidth = 5;
  ctx.lineCap = ‘round‘;
  ctx.arc(x,y,r*12/20,arcMin,arcMin,false);//半径取值为r的20分之12
  ctx.stroke();
  ctx.closePath();
  /*开始绘制秒针*/
  ctx.beginPath();
  ctx.moveTo(x,y);
  ctx.lineWidth = 2;
  ctx.lineCap = ‘round‘;
  ctx.arc(x,y,r*16/20,arcSen,arcSen,false);//半径取值为r的20分之16
  ctx.stroke();
  ctx.closePath();
  }
  setInterval(‘drawClock()‘,1000);//每隔1秒调用绘制时钟函数
  </script>
  </body>
  </html>

原文地址:https://www.cnblogs.com/qilin0/p/11512314.html

时间: 2024-07-31 02:46:31

绘制时钟的相关文章

Html5绘制时钟

最近在对Html5比较感兴趣,就用空闲时间做一些小例子进行练习,今天绘制一个走动的时钟,具体如下图所示: 具体思路在上图已有说明,代码如下: 1 <script type="text/javascript"> 2 3 //绘制圆形的弧度,ctx 为绘制环境,x,y为绘制中心,r为绘制半径,st为起始弧度,end为结束弧度 4 function circle(ctx, x, y, r, st, end, w) { 5 ctx.lineWidth = w; 6 ctx.begi

【UWP通用应用开发】编辑文本、绘制图形、3D透视效果及绘制时钟实战

编辑文本及键盘输入 相信大家都会使用TextBox,但如果要让文本在TextBox中换行该怎么做呢?将TextWrapping属性设置为Wrap,将AcceptsReturn属性设置为True就好咯. PasswordBox很明显就是一个密码框了,和其他的控件相比其有2个特殊之处,一个是其可以用MaxLength来控制最大的长度,一个是用PasswordChanged来捕捉密码的改名.显然比如QQ密码的MaxLength就是16位了,而PasswordChanged可以用来监测比如用户设置的密码

自定义组件-绘制时钟

1.效果图 2.Canvas对象详解 1.translate(x,y):平移,将画布的坐标原点向左右方向移动x,向上下方向移动y.canvas的默认位置是在(0,0). 例子:画布原点假如落在(1,1),那么translate(10,10)就是在原点(1,1)基础上分别在x轴.y轴移动10,则原点变为(11,11). 2.scale(x,y):扩大.x为水平方向的放大倍数,y为竖直方向的放大倍数. 3.rotate(angel):旋转.angle指旋转的角度,顺时针旋转. 4.transform

使用canvas绘制时钟并通过class面向对象

使用canvas绘制时钟并通过class面向对象 1.思路分析 钟表可分为静止的刻度和动态的指针两大部分由于指针具有动态性,必然需要定时器实时刷新清空并重绘但刻度部分如果一起清空并重绘会降低性能因此可以使用两个重叠在一起的canvas画板来分别绘制两个部分 2.绘制表盘步骤 2.1.首先获取第一个面板的上下文: var canvas1=document.getElementById("canvas1"); var ctx1=canvas1.getContext("2d&quo

小任务之Canvas绘制时钟

背景图的绘制(大圆.数字.小圆点) 掌握基础知识:圆的绘制(arc方法),关于圆的弧度的计算,数学中关于sin cos的用法 圆的弧度为2*Math.PI 12个数字分得弧度每个为2*Math.PI/12 那么rad=i*2*Math.PI/12 x=Math.cos(rad)*所需要的长度(也就是半径-差值) y=Math.sin(rad)*所需要的长度(也就是半径-差值) 同理可得60个点的绘制 60个数字分得弧度每个rad=i*2*Math.PI/60 x=Math.cos(rad)*所需

js绘制时钟

<!doctype html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Canvas绘制时钟Demo</title> <style> #myCanvas{ border: 1px solid; } </style> </head> <body> <canvas id=&quo

使用canvas绘制时钟

window.onload=function(){     var clock=document.getElementById("clock").getContext('2d');//通过获取canvas元素获取2d上下文     var width=clock.canvas.width;//得到画布的宽度     var height=clock.canvas.height;//得到花布的高度     var r=width/2;//得到将要画的时钟的半径     var prop=

HTML5 Canvas 绘制时钟

网上会看到很多绘制的时钟,看代码也是云里雾里,自学了下Canvas,觉得不难,就自己做了一个. 先看一下截图: 比较简陋,但是该有的都有了,样式只加了个阴影. html代码就不贴了,就一个canvas. <canvas id="clock" width="300" height="300"></canvas> 下面是JS实现: 1.取得上下文: var clock = document.getElementById('cl

用canvas的arc绘制时钟

在页面上加入canvas标签: <body> <canvas id="c1" width="600px" height="600px"> <span>不支持canvas浏览器</span> </canvas> <!--默认:宽300 高150--> </body> js部分: 绘制秒的刻度的思路是先用oGC.stroke()循环画60个6°的扇形,将它们拼接成一整