返回

教你用Canvas实现环状类地铁时刻图,新手也能轻松上手!

前端

用 Canvas 打造环状地铁时刻图

创建画布

踏入创建环状地铁时刻表的旅程,首先要准备一个画布。使用文本编辑器创建一个 HTML 文件,并添加画布元素。务必记住,您需要包含 Canvas 库才能让画布正常运行。

绘制圆环

有了画布,就开始在上面绘制一个圆环。使用 Canvas 的 arc() 方法,指定圆环的中心、半径和起始和结束角度。

ctx.beginPath();
ctx.arc(250, 250, 200, 0, 2 * Math.PI);
ctx.stroke();

添加刻度

环形时刻表需要清晰可见的刻度,因此我们需要添加它们。使用循环来绘制等距的刻度线。

for (var i = 0; i < 12; i++) {
  var angle = i * Math.PI / 6;
  var x = 250 + 200 * Math.cos(angle);
  var y = 250 + 200 * Math.sin(angle);

  ctx.beginPath();
  ctx.moveTo(x, y);
  ctx.lineTo(x + 10, y);
  ctx.stroke();
}

添加数字

刻度清晰了,现在是时候添加数字了。这将有助于用户轻松读懂时间。

for (var i = 0; i < 12; i++) {
  var angle = i * Math.PI / 6;
  var x = 250 + 220 * Math.cos(angle);
  var y = 250 + 220 * Math.sin(angle);

  ctx.fillStyle = 'black';
  ctx.font = '12px Arial';
  ctx.fillText(i + 1, x, y);
}

添加地铁站

为了让时刻表与地铁相关,让我们添加地铁站。使用循环在圆环上绘制车站名称。

var stations = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L'];

for (var i = 0; i < stations.length; i++) {
  var angle = i * Math.PI / 6;
  var x = 250 + 180 * Math.cos(angle);
  var y = 250 + 180 * Math.sin(angle);

  ctx.fillStyle = 'red';
  ctx.font = '14px Arial';
  ctx.fillText(stations[i], x, y);
}

添加地铁时刻表

最后,我们来到了最重要的部分:添加地铁时刻表。类似于车站,使用循环在圆环上绘制时间。

var times = ['8:00', '8:30', '9:00', '9:30', '10:00', '10:30', '11:00', '11:30', '12:00', '12:30', '1:00', '1:30'];

for (var i = 0; i < times.length; i++) {
  var angle = i * Math.PI / 6;
  var x = 250 + 250 * Math.cos(angle);
  var y = 250 + 250 * Math.sin(angle);

  ctx.fillStyle = 'blue';
  ctx.font = '12px Arial';
  ctx.fillText(times[i], x, y);
}

结论

恭喜!您已经成功地使用 Canvas 创建了一个环状地铁时刻表。它不仅实用,而且美观大方。您可以根据自己的需要进行调整,比如更改颜色、字体或添加更多功能。

常见问题解答

  1. 如何更改时刻表的颜色?

    • 在绘制时间时,更改 ctx.fillStyle 的颜色值。
  2. 如何增加更多地铁站?

    • 将更多车站名称添加到 stations 数组中,并相应地调整代码。
  3. 如何更改时刻表的大小?

    • 更改 canvas.widthcanvas.height 属性以调整画布大小。
  4. 如何将时刻表导出为图像?

    • 使用 canvas.toDataURL() 方法将画布导出为图像数据 URL。
  5. 如何添加其他功能,如搜索或筛选?

    • 根据您的需要修改代码以添加其他功能。