如何在HTML5画布上正确绘制许多不同宽度的线条?

cor*_*zza 4 javascript html5 canvas html5-canvas

我正在开发一个程序,它应该在屏幕上绘制一个类似思维导图的对象网络,然后绘制对象之间的连接.线的宽度应代表连接的强度.连接随时间改变,但许多连接被错误地绘制.我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();
       }
Run Code Online (Sandbox Code Playgroud)

Cha*_*les 5

您有正确的代码来绘制不同宽度的线条.

这是一个显示代码的jsFiddle, http://jsfiddle.net/q9LRs/

在计算lineWidth时可能会出现此问题.您可能还需要在某些浏览器中调用closePath().

尝试简化您的示例并发布工作代码,以便我们可以看到问题所在.