<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>canvas绘制表盘</title>
</head>
<body>
  <canvas id='box' width="500" height="500" >
    您的浏览器不支持canvas
  </canvas>
  <script>
    var box = document.getElementById('box');
    var cxt = box.getContext('2d');
    // 时钟动起来
    var timer = null;
    function clock(){
      var date = new Date();
      var s = date.getSeconds();

      var m = date.getMinutes()+s/60;

      var h = date.getHours()+m/60;
      h = h>12? h-12:h;
      // 清画布
      cxt.clearRect(0,0,500,500);
      // 画表盘
      cxt.strokeStyle = '#f0f';
      cxt.lineWidth = 6;
      cxt.beginPath();
      cxt.arc(250,250,100,0,2*Math.PI);
      cxt.stroke();
      // 画时钟刻度
      for(var i=0; i<12; i++){
        cxt.save();
        cxt.translate(250,250);
        cxt.rotate(30*i*Math.PI/180);
        cxt.lineWidth = 3;
        cxt.beginPath();
        cxt.moveTo(0,-80);
        cxt.lineTo(0,-92);
        cxt.stroke();
        cxt.restore();
      }
      //画分钟刻度
      for(var i=0; i<60; i++){
        cxt.save();
        cxt.translate(250,250);
        cxt.rotate(6*i*Math.PI/180);
        cxt.lineWidth = 2;
        cxt.beginPath();
        cxt.moveTo(0,-86);
        cxt.lineTo(0,-92);
        cxt.stroke();
        cxt.restore();
      }
      // 画时针
      cxt.save();
      cxt.lineWidth = 5;
      cxt.translate(250,250);
      cxt.rotate(h*30*Math.PI/180);
      cxt.beginPath();
      cxt.moveTo(0,6);
      cxt.lineTo(0,-40);
      cxt.stroke();
      cxt.restore();
      // 画分针
      cxt.save();
      cxt.lineWidth = 3;
      cxt.translate(250,250);
      cxt.rotate(m*6*Math.PI/180);
      cxt.beginPath();
      cxt.moveTo(0,8);
      cxt.lineTo(0,-60);
      cxt.stroke();
      cxt.restore();
      // 画秒针
      cxt.save();
      cxt.lineWidth = 1;
      cxt.translate(250,250);
      cxt.rotate(s*6*Math.PI/180);
      cxt.beginPath();
      cxt.moveTo(0,10);
      cxt.lineTo(0,-75);
      cxt.stroke();
      cxt.restore();
      // 画中心的小圆固定三根针
      cxt.save();
      cxt.beginPath();
      cxt.fillStyle = '#0f0';
      cxt.lineWidth = 2;
      cxt.translate(250,250);
      cxt.arc(0,0,2,0,360,false);
      cxt.stroke();
      cxt.fill();
      cxt.restore();
      // 画秒针上的园
      cxt.save();
      cxt.fillStyle = '#f00';
      cxt.lineWidth = 2;
      cxt.translate(250,250);
      cxt.rotate(s*6*Math.PI/180);
      cxt.beginPath();
      cxt.arc(0,-60,2,0,360,false);
      cxt.stroke();
      cxt.fill();
      cxt.restore();
    }
    clock();
    timer = setInterval(clock,1000);
  </script>
</body>
</html>

canvas绘制表盘时钟的更多相关文章

  1. 用canvas绘制一个时钟

    实现一个时钟的绘制和时间的显示 一,首先是页面的搭建html部分以及一点点的css代码,因为css这块用的比较少,所以就没有单独出来: <!DOCTYPE html> <html l ...

  2. 使用canvas绘制一个时钟

    周末学习canvas的一些基础功能,顺带写了一个基础的时钟.现在加工一下,做的更好看一点,先放上效果图: 谈一些自己的理解: (1).要绘制一个新的样式(不想被其他样式影响,或者影响到其他样式),那么 ...

  3. canvas绘制简易时钟

    时钟绘制的非常简易,但该有的都有了. 效果图如下, <!DOCTYPE html> <html> <head lang="en"> <me ...

  4. 应用canvas绘制动态时钟--每秒自动动态更新时间

    使用canvas绘制时钟 下文是部分代码,完整代码参照:https://github.com/lemoncool/canvas-clock,可直接下载. 首先看一下效果图:每隔一秒会动态更新时间 一. ...

  5. html5、canvas绘制本地时钟

    效果图: 代码: <!DOCTYPE html> <html lang="en"> <head> <meta charset=" ...

  6. Python Turtle库绘制表盘时钟

    运行效果: 源代码: 1 # coding=utf-8 2 3 import turtle 4 from datetime import * 5 6 # 抬起画笔,向前运动一段距离放下 7 def S ...

  7. 使用canvas绘制时钟

    使用canvas绘制时钟  什么使canvas呢?HTML5 <canvas> 元素用于图形的绘制,通过脚本 (通常是JavaScript)来完成.<canvas> 标签只是图 ...

  8. HTML5 之Canvas 绘制时钟 Demo

    <!DOCTYPE html> <html> <head> <title>Canvas 之 时钟 Demo</title> <!--简 ...

  9. canvas绘制时钟及注释及save和restore的用法

    <!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8" ...

随机推荐

  1. AI基础概念

    基础概念 epoch:使用训练的全部数据对模型进行一次完整的训练,被成为“一代训练”.当一个完整的数据集通过了神经网络一次并且返回了一次,这个过程称为一次epoch.(也就是说,所有训练样本在神经网络 ...

  2. IIS 应用程序池回收(代码实现)

    回收 public void StartStopRecycleApp(string appName = "项目DLL名称", string method = "Recyc ...

  3. 【PAT甲级】1036 Boys vs Girls (25 分)

    题意: 输入一个正整数N(题干没指出范围,默认1e5可以AC),接下来输入N行数据,每行包括一名学生的姓名,性别,学号和分数.输出三行,分别为最高分女性学生的姓名和学号,最低分男性学生的姓名和学号,前 ...

  4. JS - 处理浏览器兼容之 event

    function test(e){ var event = e || windows.event   //  IE : windows.event  ,非IE : e }

  5. HIHOcoder编程总结

    [Offer收割]编程练习赛44 对于第一题题目1 : 扫雷游戏,首先要想清楚思路,虽然是暴力算法,但是这八个方向要自己把坐标写正确,不要慌乱,自己写的时候就写错了一个,第二个就是判断的时候,j + ...

  6. 118、Java中String类之取字符串长度

    01.代码如下: package TIANPAN; /** * 此处为文档注释 * * @author 田攀 微信382477247 */ public class TestDemo { public ...

  7. 4 ehcache 配置

    拷贝ehcache.xml文件到工程的resources目录下面 <?xml version="1.0" encoding="UTF-8"?> &l ...

  8. 怎样把exe程序注册成系统服务

    怎样把exe程序注册成系统服务 最近一段时间我们公司开发一款新的产品,要在服务器上运行一个服务端程序,为了方便我就希望能将这个程序注册成系统服务开机自动启动而不用每次重启系统都要手动启动程序.要实现这 ...

  9. Python 爬取 北京市政府首都之窗信件列表-[数据处理]

    日期:2020.01.24 博客期:132 星期五 [代码说明,如果要使用此页代码,必须在本博客页面评论区给予说明] //博客总体说明 1.准备工作 2.爬取工作 3.数据处理(本期博客) 4.信息展 ...

  10. UGUI 特效怎样在UI上裁剪

    刚好碰到有人问怎样把粒子特效放到 UI 上并且能正确被 Mask 裁剪, 首先想到给粒子效果的 Shader 添加模板模仿一般 UI 的模板方式, 应该就能正确裁剪了吧, 不过没那么简单, 我们看到在 ...