码迷,mamicode.com
首页 > 其他好文 > 详细

Canvas之时钟

时间:2015-04-10 11:26:18      阅读:134      评论:0      收藏:0      [点我收藏+]

标签:

<!DOCTYPE html>
<html>
<head>
</head>
<body>
    <canvas id="clock" width="500" height="500">您的浏览器不支持Canvas标签,无法看到时钟
    </canvas>
    <script>
        var clock = document.getElementById('clock');
        var context = clock.getContext('2d');   //制作绘图环境,设置2d配置环境
        function drawClock() {
            context.clearRect(0, 0, 500, 500);//清除画布,不然画出的指针会累积
            var dateOfNow = new Date();
            var hour = dateOfNow.getHours();
            var second = dateOfNow.getSeconds();
            var minute = dateOfNow.getMinutes();

            hour = hour > 12 ? hour % 12 : hour;
            hour += minute / 60;
            //表盘
            context.lineWidth = 10;
            context.strokeStyle = "red"
            context.beginPath();
            /*
              第一个参数:圆心x坐标
              第二个参数:圆心y坐标
              第三个参数:半径
              第四个参数:开始角度
              第五个参数:结束角度
              第六个参数:false表逆时针画,true表顺时针画
            */
            context.arc(250, 250, 200, 0, 360, false);
            context.closePath();                  //只是命令,真正由stroke画
            context.stroke();
            //时刻度
            for (var i = 0; i < 12; i++) {
                context.save();                          //保存当前状态
                context.lineWidth = 7;                   //设置时针的粗细
                context.strokeStyle = "black";           //设置时针的颜色
                context.translate(250, 250);             //设置旋转圆心,(0,0)点
                context.rotate(i * (360 / 12) * Math.PI / 180);  //旋转弧度:角度*Math.PI/180
                context.beginPath();
                context.moveTo(0, -175);
                context.lineTo(0, -195);
                context.closePath();
                context.stroke();
                context.restore();                //把当前状态释放回来
            }
            //分刻度
            for (var i = 0; i < 60; i++) {         //绘制方法与时刻度的一样,改些参数就行了
                context.save();
                context.lineWidth = 4;
                context.strokeStyle = "black";
                context.translate(250, 250);
                context.rotate(i * (360 / 60) * Math.PI / 180);
                context.beginPath();
                context.moveTo(0, -185);
                context.lineTo(0, -195);
                context.closePath();
                context.stroke();
                context.restore();
            }
            //时针
            context.save();
            context.lineWidth = 7;
            context.strokeStyle = "black";
            context.translate(250, 250); //设置异次元空间的(0,0)点
            context.rotate(hour * 30 * Math.PI / 180);
            context.beginPath();
            context.moveTo(0, -135);
            context.lineTo(0, 10);
            context.closePath();
            context.stroke();
            context.restore();
            //分针
            context.save();
            context.lineWidth = 4;
            context.strokeStyle = "black";
            context.translate(250, 250);
            context.rotate(minute * 6 * Math.PI / 180);
            context.beginPath();
            context.moveTo(0, -155);
            context.lineTo(0, 20);
            context.closePath();
            context.stroke();
            context.restore();
            //秒针
            context.save();
            context.lineWidth = 3;
            context.strokeStyle = "red";
            context.translate(250, 250);
            context.rotate(second * 6 * Math.PI / 180);
            context.beginPath();
            context.moveTo(0, -180);
            context.lineTo(0, 20);
            context.closePath();
            context.stroke();
            //画秒针与时针、分针的交叉点
            context.beginPath();
            context.arc(0, 0, 5, 0, 360, false);//在异次元空间里圆心为(0,0)
            context.closePath();
            context.fillStyle = "black";//填充颜色
            context.fill();
            context.stroke();
            //秒针中间的小圆
            context.beginPath();
            context.arc(0, -110, 5, 0, 360, false);
            context.closePath();
            context.fillStyle = "white";
            context.fill();
            context.stroke();
            context.restore();
        }

        setInterval(drawClock, 1000);//刷新
    </script>
</body>
</html>

技术分享

Canvas之时钟

标签:

原文地址:http://blog.csdn.net/lindonglian/article/details/44976389

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!