zoukankan      html  css  js  c++  java
  • 新年第一个目标一张表盘串讲所有canves的知识点

    我们的目标

    • 首先是canves的坐标系统,基于浏览器的左上角为原点,x,y轴为正方向的坐标系统。

    • 首先初始化,打标签

       <canvas id="canvas" height="400" width="400"></canvas>

    • 然后我们获取到 canvas 对象。

    var canvas = document.getElementById('canvas');
    var context = canvas.getContext('2d');

    • 绘制圆弧

    context.beginPath();
    //x,y,r,from,to
    context.arc(200, 200, 120, 0, 2 * Math.PI);
    context.stroke();

    • 绘制数字

    for (var a = 1; a < 13; a++) {
    context.save();
    context.font = "20px Microsoft YaHei UI";
    context.textAlign = 'center';
    context.textBaseline = "middle";
    context.translate(
    200 + 100 * (Math.sin(Math.PI * 2 / 12 * a)),
    200 - 100 * (Math.cos(Math.PI * 2 / 12 * a)));
    context.rotate(2 * Math.PI / 12 * a);
    context.fillText(a, 0, 0);
    context.restore()
    }

    绘制数字比较难,我们进行讲解。

    保存现场

     context.save();

    我们需要算出1点的的坐标位置。

    其中200,200是圆心。100是半径

    200 + 100 * (Math.sin(Math.PI * 2 / 12 * a)),
    200 - 100 * (Math.cos(Math.PI * 2 / 12 * a)));

    我们把坐标系平移到这来。将0 0 点移动到这来。

    context.translate(
    200 + 100 * (Math.sin(Math.PI * 2 / 12 * a)),
    200 - 100 * (Math.cos(Math.PI * 2 / 12 * a)));

    我们进行旋转。

      context.rotate(2 * Math.PI / 12 * a);

    最后绘制并恢复原位

    context.fillText(a, 0, 0);
    context.restore();

    最后我们强调。

    context.save();

    context.restore();

    是成双成对出现的。 

  • 相关阅读:
    C# MQTT M2MQTT
    C# MethodInvoker委托的使用
    linux打包/解压-tar
    linux挂载查看、添加与取消
    IE6、火狐不支持a:visited
    js和jquery中的触发事件
    MySQL5.7.9免安装版配置方法
    mysql数据库在Navicat Premium连接的时候出现1862错误
    mysql max_allowed_packet查询和修改
    服务器是windows时tomcat无法打印所有日志配置修改
  • 原文地址:https://www.cnblogs.com/sexintercourse/p/10206391.html
Copyright © 2011-2022 走看看