一个简易时钟

一个简易时钟

//获取canvas
var canvas = document.querySelector("canvas");
//创建context对象
var ctx = canvas.getContext("2d");
function timer(){
    //清空已有的内容
    ctx.clearRect(0,0,510,510);
    //开始路径绘制
    ctx.beginPath();
    //绘制圆形路径
    ctx.arc(255,255,250,0,Math.PI*2,false);
    //结束路径
    ctx.closePath();
    //设置圆形的颜色
    ctx.strokeStyle = "black";
    //设置线条粗细
    ctx.lineWidth = 5;
    //根据路径绘制图形
    ctx.stroke();
    //保存画布未移动的状态
    ctx.save();
    //将画布原点移动到圆心
    ctx.translate(255,255);
    //循环画时针刻度
    for(var i = 0; i < 12; i++){
        //保存
        ctx.save();
        //先旋转画布(30°)
        // ctx.rotate(30*Math.PI/180);
        ctx.rotate(i*Math.PI/180*30);
        ctx.beginPath();
        ctx.moveTo(250,0);
        ctx.lineTo(230,0);
        ctx.closePath();
        //设置线端为圆形
        ctx.lineCap = "round";
        ctx.stroke();
        ctx.restore();
    }
    //循环分针刻度
    for(var j = 0; j < 60; j++){
        //每次旋转6°
        ctx.rotate(6*Math.PI/180);
        ctx.beginPath();
        ctx.moveTo(250,0);
        ctx.lineTo(240,0);
        ctx.closePath();
        ctx.lineWidth = 3;
        ctx.stroke();
    }
    //获取当前时间
    var date = new Date();
    //获取小时
    var hours = date.getHours();
    //获取分钟
    var minutes = date.getMinutes();
    //获取秒数
    var seconds = date.getSeconds();
    //画时针
    ctx.save();
    //根据时间获取时针旋转的角度
    ctx.rotate(Math.PI/180*hours*30-0.5*Math.PI+30/60*Math.PI/180*minutes);
    ctx.beginPath();
    ctx.moveTo(120,0);
    ctx.lineTo(-15,0);
    ctx.closePath();
    ctx.lineWidth = 5;
    ctx.stroke();
    ctx.restore();
    //画分针
    ctx.save();
    //根据时间获取分针旋转的角度
    ctx.rotate(minutes*(Math.PI/180)*6-0.5*Math.PI);
    ctx.beginPath();
    ctx.moveTo(170,0);
    ctx.lineTo(-15,0);
    ctx.closePath();
    ctx.lineWidth = 3;
    ctx.stroke();
    ctx.restore();
    //根据时间获取秒针旋转的角度
    ctx.save();
    ctx.rotate(seconds*(Math.PI/180)*6-0.5*Math.PI);
    ctx.beginPath();
    ctx.moveTo(190,0);
    ctx.lineTo(-15,0);
    ctx.closePath();
    ctx.strokeStyle = "red";
    ctx.lineWidth = 3;
    ctx.stroke();
    ctx.restore();

    ctx.restore();  //回到画布未移动时的位置
}
timer();
//自动绘制时钟
setInterval(timer,1000);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值