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>
    </head>
    <body>
        <canvas id="canvas" width="600" height="600"></canvas>
    </body>
    <script type="text/javascript">
        var canvas=document.getElementById(‘canvas‘);
        var ctx=canvas.getContext(‘2d‘);
        //通过平移和旋转改变画笔的原始坐标位置和X轴和Y轴的方向
        ctx.translate(300,300);
        ctx.rotate(-Math.PI/2);//逆时针旋转90度
        //绘制表盘
        function drawDial () {
            //外层圆
            ctx.beginPath();
            ctx.arc(0,0,300,0,Math.PI*2,false);
            ctx.fillStyle=‘gold‘;
            ctx.fill();
            //内层圆
            ctx.beginPath();
            ctx.arc(0,0,280,0,Math.PI*2,false);
            ctx.fillStyle=‘white‘;
            ctx.fill();
        }
        //绘制刻度  时刻和分刻
        function drawScale () {
            for (var i=0;i<60;i++) {
                if (i%5==0) {
                    //绘制时刻 整点
                    ctx.beginPath();
                    ctx.moveTo(250,0);
                    ctx.lineTo(270,0);
                    ctx.lineWidth=10;

                    ctx.strokeStyle=‘black‘;
                    ctx.stroke();
                }else{
                    //绘制分刻   非整点
                    ctx.beginPath();
                    ctx.moveTo(255,0);
                    ctx.lineTo(270,0);
                    ctx.lineWidth=7;
                    ctx.strokeStyle=‘gray‘;
                    ctx.stroke();
                }
                //旋转6度
                ctx.rotate(Math.PI/180*6);
            }
        }
        //绘制时针,分针,秒针
        function drawTime () {
            var time=new Date();
            var hour=time.getHours();//时
            var minute=time.getMinutes();//分
            var second=time.getSeconds();//秒
            //调用save函数,保存当前的绘制状态
            ctx.save();

            //需要旋转角度(坐标轴)
            ctx.rotate(Math.PI/180*30*hour+
                Math.PI/180*minute
                /60*30);
            //绘制时针
                ctx.beginPath();
                ctx.moveTo(-20,0);
                ctx.lineTo(180,0);
                ctx.lineWidth=13;
                ctx.strokeStyle=‘black‘;
                ctx.stroke();
                //调用restore函数   移除自上一次调用save方法以来所添加的任何效果;也就是撤销之前的变化
                ctx.restore();
                //分针
                ctx.save();
                //旋转角度
                ctx.rotate(Math.PI/
                    180*6*minute+Math.PI/180*
                    second/60*6);
                //绘制分针
                ctx.beginPath();
                ctx.moveTo(-30,0);
                ctx.lineTo(210,0);
                ctx.lineWidth=8;
                ctx.strokeStyle=‘black‘;
                ctx.stroke();
                ctx.restore();
                //秒针
                ctx.save();
                ctx.rotate(Math.PI/180*6*second);
                ctx.beginPath();
                ctx.moveTo(-40,0);
                ctx.lineTo(260,0);
                ctx.strokeStyle=‘red‘;
                ctx.lineWidth=3;
                ctx.stroke();
                ctx.restore();
                //圆心点
                ctx.beginPath();
                ctx.arc(0,0,15,0,Math.PI*2,false);
                ctx.fillStyle=‘rgba(150,100,200,0.5)‘;
                ctx.fill();
        }
        //绘制钟表
        function drawClock () {
            drawDial();
            drawScale();
            drawTime();
            //根据刷新频率,调用方法
            window.requestAnimationFrame(drawClock);
        }
        drawClock();
    </script>
</html>
时间: 2024-10-12 14:31:55

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绘制时钟

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=

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