美文网首页
canvas 画时钟

canvas 画时钟

作者: 小碎步快跑 | 来源:发表于2018-12-13 15:35 被阅读0次
直接运行即可:
<!DOCTYPE html>

<html>

<head>

  <meta charset="utf-8">

</head>

<body>

<canvas id="myCanvas" width="200" height="200" style="border:1px solid #c3c3c3;">

</canvas>

<span id="mySpan"></span>

<script>

//getMX表示根据度数和指针的半径获得x的相对坐标

  function getMX(deg, r) {

    var tan = Math.abs(Math.tan(deg * Math.PI / 180));

    return r * tan / Math.sqrt((1 + tan * tan));

  }

  function getY(x, r) {

    return Math.sqrt(r * r - x * x)

  }

//getRealX就是获得绝对坐标

  function getRealX(dgree, x) {

    if (dgree <= 180) {

      return R + x;

    } else {

      return R - x;

    }

  }

  function getRealY(dgree, y) {

    if (dgree < 90 || dgree > 270) {

      return R - y;

    } else {

      return R + y;

    }

  }

  function drawText() {

    ctx.strokeText("12", 100, 15);

    ctx.strokeText("3", 185, 100);

    ctx.strokeText("6", 100, 185);

    ctx.strokeText("9", 15, 100);

    ctx.textAlign="center";

    ctx.font="20px sans-serif ";

  }

  var c = document.getElementById("myCanvas");

  var ctx = c.getContext("2d");

  var R = 100;

  //ctx.fillStyle = "#FF0000";

  // ctx.fillRect(0, 0, 150, 75);

  function draw() {

    ctx.clearRect(0, 0, 200, 200);

    // 获取当前时间

    var date = new Date();

    var mr = 70;

    var hr = 50;

    var sr = 90;

  // 分针对应的度数

    var mDgree = date.getMinutes() * 6;

    // mx 分针对应的X轴的坐标

    var mx = getMX(mDgree, mr);

    // my 分针对应的Y轴的坐标

    var my = getY(mx, mr);

    var hDgree = date.getHours() * 30 + date.getMinutes() / 60 * 30;

    // hx 时针对应的X轴的坐标

    var hx = getMX(hDgree, hr);

    // hy 时针对应的Y轴的坐标

    var hy = getY(hx, hr);

    var sDgree = date.getSeconds() * 6;

    // sx 秒针对应的X轴的坐标

    var sx = getMX(sDgree, sr);

    // sy 秒针对应的Y轴的坐标

    var sy = getY(sx, sr);

    mx = getRealX(mDgree, mx);

    my = getRealY(mDgree, my);

    hx = getRealX(hDgree, hx);

    hy = getRealY(hDgree, hy);

    sx = getRealX(sDgree, sx);

    sy = getRealY(sDgree, sy);

    ctx.beginPath();

    ctx.arc(R, R, R, 0, 2 * Math.PI);

    ctx.stroke();

    ctx.moveTo(R, R);

    ctx.lineTo(mx, my);

    ctx.stroke();

    ctx.moveTo(R, R);

    ctx.lineTo(hx, hy);

    ctx.stroke();

    ctx.moveTo(R, R);

    ctx.lineTo(sx, sy);

    ctx.stroke();

    drawText();

    document.getElementById('mySpan').innerHTML = "seconds:" + date.getSeconds() + ", degree:"

        + sDgree + ", sx:" + sx + ",sy:" + sy;

  }

  //draw();

  setInterval(draw, 1000);

</script>

</body>

</html>

相关文章

  • canvas画时钟

    html: js: var dom = $("#clock"); var ctx = dom[0].getCont...

  • Canvas 画时钟

    前言 不管学习什么,不动手去做,永远不能熟练掌握。学习了 canvas API,会觉得只要按照直线、圆等画法去画,...

  • canvas 画时钟

    直接运行即可:

  • canvas入门-小时钟

    canvas入门-小时钟

  • canvas时钟

    var oc = document.getElementById("c1"); var ogc = oc.getC...

  • canvas时钟

    先来看一下效果图 下面是代码 哈哈哈 时钟 #clock{/border...

  • canvas时钟

  • HTML5中canvas使用

    1、Canvas基础 2、Canvas画直线 3、Canvas画矩形 4、Canvas画文字 5、Canvas画圆...

  • canvas绘制时钟

  • canvas绘制时钟

    这里简单了利用canvas做了一个时钟,样式配的比较难看主要讲了这么实现功能集体的细节根据自己的喜好来调试,请读者...

网友评论

      本文标题:canvas 画时钟

      本文链接:https://www.haomeiwen.com/subject/uphbhqtx.html