zoukankan      html  css  js  c++  java
  • 09-canvas绘制坐标系

     1 <!DOCTYPE html>
     2 <html lang="en">
     3 <head>
     4     <meta charset="UTF-8">
     5     <title>09-Canvas绘制坐标系</title>
     6     <style>
     7         *{
     8             margin: 0;
     9             padding: 0;
    10         }
    11         canvas{
    12             display: block;
    13             margin: 0 auto;
    14             background: red;
    15         }
    16     </style>
    17 </head>
    18 <body>
    19 <canvas width="500" height="400"></canvas>
    20 <script>
    21     // 1.拿到canvas
    22     let oCanvas = document.querySelector("canvas");
    23     // 2.从canvas中拿到绘图工具
    24     let oCtx = oCanvas.getContext("2d");
    25     // 3.定义变量保存小方格的尺寸
    26     let gridSize = 50;
    27     // 4.拿到canvas的宽高
    28     let canvasWidth = oCtx.canvas.width;
    29     let canvasHeight = oCtx.canvas.height;
    30     // 5.计算在垂直方向和水平方向可以绘制多少条横线
    31     let row = Math.floor(canvasHeight / gridSize);
    32     let col = Math.floor(canvasWidth / gridSize);
    33     // 6.绘制垂直方向的横线
    34     for(let i = 0; i < row; i++){
    35         oCtx.beginPath();
    36         oCtx.moveTo(0, i * gridSize - 0.5);
    37         oCtx.lineTo(canvasWidth, i * gridSize - 0.5);
    38         oCtx.strokeStyle = "#ccc";
    39         oCtx.stroke();
    40     }
    41     // 7.绘制水平方向的横线
    42     for(let i = 0; i < col; i++){
    43         oCtx.beginPath();
    44         oCtx.moveTo(i * gridSize - 0.5, 0);
    45         oCtx.lineTo(i * gridSize - 0.5, canvasHeight);
    46         oCtx.strokeStyle = "#ccc";
    47         oCtx.stroke();
    48     }
    49 
    50     // 1.计算坐标系原点的位置
    51     let originX = gridSize;
    52     let originY = canvasHeight - gridSize;
    53     // 2.计算X轴终点的位置
    54     let endX = canvasWidth - gridSize;
    55     // 3.绘制X轴
    56     oCtx.beginPath();
    57     oCtx.moveTo(originX, originY);
    58     oCtx.lineTo(endX, originY);
    59     oCtx.strokeStyle = "#000";
    60     oCtx.stroke();
    61     // 4.绘制X轴的箭头
    62     oCtx.lineTo(endX - 10, originY + 5);
    63     oCtx.lineTo(endX - 10, originY - 5);
    64     oCtx.lineTo(endX, originY);
    65     oCtx.fill();
    66 
    67     // 5.计算Y轴终点的位置
    68     let endY = gridSize;
    69     // 3.绘制Y轴
    70     oCtx.beginPath();
    71     oCtx.moveTo(originX, originY);
    72     oCtx.lineTo(originX, endY);
    73     oCtx.strokeStyle = "#000";
    74     oCtx.stroke();
    75     // 4.绘制X轴的箭头
    76     oCtx.lineTo(originX - 5, endY + 10);
    77     oCtx.lineTo(originX + 5, endY + 10);
    78     oCtx.lineTo(originX, endY);
    79     oCtx.fill();
    80 </script>
    81 </body>
    82 </html>
  • 相关阅读:
    MySQL_Key值(MUL、PRI、NUL)
    MySQL删除foreign key_ERROR 1025 (HY000): Error on rename of './test_20180206/cc' to './test_20180206/#sql2-9ac-e' (errno: 152)
    MySQL-ISNULL()、IFNULL()和NULLIF()函数
    MySQL复制表-SELECT INTO FROM
    MySQL复制表-INSERT INTO SELECT
    MySQL复制表-CREATE SELECT
    MySQL_ALTER命令
    CentOS设置防火墙
    宿主机连wifi,虚拟机联网设置步骤
    二叉树遍历
  • 原文地址:https://www.cnblogs.com/gsq1998/p/12166066.html
Copyright © 2011-2022 走看看