1. 程式人生 > >canvas繪製動態電子錶

canvas繪製動態電子錶

電子錶線上地址:點選開啟連結

電子時鐘截圖


動態電子錶實現思路

1.利用陣列繪製不規則圖形
  需要繪製的圖形有 0 1 2 3 4 5 6 7 8 9 :
  要繪製的圖形陣列為[0,0,1,1,1,0,0],
                    [0,1,1,0,1,1,0],
                    [1,1,0,0,0,1,1],
                    [1,1,0,0,0,1,1],
                    [1,1,0,0,0,1,1],
                    [1,1,0,0,0,1,1],
                    [1,1,0,0,0,1,1],
                    [1,1,0,0,0,1,1],
                    [0,1,1,0,1,1,0],
                    [0,0,1,1,1,0,0],
  故需要一個三維陣列,也即11個七列十行的二維陣列
2.藉助 canvas 繪製 
      2.1把三維數組裡面的1轉換為小圓點(arc)
      2.2確立繪製圓點座標半徑.設小圓的半徑為R,這直徑為2R,每個小圓的邊距為1
         則有一個數字所佔寬為7*(2R+2),高為10*(2R+2)
      2.3時間格式為00:00:00,令R==4,讓每個數字之間距離為15,那麼畫布寬為8*100=800,高為100
      2.4確定第一個圖形陣列內(i,j)的圓心座標為((2j+1)*(R+1),(2i+1)*(R+1))
         第n個圖形的圓點座標為(100*index+x,y),x,y為上述圓心座標
      2.5畫出圓形context.arc(100*index+(2j+1)*(R+1),(2i+1)*(R+1),R,2*Math.PI,false)
3.獲取時間

     1.時間物件Date獲取當前時間,並通過正則取出每個數字

程式碼:

<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>電子時鐘</title>
	<style type="text/css">
		body{margin:0;padding:0;}
		#canvas{display:block;
			margin:300px auto 0;
		}


	</style>
</head>
<body>
	<canvas id="canvas" width="800" height="100"></canvas>
	<script type="text/javascript">
		var num=
    [
        [
            [0,0,1,1,1,0,0],
            [0,1,1,0,1,1,0],
            [1,1,0,0,0,1,1],
            [1,1,0,0,0,1,1],
            [1,1,0,0,0,1,1],
            [1,1,0,0,0,1,1],
            [1,1,0,0,0,1,1],
            [1,1,0,0,0,1,1],
            [0,1,1,0,1,1,0],
            [0,0,1,1,1,0,0]
        ],//0
        [
            [0,0,0,1,1,0,0],
            [0,1,1,1,1,0,0],
            [0,0,0,1,1,0,0],
            [0,0,0,1,1,0,0],
            [0,0,0,1,1,0,0],
            [0,0,0,1,1,0,0],
            [0,0,0,1,1,0,0],
            [0,0,0,1,1,0,0],
            [0,0,0,1,1,0,0],
            [1,1,1,1,1,1,1]
        ],//1
        [
            [0,1,1,1,1,1,0],
            [1,1,0,0,0,1,1],
            [0,0,0,0,0,1,1],
            [0,0,0,0,1,1,0],
            [0,0,0,1,1,0,0],
            [0,0,1,1,0,0,0],
            [0,1,1,0,0,0,0],
            [1,1,0,0,0,0,0],
            [1,1,0,0,0,1,1],
            [1,1,1,1,1,1,1]
        ],//2
        [
            [1,1,1,1,1,1,1],
            [0,0,0,0,0,1,1],
            [0,0,0,0,1,1,0],
            [0,0,0,1,1,0,0],
            [0,0,1,1,1,0,0],
            [0,0,0,0,1,1,0],
            [0,0,0,0,0,1,1],
            [0,0,0,0,0,1,1],
            [1,1,0,0,0,1,1],
            [0,1,1,1,1,1,0]
        ],//3
        [
            [0,0,0,0,1,1,0],
            [0,0,0,1,1,1,0],
            [0,0,1,1,1,1,0],
            [0,1,1,0,1,1,0],
            [1,1,0,0,1,1,0],
            [1,1,1,1,1,1,1],
            [0,0,0,0,1,1,0],
            [0,0,0,0,1,1,0],
            [0,0,0,0,1,1,0],
            [0,0,0,1,1,1,1]
        ],//4
        [
            [1,1,1,1,1,1,1],
            [1,1,0,0,0,0,0],
            [1,1,0,0,0,0,0],
            [1,1,1,1,1,1,0],
            [0,0,0,0,0,1,1],
            [0,0,0,0,0,1,1],
            [0,0,0,0,0,1,1],
            [0,0,0,0,0,1,1],
            [1,1,0,0,0,1,1],
            [0,1,1,1,1,1,0]
        ],//5
        [
            [0,0,0,0,1,1,0],
            [0,0,1,1,0,0,0],
            [0,1,1,0,0,0,0],
            [1,1,0,0,0,0,0],
            [1,1,0,1,1,1,0],
            [1,1,0,0,0,1,1],
            [1,1,0,0,0,1,1],
            [1,1,0,0,0,1,1],
            [1,1,0,0,0,1,1],
            [0,1,1,1,1,1,0]
        ],//6
        [
            [1,1,1,1,1,1,1],
            [1,1,0,0,0,1,1],
            [0,0,0,0,1,1,0],
            [0,0,0,0,1,1,0],
            [0,0,0,1,1,0,0],
            [0,0,0,1,1,0,0],
            [0,0,1,1,0,0,0],
            [0,0,1,1,0,0,0],
            [0,0,1,1,0,0,0],
            [0,0,1,1,0,0,0]
        ],//7
        [
            [0,1,1,1,1,1,0],
            [1,1,0,0,0,1,1],
            [1,1,0,0,0,1,1],
            [1,1,0,0,0,1,1],
            [0,1,1,1,1,1,0],
            [1,1,0,0,0,1,1],
            [1,1,0,0,0,1,1],
            [1,1,0,0,0,1,1],
            [1,1,0,0,0,1,1],
            [0,1,1,1,1,1,0]
        ],//8
        [
            [0,1,1,1,1,1,0],
            [1,1,0,0,0,1,1],
            [1,1,0,0,0,1,1],
            [1,1,0,0,0,1,1],
            [0,1,1,1,0,1,1],
            [0,0,0,0,0,1,1],
            [0,0,0,0,0,1,1],
            [0,0,0,0,1,1,0],
            [0,0,0,1,1,0,0],
            [0,1,1,0,0,0,0]
        ],//9
        [
            [0,0,0,0,0,0,0],
            [0,0,1,1,1,0,0],
            [0,0,1,1,1,0,0],
            [0,0,1,1,1,0,0],
            [0,0,0,0,0,0,0],
            [0,0,0,0,0,0,0],
            [0,0,1,1,1,0,0],
            [0,0,1,1,1,0,0],
            [0,0,1,1,1,0,0],
            [0,0,0,0,0,0,0]
        ]//:
    ];
	</script>
	<script type="text/javascript">
		var draw=document.getElementById('canvas');
		var context=draw.getContext('2d');
		function drawNum(index,n){
			for(var i=0;i<num[n].length;i++){
				for(var j=0;j<num[n][i].length;j++){
                   if(num[n][i][j]=='1'){
                   	context.beginPath();
                   	context.fillStyle="#5c1414";
                   	context.arc(index*100+j*2*(4+1)+(4+1),i*2*(4+1)+(4+1),4,2*Math.PI,false);
                   	context.closePath();
					context.fill();//填充*/
                   }
				}
			}

		}
		function getTime(){
				var temp=/(\d)(\d):(\d)(\d):(\d)(\d)/.exec(new Date);
				var data=[];
				data.push(temp[1],temp[2],10,temp[3],temp[4],10,temp[5],temp[6]);
				for(var i=0;i<data.length;i++){
					drawNum(i,data[i]);
				}
		}
		getTime();
		setInterval(function(){
            context.clearRect(0,0,800,100);
            getTime();
		},1000)
	</script>
</body>
</html>