使用canvas绘制时钟

window.onload=function(){

    var clock=document.getElementById("clock").getContext(‘2d‘);//通过获取canvas元素获取2d上下文

    var width=clock.canvas.width;//得到画布的宽度

    var height=clock.canvas.height;//得到花布的高度

    var r=width/2;//得到将要画的时钟的半径

    var prop=width/150;//在此保留比例,以便于在更换画布大小时调节

    function outline(){

        clock.save();//保存当前状态

        clock.translate(r,r);//将原点移动到(r,r)处

        clock.beginPath();//每个函数内部都要有beginPath()方法

        clock.lineWidth=3*prop;//通过lineWidth来设置划线的宽度,注意这里没有单位

        clock.arc(0,0,r-clock.lineWidth/2,0,2*Math.PI,false);

        clock.stroke();//绘制路径

        var scaleNumbers=[3,4,5,6,7,8,9,10,11,12,1,2];

        clock.font=12*prop+"px Arial";//通过font来设置字体的大小。关键:一定单位px,且后面一定要有字体样式

        clock.textAlign="center";//设置位水平居中

        clock.textBaseline="middle";//设置位垂直居中

    <strong>    scaleNumbers.forEach(function(number,i){//遍历数组

            var rad=2*Math.PI/12*i;

            var x=Math.cos(rad)*(r-15*prop);

            var y=Math.sin(rad)*(r-15*prop);

            clock.fillText(number,x,y);//在x y处绘制number

        });</strong>

        for(var i=0;i<=60;i++){

            var rad=2*Math.PI/60*i;

            var x=Math.cos(rad)*(r-7*prop);

            var y=Math.sin(rad)*(r-7*prop);

            clock.beginPath();

            if(i%5===0){

                clock.fillStyle="red";//填充的颜色

                clock.arc(x,y,1*prop,0,2*Math.PI,false);

            }else{

                clock.fillStyle="black";

                clock.arc(x,y,1*prop,0,2*Math.PI,false);

            }

            clock.fill();

        }

    }

    function hours(hour,minute){

        clock.save();//一定要先保存

        clock.beginPath();

        var rad=2*Math.PI/12*hour;

        var minute_rad=2*Math.PI/12/60*minute;

        clock.rotate(rad+minute_rad);

        clock.strokeStyle="blue";

        clock.lineCap="round";

        clock.lineWidth=5*prop;

        clock.moveTo(0,2*prop);

        clock.lineTo(0,-r+40*prop);

        clock.stroke();

        clock.restore();//恢复

    }

    function minutes(minute){

        clock.save();

        clock.beginPath();

        clock.strokeStyle="orange";//设置路径的颜色

        clock.lineWidth=4*prop;

        clock.lineCap="round";//设置线的样式

        var rad=2*Math.PI/60*minute;

        clock.rotate(rad);//旋转画布

        clock.moveTo(0,5*prop);//将“画笔”移动到(这里没有绘画)

        clock.lineTo(0,-r+25*prop);

        clock.stroke();

        clock.restore();

    }

    function seconds(second){

        clock.save();

        clock.beginPath();

        clock.fillStyle="red";

        var rad=2*Math.PI/60*second;

        clock.rotate(rad);

        clock.moveTo(-2*prop,5*prop);

        clock.lineTo(2*prop,5*prop);

        clock.lineTo(1*prop,-r+18*prop);

        clock.lineTo(3*prop,-r+18*prop);

        clock.lineTo(0,-r+10*prop);

        clock.lineTo(-3*prop,-r+18*prop);

        clock.lineTo(-1*prop,-r+18*prop);

        clock.fill();

        clock.restore();

    }

    function middle_dot(){

        clock.beginPath();

        clock.fillStyle="white";

        clock.arc(0,0,5*prop,0,2*Math.PI,false);

        clock.fill();

    }

    function all(){

        clock.clearRect(0,0,width,height);

        outline();

        middle_dot();

        var now=new Date();//通过Date对象获取时间

        var hour=now.getHours();//获取当前小时数

        var minute=now.getMinutes();

        var second=now.getSeconds();

        hours(hour,minute);

        minutes(minute);

        seconds(second);

        clock.restore();

    }

    all();

    setInterval(all,1000);//使用定时器不断更新时间

    

};

时间: 2024-12-22 09:17:50

使用canvas绘制时钟的相关文章

使用canvas绘制时钟并通过class面向对象

使用canvas绘制时钟并通过class面向对象 1.思路分析 钟表可分为静止的刻度和动态的指针两大部分由于指针具有动态性,必然需要定时器实时刷新清空并重绘但刻度部分如果一起清空并重绘会降低性能因此可以使用两个重叠在一起的canvas画板来分别绘制两个部分 2.绘制表盘步骤 2.1.首先获取第一个面板的上下文: var canvas1=document.getElementById("canvas1"); var ctx1=canvas1.getContext("2d&quo

小任务之Canvas绘制时钟

背景图的绘制(大圆.数字.小圆点) 掌握基础知识:圆的绘制(arc方法),关于圆的弧度的计算,数学中关于sin cos的用法 圆的弧度为2*Math.PI 12个数字分得弧度每个为2*Math.PI/12 那么rad=i*2*Math.PI/12 x=Math.cos(rad)*所需要的长度(也就是半径-差值) y=Math.sin(rad)*所需要的长度(也就是半径-差值) 同理可得60个点的绘制 60个数字分得弧度每个rad=i*2*Math.PI/60 x=Math.cos(rad)*所需

canvas绘制时钟

<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>canvas绘制钟表</title> <style type="text/css"> #canvas{ /*border: 2px solid red;*/ display: block; margin: 0 auto; } </style> </

HTML5 Canvas 绘制时钟

网上会看到很多绘制的时钟,看代码也是云里雾里,自学了下Canvas,觉得不难,就自己做了一个. 先看一下截图: 比较简陋,但是该有的都有了,样式只加了个阴影. html代码就不贴了,就一个canvas. <canvas id="clock" width="300" height="300"></canvas> 下面是JS实现: 1.取得上下文: var clock = document.getElementById('cl

用canvas绘制一个简易时钟

在见识了html5中canvas的强大,笔者准备制作一个简易时钟. 下面就是成果啦,制作之前我们先分析一下,绘制一个时钟需要做哪些准备. 一 . 1.首先这个时钟分为表盘,指针(时针,分针,秒针)和数字三部分. 2.表盘是个圆,这个简单. 3.绘制指针时,需要先获取到系统时间,然后找到时间和角度的关系. 4.然后利用画圆函数,把起始和终点设为同一角度,即可画出射线(指针).  二. 接下来,我们再分析一下,绘制时钟需要用到的函数. 1.arc(x, y, r, start, stop) x, y

应用canvas绘制动态时钟--每秒自动动态更新时间

使用canvas绘制时钟 下文是部分代码,完整代码参照:https://github.com/lemoncool/canvas-clock,可直接下载. 首先看一下效果图:每隔一秒会动态更新时间 一.前期准备 1. HTML中准备一个容器存放画布,并为其设置width,height. <div> <canvas id="clock" height="200px" width="200px"></canvas>

绘制时钟

  <!doctype html>   <html lang="en">   <head>   <meta charset="UTF-8">   <title>Canvas绘制时钟Demo</title>   <style>   #myCanvas{   border: 1px solid;   }   </style>   </head>   <bod

js绘制时钟

<!doctype html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Canvas绘制时钟Demo</title> <style> #myCanvas{ border: 1px solid; } </style> </head> <body> <canvas id=&quo

canvas绘制指针时钟

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>canvas时钟</title> </head> <body> <canvas id="c" width="300" height="300"></canv