【问题标题】:How to correctly draw many different-width lines on the HTML5 canvas?如何在 HTML5 画布上正确绘制许多不同宽度的线条?
【发布时间】:2011-11-26 18:46:19
【问题描述】:

我正在开发一个程序,该程序应该在屏幕上绘制一个类似于思维导图的对象网络,然后绘制对象之间的连接。线的宽度应该代表连接的强度。连接随着时间的推移而改变,但许多连接被错误地绘制。我 100% 确定我实际上改变了正确的连接,而且我只是画得很糟糕。

所以,这就是我尝试绘制它的方法,你能告诉我我做错了什么吗?我该如何做呢?

  for (o = 0; o < self.brain.objects.length; o++)
       for (con =  0; con < self.brain.objects[o].connections.length; con++)
       {
            self.screen.lineWidth = Math.sqrt(self.brain.objects[o].connections[con].weight)*5*self.zoom;

            self.screen.beginPath();
            self.screen.moveTo((self.brain.objects[o].rect[0] - self.globalPos[0])*self.zoom + (self.brain.objects[o].rect[2]/2)*self.zoom, (self.brain.objects[o].rect[1] - self.globalPos[1] + self.brain.objects[o].rect[3]/2)*self.zoom);
            self.screen.lineTo((self.brain.objects[o].connections[con].to.rect[0] - self.globalPos[0] + self.brain.objects[o].connections[con].to.rect[2]/2)*self.zoom, (self.brain.objects[o].connections[con].to.rect[1] - self.globalPos[1] + self.brain.objects[o].connections[con].to.rect[3]/2)*self.zoom);
            self.screen.stroke();
       }

【问题讨论】:

    标签: javascript html canvas html5-canvas


    【解决方案1】:

    你有正确的代码来绘制不同宽度的线。

    这里是一个 jsFiddle,它显示了实际的代码, http://jsfiddle.net/q9LRs/

    问题可能是在您计算 lineWidth 时引起的。您可能还需要在某些浏览器中调用 closePath()。

    尝试简化您的示例并发布工作代码,以便我们找出问题所在。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-09-09
      • 1970-01-01
      • 1970-01-01
      • 2014-10-18
      • 2014-07-19
      • 1970-01-01
      • 2020-04-22
      • 1970-01-01
      相关资源
      最近更新 更多