canvas做钟表

来源:互联网 发布:网络赌托该不该举报 编辑:程序博客网 时间:2024/05/17 02:38

<!DOCTYPE html>

<html>
<head>
<meta charset="utf-8">
<title>canvas做时钟</title>
<style type="text/css">
div{
text-align: center;
margin-top: 250px;
}
#clock{
border:1px solid #ccc;
}
</style>
</head>


<body >
<div>
<canvas id="clock" width="200px" height="200px"></canvas>
</div>
</body>
    <script type="text/javascript">
    var dom=document.getElementById("clock");
    var context=dom.getContext("2d");
    var width=context.canvas.width;
    var height=context.canvas.height;
    var r=width/2;
    var rem=width/200;




    function drawbackgroud(){
    context.save();
    context.translate(r,r);
    context.beginPath();
    context.lineWidth = rem * 4;
    context.arc(0,0,r - context.lineWidth / 2,0,2 * Math.PI,false);
    context.stroke();




    var hour = [3,4,5,6,7,8,9,10,11,12,1,2];
    context.font = 18*rem + 'px Aprial';
    context.textAlign = 'center';
    context.textBaseline = 'middle';


    hour.forEach(function(number,i){
    var rad = 2 * Math.PI / 12 * i;
    var x = Math.cos(rad) * (r - 30 * rem);
    var y = Math.sin(rad) * (r - 30 * rem);
    context.fillText(number,x,y);
    });


    for(var i = 0;i < 60;i++) {
    var rad = 2 * Math.PI / 60 * i;
    var x = Math.cos(rad) * (r - 18 * rem);
    var y = Math.sin(rad) * (r - 18 * rem);
    context.beginPath();
    if(i%5===0) {
    context.fillStyle="#000";
    context.arc(x,y,2*rem,0,2*Math.PI,false);
   
    } else {
    context.fillStyle="#ccc";
    context.arc(x,y,2*rem,0,2*Math.PI,false);
    }
    context.fill();


    }




    }




    function drawHour(hour,minute){
    context.save();
    context.beginPath();
    context.lineWidth=6*rem;
    context.lineCap="round";
    var rad = 2 * Math.PI/12*hour;
    var mrad = 2 * Math.PI/12/60*minute;
    context.rotate(rad + mrad );
    context.moveTo(0,10 * rem);
    context.lineTo(0,- r/2);
    context.stroke();
    context.restore();
    }




    function drawMinute(Minute){
    context.save();
    context.beginPath();
   
    context.lineWidth=4*rem;
    var rad = 2 * Math.PI / 60 * Minute;
    context.rotate(rad);
    context.lineCap="round";
    context.moveTo(0,10 * rem);
    context.lineTo(0,- r+ 30 *rem );
    context.stroke();
    context.restore();
    }




    function drawSecond(second){
    context.save();
    context.beginPath();
    context.fillStyle= '#c14543'
   
    var rad = 2 * Math.PI/60*second;
    context.rotate(rad);
    context.moveTo(-2,20);
    context.lineTo(2,20);
    context.lineTo(1,-r+18);
    context.lineTo(-1,-r+18)
    context.fill();
    context.restore();
    }




    function drawDot(){
    context.beginPath();
    context.fillStyle="#fff";
    context.arc(0,0,3,0,2*Math.PI,false);
    context.fill();
    }




    function draw(){
    context.clearRect(0,0,width,height);
    var now = new Date();
    var hour = now.getHours();
    var Minute = now.getMinutes();
    var second = now.getSeconds();
    drawbackgroud();
    drawHour(hour,Minute);
    drawMinute(Minute);
    drawSecond(second);
    drawDot();
    context.restore();
    }
    draw();
    setInterval(draw,1000);
    </script>
</html>
1 0
原创粉丝点击