【问题标题】:HTML5 canvas adding dots/circles to canvas line - can i combine lines and circles to 'join the dots'?HTML5 画布在画布线上添加点/圆圈 - 我可以将线条和圆圈组合起来“加入点”吗?
【发布时间】:2013-05-24 22:15:55
【问题描述】:

我已经制作了 2 条带有“lineTo”的线路径,它们在各个点改变方向 - 这些都绘制得很好。这些线条由画布呈现,而不是 svg。

我需要在它们改变方向的线上的点处添加圆圈,即在 lineTo 点,例如:context.lineTo(149, 50)。这看起来像连接点。

我不知道如何将这些点添加到线条中,或者是否可以 - 任何人都可以建议吗?

提前致谢。标记见下文:

<div class="wrapper">
      <canvas id="myCanvas" width="300" height="300"></canvas>
</div>
<script>
      var canvas = document.getElementById('myCanvas');
      var context = canvas.getContext('2d');

      // attributes
      context.lineWidth = 2;
      context.lineJoin = 'round';

      // left line
      context.beginPath();
      context.moveTo(10, 20);
      context.lineTo(149, 50);
      context.lineTo(50, 100);
      context.lineTo(149, 150);
      context.lineTo(109, 200);     
      context.strokeStyle = "red";
      context.stroke();

      // right line
      context.beginPath();
      context.moveTo(10, 20);
      context.lineTo(109, 50);
      context.lineTo(60, 110);
      context.lineTo(109, 150);
      context.lineTo(85, 200);
      context.strokeStyle = "blue";
      context.stroke();
    </script>

【问题讨论】:

    标签: html canvas line geometry


    【解决方案1】:

    不知道有没有专门的功能可以在路径的转折点画圆点,但是为什么不自己在想要的地方画圆呢?

    您可以使用 arc() 方法在方向变化点上简单地画圆(here 很好解释)。正如您已经知道 lineTo() 点的坐标,这应该是小菜一碟;)

    【讨论】:

    • 您好,感谢您回来 - 检查了您添加的链接,但奇怪的是,这并没有把圆圈放进去。可以看到它应该是小菜一碟,并且已经尝试过这种事情,所以我认为我必须只是在某处删除语法或明显的东西。以后再打。干杯
    • 与一堆修补工作,我仍在做,谢谢!我不得不做出点:context.stroke();否则,当有 3 个或更多时,他们完成了一个形状并用颜色遮挡了空间 - 基本上他们在每 3 个点之间制作了三角形。 context.beginPath(); context.arc(10, 20, radius, 0, 2 * Math.PI, false); context.arc(149, 50, radius, 0, 2 * Math.PI, false); context.arc(50, 100, radius, 0, 2 * Math.PI, false); context.fillStyle = 'red'; context.stroke();
    • 刚刚发现了另一种解决“三角形”问题的技术,该技术使用 beginPath/closePath。这是一个例子:var ctx = document.getElementsByTagName('canvas')[0].getContext('2d'); ctx.beginPath(); ctx.fillStyle = "blue"; ctx.arc(50, 20, radius, 0, Math.PI * 2, true); ctx.fill(); ctx.closePath();
    • 在这里找到了最后一个解决方案:stackoverflow.com/questions/7184475/…
    猜你喜欢
    • 2019-01-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-23
    • 2011-09-24
    相关资源
    最近更新 更多