【问题标题】:HTML5 Canvas, Equally Spaced Dots Following a Path [duplicate]HTML5 画布,沿路径等间距的点 [重复]
【发布时间】:2016-04-15 17:50:53
【问题描述】:

我是第一次尝试使用 HTML5 Canvas,因为我需要创建一个看起来像这样的弯曲路径:

现在图像显示的是第一种情况,它只是一条由几条贝塞尔曲线组成的实心笔触路径。我想要实现的是使路径以某种方式点缀,然后突出显示路径的某个部分以说明沿路径的进展(这是为了游戏)。

除了对贝塞尔二等分进行数学运算,沿着我数学计算的路径绘制点(我已经阅读了一些似乎展示了如何有效地做到这一点的论文,但这似乎有点矫枉过正),我想知道如果有一些简单的方法可以达到这个效果。谢谢!

编辑:我找到了这个答案,dotted stroke in <canvas>,但它并没有完全解决我想到的贝塞尔曲线更复杂的情况。这个直线版本真的很容易实现:)

编辑:应该也可以在 IE 中使用

【问题讨论】:

  • @Roberto 非常有趣,但有两个问题:我仍然不能用一种颜色部分填充路径,因为动画只是移动曲线起点和终点的结果,我需要IE 支持(遗憾的是,正确的答案并没有指向 IE 支持的方向)。

标签: javascript html canvas bezier


【解决方案1】:

https://jsfiddle.net/9m8wo0ef/2/

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

  context.setLineDash([5, 15]);

  context.beginPath();
  context.moveTo(100, 20);

  // bezier curve
  context.bezierCurveTo(290, -40, 300, 200, 400, 150);

  context.lineWidth = 5;
  context.strokeStyle = 'blue';
  context.stroke();

  // second half of curve
  context.beginPath();
  context.strokeStyle="#DDDDFF";
  context.bezierCurveTo(400, 150, 500, 120, 450, 20);
  context.stroke();

注意:第二条曲线(浅色路径)必须从第一条路径停止的地方开始 - 在本例中,即 400、150。

【讨论】:

  • 绝对是一个有用的参考!我担心的是我的路径是许多贝塞尔曲线的组合,而不是由一个函数定义的螺旋。如果我可以通过一个相对简单的函数来定义我的路径(在我的情况下它是分段的),那么这将是一个更简单的问题。这有意义吗?
  • 您目前如何绘制路径?还是你做到了?
  • 我基本上完全按照本教程来构建示例路径:html5canvastutorials.com/tutorials/html5-canvas-paths
  • 已编辑答案。这是你需要的吗?
  • 哇是的!很接近。我不知道 setlLineDash 函数。如果我问你是否知道我如何着色,比如路径的前半部分,与其他部分不同,我会不会太过分了?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-10-05
  • 2022-01-08
  • 2015-07-15
  • 2011-05-10
  • 1970-01-01
  • 1970-01-01
  • 2012-03-05
相关资源
最近更新 更多