HTML5制作时钟(canvas)

废话不多说直接代码:
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title></title>
</head>
<body>
<canvas id="clock" width="500" height="500">您的浏览器不支持canvas</canvas>
    <script>    
        var clock = document.getElementById('clock');
        var cxt = clock.getContext('2d');
        function Draw() {
            //清楚画布
            cxt.clearRect(0,0,500,500)
            var now = new Date();
            var sec = now.getSeconds();
            var mute = now.getMinutes();
            var hour = now.getHours();
            //小时必须浮点类型
            hour = hour + mute / 60;
            //问题时间格式
            //将24小时进制转换为12小时
            hour = hour > 12 ? hour - 12 : hour;
            //表盘
            cxt.lineWidth = 10;
            cxt.strokeStyle = "blue";
            cxt.beginPath();
            //250,250表示圆心的位置,200半径,0,360画圆的角度,最后一个参数是正画还是反画
            cxt.arc(250,250,200,0,360,false)
            cxt.closePath();
            cxt.stroke();
            //刻度(时分秒)
            //时刻度
            for (var i = 0; i < 12; i++) {
                cxt.save();//保存当前状态
                cxt.lineWidth = 7;//设置时针的粗细
                cxt.strokeStyle = "#000";
                //先设置原点,
                cxt.translate(250, 250);
                //再设置旋转角度
                cxt.rotate(i * 30 * Math.PI / 180);//角度*Math.PI/180=弧度
                cxt.beginPath();
                cxt.moveTo(0, -170);
                cxt.lineTo(0,-190);
                cxt.closePath();
                cxt.stroke();
                cxt.restore();//将当前的状态释放出来
            }
            //分刻度
            for (var i = 0; i < 60; i++) {
                cxt.save();
                //设置分刻度的粗细
                cxt.lineWidth = 5;
                //颜色使用时刻度的颜色
                cxt.strokeStyle = "#000";
                //设置或者重置画布的零点
                cxt.translate(250, 250);
                //设置旋转角度
                cxt.rotate(i * 6 * Math.PI / 180)
                //画分针刻度
                cxt.beginPath();
                cxt.moveTo(0, -180);
                cxt.lineTo(0,-190);
                cxt.closePath();
                cxt.stroke();
                cxt.restore();
            }
            cxt.save();
            //时针
            //设置时针风格
            cxt.lineWidth = 7;
            cxt.strokeStyle = "#000";
            //设置异次元原点
            cxt.translate(250, 250);
            //设置旋转角度
            cxt.rotate(hour*30*Math.PI/180);
            cxt.beginPath();
            cxt.moveTo(0, -150);
            cxt.lineTo(0,10);
            cxt.closePath();
            cxt.stroke();
            cxt.restore();
            //画分针
            cxt.save();
            //设置样式
            cxt.lineWidth = 5;
            cxt.strokeStyle = "#000";
            cxt.translate(250, 250);
            cxt.rotate(mute*6* Math.PI / 180);
            cxt.beginPath();
            cxt.moveTo(0,-160);
            cxt.lineTo(0,15);
            cxt.closePath();
            cxt.stroke();
            cxt.restore();
            //设置秒针
            cxt.save();
            cxt.strokeStyle = "red";
            cxt.lineWidth = 3;
            cxt.translate(250, 250);
            cxt.rotate(sec*6 * Math.PI / 180);
            cxt.beginPath();
            cxt.moveTo(0, -170);
            cxt.lineTo(0,20);
            cxt.closePath();
            cxt.stroke();
            //画出交叉点
            cxt.beginPath();
            cxt.arc(0, 0, 5, 0,360, false);
            cxt.fillStyle = "gray";
            cxt.fill();
            cxt.closePath();
            //设置填充样式
            
            cxt.stroke();
            cxt.restore();
          
        }
  //使用定时函数
 setInterval(Draw,1000); </script></body></html>来张图:(略丑,是非常丑)


posted @ 2018-06-21 16:54  HPUGIS  阅读(355)  评论(0编辑  收藏  举报