本文實例講述了javascript+HTML5 canvas繪制時鐘功能。分享給大家供大家參考,具體如下:
效果如下:
代碼:
<!DOCTYPE html><html><head lang="en"> <meta charset="UTF-8"> <title>www.49028c.com canvas繪制時鐘</title> <style> div{text-align:center;margin-top:250px;} </style></head><body><div> <canvas id="clock" width="300px" height="300px"></canvas></div><script> var dom=document.getElementById("clock"); var ctx=dom.getContext("2d"); var width=ctx.canvas.width; var height=ctx.canvas.height; var r=width/2; var rem=width/200; function drawBackground(){ ctx.save(); ctx.translate(r,r);//重新定義圓點到中心 ctx.beginPath(); ctx.lineWidth=10*rem; ctx.arc(0,0,r-5*rem,0,Math.PI*2,false);//圓點坐標,起始角0,結束角2π,順時針 ctx.stroke(); var hourNum=[3,4,5,6,7,8,9,10,11,12,1,2];//數組存小時數 ctx.font="18px Arial"; ctx.textAlign="center"; ctx.textBaseline="middle"; hourNum.forEach(function (num,i) { var rad=2*Math.PI/12*i;//弧度 var x=(r-30*rem)*Math.cos(rad); var y=(r-30*rem)*Math.sin(rad); ctx.fillText(num,x,y); }); for(var i=0;i<60;i++){//畫圓點 var rad=2*Math.PI/60*i; var x=(r-18*rem)*Math.cos(rad); var y=(r-18*rem)*Math.sin(rad); ctx.beginPath(); if(i%5==0){ ctx.fillStyle="#000"; ctx.arc(x,y,2,0,Math.PI*2,false); } else{ ctx.fillStyle="#ccc"; ctx.arc(x,y,2,0,Math.PI*2,false); } ctx.fill(); } ctx.closePath(); } function drawHour(hour,minute){//時針 ctx.save(); ctx.beginPath(); var rad=2*Math.PI/12*hour; var mrad=2*Math.PI/12/60*minute; ctx.rotate(rad+mrad); ctx.lineWidth=6*rem; ctx.moveTo(0,10*rem); ctx.lineTo(0,-r/2); ctx.lineCap="round"; ctx.stroke(); ctx.restore(); } function drawMinute(minute,second){//分針 ctx.save(); ctx.beginPath(); var rad=2*Math.PI/60*minute; var srad=2*Math.PI/60/60*second; ctx.rotate(rad+srad); ctx.lineWidth=3*rem; ctx.moveTo(0,10*rem); ctx.lineTo(0,-r+30*rem); ctx.lineCap="round"; ctx.stroke(); ctx.restore(); } function drawSecond(second){//秒針 ctx.save(); ctx.beginPath(); ctx.fillStyle="#c14543"; var rad=2*Math.PI/60*second; ctx.rotate(rad); ctx.moveTo(-2*rem,20*rem); ctx.lineTo(2*rem,20*rem); ctx.lineTo(1*rem,-r+18*rem); ctx.lineTo(-1*rem,-r+18*rem); ctx.fill(); ctx.restore(); } function drawDot(){//畫中心圓圈 ctx.beginPath(); ctx.fillStyle="#fff"; ctx.arc(0,0,3*rem,0,2*Math.PI,false); ctx.fill(); } function draw(){ ctx.clearRect(0,0,width,height); var now=new Date(); var hour=now.getHours(); var minute=now.getMinutes(); var second=now.getSeconds(); drawBackground();//背景 drawHour(hour,minute);//小時 drawMinute(minute,second);//分鐘 drawSecond(second);//秒鐘 drawDot();//中心圓點 ctx.restore(); } setInterval(draw,1000);</script></body></html>
其中的rem值是為了使canvas畫布大小變化時時鐘的樣式能夠保持
希望本文所述對大家JavaScript程序設計有所幫助。
新聞熱點
疑難解答