zoukankan      html  css  js  c++  java
  • canvas画时钟

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
      <style>
        canvas {
          border: 1px solid black;
          margin:10px auto;
        }
      </style>
    </head>
    <body>
    <canvas id="app" width="1000" height="500">你的浏览器不支持canvas,请升级你的浏览器</canvas>
    <script>
      window.onload = function(){
        let canvas = document.querySelector('#app')
        if(!canvas.getContext) return;
        //获得 2d 上下文对象
        let ctx = canvas.getContext('2d');
        ctx.fillStyle = "rgb(200,0,0)";
        let x = 20
        let y = 20
        let str = '2019-01-19 20:20:20'
        setInterval(function(){
          getTime(ctx,x,y)
        },1000)
    
        function getTime(ctx,x,y){
          let date = new Date(),//时间戳为10位需*1000,时间戳为13位的话不需乘1000
            Y = date.getFullYear() + '',
            M = (date.getMonth()+1 < 10 ? '0'+(date.getMonth()+1) : date.getMonth()+1),
            D = (date.getDate() < 10 ? '0'+(date.getDate()) : date.getDate()),
            h = (date.getHours() < 10 ? '0'+(date.getHours()) : date.getHours()),
            m = (date.getMinutes() < 10 ? '0'+(date.getMinutes()) : date.getMinutes()),
            s = (date.getSeconds() < 10 ? '0'+(date.getSeconds()) : date.getSeconds());
          let time =  Y +'-'+ M +'-'+ D +' '+ h +':'+ m +':'+ s
          drawString(ctx,x,y,time)
        }
        function drawString(ctx,x,y,str){
          ctx.clearRect(0,0,1000,500)
          for(let i=0;i<str.length;i++){
            drawNum(ctx,x+i*30,y,str[i])
          }
        }
        function drawNum(ctx,x,y,num){
          let iconShape = []
          num = isNaN(num) ? num : parseInt(num)
          switch (num) {
            case 0:
              iconShape = ["1111", "1001", "1001", "1001", "1111"]
              break
            case 1:
              iconShape = ["0010", "0110", "0010", "0010", "0111"]
              break
            case 2:
              iconShape = ["1111", "0001", "1111", "1000", "1111"]
              break
            case 3:
              iconShape = ["1111", "0001", "1111", "0001", "1111"]
              break
            case 4:
              iconShape = ["1010", "1010", "1111", "0010", "0010"]
              break
            case 5:
              iconShape = ["1111", "1000", "1111", "0001", "1111"]
              break
            case 6:
              iconShape = ["1111", "1000", "1111", "1001", "1111"]
              break
            case 7:
              iconShape = ["1111", "0001", "0001", "0001", "0001"]
              break
            case 8:
              iconShape = ["1111", "1001", "1111", "1001", "1111"]
              break
            case 9:
              iconShape = ["1111", "1001", "1111", "0001", "0001"]
              break
            case ':':
              iconShape = ["0000", "0010", "0000", "0010", "0000"]
              break
            case '-':
              iconShape = ["0000", "0000", "0110", "0000", "0000"]
              break
            case ' ':
              iconShape = ["0000", "0000", "0000", "0000", "0000"]
              break
            default:
              iconShape = []
          }
          drawIcon(ctx,x,y,iconShape)
        }
        function drawIcon(ctx,x,y,iconShape){
          for(let i = 0 ; i < iconShape.length ; i++ ){
            for(let j = 0;j < iconShape[i].length ;j++ ){
              if(iconShape[i][j] == 1){
                ctx.fillRect (x+j*6, y+i*6, 5, 5);
              }
            }
          }
        }
      }
    
    </script>
    </body>
    </html>
  • 相关阅读:
    mysql5.7 慢查底里失败的原因
    单体架构知识点及单体架构的缺陷
    分布式事务精华总结篇
    Kafka 消息丢失与消费精确一次性
    分布式柔性事务之最大努力通知事务详解
    Kafka面试题——20道Kafka知识点
    分布式柔性事务之事务消息详解
    奈学:数据湖有哪些缺点?
    奈学:数据湖和数据仓库的区别有哪些?
    了解概率知识,概率作为机器学习的底层逻辑
  • 原文地址:https://www.cnblogs.com/bluecaterpillar/p/11698288.html
Copyright © 2011-2022 走看看