javascript - 如何在HTML5 Canvas 上正确绘制多条不同宽度的线条?

标签 javascript html 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();
       }

最佳答案

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

这是一个 jsFiddle,它显示了运行中的代码, http://jsfiddle.net/q9LRs/

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

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

关于javascript - 如何在HTML5 Canvas 上正确绘制多条不同宽度的线条?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8280728/

相关文章:

javascript - 检测单页应用程序上的应用程序版本更改

Javascript - 如何通过 CSS 更改触发 "if"条件

html - 如何在JSP中不使用表单的情况下通过请求发送值

javascript - Canvas 已通过本地 chrome ://extension URL 被跨源数据污染

iphone - iphone os 使用的是什么版本的 safari? (截至 2009 年 12 月 14 日)

javascript - 在 d3 中链接转换的正确方法是什么?

javascript - HTML5 视频在 IE9+10 中不工作

javascript - MooTools:getChildren() 包括文本节点?

html - 圆化 SVG 的 Angular

javascript - 如何判断在Canvas中未成形的对象内部被点击?