HTML5的canvas数字时钟可放大缩小

首先我们需要先创建一个三维数组的javascript文件

digit =
    [
        [
            [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,0],
            [0,1,1,0],
            [0,0,0,0],
            [0,0,0,0],
            [0,1,1,0],
            [0,1,1,0],
            [0,0,0,0],
            [0,0,0,0]
        ]//:
    ];

下面就是数字时钟的正文部分了:

<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>canvas</title>
	<script src="digit.js"></script>   
	<!-- 连接三维数组的JavaScript文件 -->
</head>
<body>
	<!-- 设置画布宽高及样式 -->
	<canvas id="canvas" width="800" height="200" style="border: 1px solid #ccc">
		您当前浏览器不支持canvas功能
	</canvas>

	<script>
		

		var mycanvas = document.getElementById('canvas');  //通过ID获取画布并赋值给mycanvas
		var ctx = mycanvas.getContext("2d");  //表明绘制2d图形

		//获取画布的宽高
		var width = ctx.canvas.width;
		var height = ctx.canvas.height;

		//设置rem为canvas缩放比率
		var rem = height/200;

		//定义粒子半径,调正画布在浏览器中的位置(随时钟大小变化而变化)
		var r = 6;
		var MarginTop = 40 * rem;
		var MarginLeft = 20 * rem;


		//利用函数遍历三维粒子数组 digit
		function digitRend(mx,my,num,ctx)
		{
			ctx.save();  //保存画布
			for(var i=0;i<digit[num].length;i++)
			{
				for(var j=0;j<digit[num][i].length;j++)
				{
					if(digit[num][i][j] == 1)
					{
						ctx.beginPath();  //开始绘制路径
						//绘制粒子
						ctx.arc(mx+j*2*(r+1)*rem+(r+1)*rem,my+i*2*(r+1)*rem+(r+1)*rem,r*rem,0,2*Math.PI);
						ctx.fillStyle = "red";  //粒子颜色设置
						ctx.fill();  //绘制填充
					}
				}
			}
			ctx.restore();  //调整画布(一般与ctx.save()成对)
		}
		

		function draw()
		{
			//清除画布
			ctx.clearRect(MarginLeft*rem,MarginTop*rem,width*rem,height*rem);
			// 获取当前时间
			var now = new Date();
			var hour = now.getHours();
			var minute = now.getMinutes();
			var second = now.getSeconds();

			//输出小时时间数字   parseInt()取整方法
			digitRend(MarginLeft,MarginTop,parseInt(hour/10),ctx);
			digitRend(MarginLeft+15*(r+1)*rem,MarginTop,parseInt(hour%10),ctx);
			//中间冒号
			digitRend(MarginLeft+30*(r+1)*rem,MarginTop,10,ctx);
			//输出分钟时间数字
			digitRend(MarginLeft+39*(r+1)*rem,MarginTop,parseInt(minute/10),ctx);
			digitRend(MarginLeft+54*(r+1)*rem,MarginTop,parseInt(minute%10),ctx);
			//中间冒号
			digitRend(MarginLeft+69*(r+1)*rem,MarginTop,10,ctx);
			//输出秒钟时间数字
			digitRend(MarginLeft+78*(r+1)*rem,MarginTop,parseInt(second/10),ctx);
			digitRend(MarginLeft+93*(r+1)*rem,MarginTop,parseInt(second%10),ctx);
		}
		draw();  //调用函数
        setInterval(draw,1000);  //调用函数 每隔1000毫秒进行动画
		

	</script>
</body>
</html>

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值