rss· 投稿· 设为首页· 加入收藏· 繁體版
当前位置: 火魔网 » 程序开发 » HTML5

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>html5 canvas元素画时钟</title>
<script type="text/javascript">

function init(){ 
 clock(); 
 setInterval(clock,1000); 

function clock(){ 
 var now = new Date(); 
 var ctx = document.getElementById('myCanvas').getContext('2d'); 
 ctx.save(); 
 ctx.clearRect(0,0,150,150); 
 ctx.translate(75,75); 
 ctx.scale(0.4,0.4); 
 ctx.rotate(-Math.PI/2); 
 ctx.strokeStyle = "black"; 
 ctx.fillStyle = "white"; 
 ctx.lineWidth = 8; 
 ctx.lineCap = "round"; 
 
 // Hour marks 
 ctx.save(); 
 for (var i=0;i<12;i++){ 
   ctx.beginPath(); 
   ctx.rotate(Math.PI/6); 
   ctx.moveTo(100,0); 
   ctx.lineTo(120,0); 
   ctx.stroke(); 
 } 
 ctx.restore(); 
 
 // Minute marks 
 ctx.save(); 
 ctx.lineWidth = 5; 
 for (i=0;i<60;i++){ 
   if (i%5!=0) { 
  ctx.beginPath(); 
  ctx.moveTo(117,0); 
  ctx.lineTo(120,0); 
  ctx.stroke(); 
   } 
   ctx.rotate(Math.PI/30); 
 } 
 ctx.restore(); 
  
 var sec = now.getSeconds(); 
 var min = now.getMinutes(); 
 var hr  = now.getHours(); 
 hr = hr>=12 ? hr-12 : hr; 
 
 ctx.fillStyle = "black"; 
 
 // write Hours 
 ctx.save(); 
 ctx.rotate( hr*(Math.PI/6) + (Math.PI/360)*min + (Math.PI/21600)*sec ) 
 ctx.lineWidth = 14; 
 ctx.beginPath(); 
 ctx.moveTo(-20,0); 
 ctx.lineTo(80,0); 
 ctx.stroke(); 
 ctx.restore(); 
 
 // write Minutes 
 ctx.save(); 
 ctx.rotate( (Math.PI/30)*min + (Math.PI/1800)*sec ) 
 ctx.lineWidth = 10; 
 ctx.beginPath(); 
 ctx.moveTo(-28,0); 
 ctx.lineTo(112,0); 
 ctx.stroke(); 
 ctx.restore(); 
  
 // Write seconds 
 ctx.save(); 
 ctx.rotate(sec * Math.PI/30); 
 ctx.strokeStyle = "#D40000"; 
 ctx.fillStyle = "#D40000"; 
 ctx.lineWidth = 6; 
 ctx.beginPath(); 
 ctx.moveTo(-30,0); 
 ctx.lineTo(83,0); 
 ctx.stroke(); 
 ctx.beginPath(); 
 ctx.arc(0,0,10,0,Math.PI*2,true); 
 ctx.fill(); 
 ctx.beginPath(); 
 ctx.arc(95,0,10,0,Math.PI*2,true); 
 ctx.stroke(); 
 ctx.fillStyle = "#555"; 
 ctx.arc(0,0,3,0,Math.PI*2,true); 
 ctx.fill(); 
 ctx.restore(); 
 
 ctx.beginPath(); 
 ctx.lineWidth = 14; 
 ctx.strokeStyle = '#325FA2'; 
 ctx.arc(0,0,142,0,Math.PI*2,true); 
 ctx.stroke(); 
 
 ctx.restore(); 

</script>

</head>

<body onLoad="init();">

<canvas id="myCanvas" width="300px" height="300px">
您的浏览器目前不支持画布元素,请使用Firfox或Chrome浏览。

</canvas>

</body>

顶一下
(0)
踩一下
(0)