2011-11-26 4 views
4

저는 mindmap과 같은 네트워크의 네트워크를 화면에 그려야하는 프로그램을 작성한 후 객체 사이의 연결을 그립니다. 선의 너비는 연결 강도를 나타냅니다. 시간이 지남에 따라 연결이 변경되지만 많은 연결이 잘못 그려집니다. 나는 내가 올바른 연결을 실제로 바꿔야한다는 것을 100 % 확신하며, 나는 그것을 심하게 그린다.HTML5 캔버스에 다양한 너비의 선을 정확하게 그리는 방법은 무엇입니까?

그래서 여기에 그려 보는 방법이 있습니다. 내가 뭘 잘못하고 있는지 말해 주시겠습니까? 그리고 나는 그것을 어떻게 올바르게합니까?

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(); 
     } 

답변

5

너비가 다른 선을 그리려면 올바른 코드가 있어야합니다. 여기

행동의 코드를 표시하는 jsFiddle, 당신이 당신의 선폭을 계산할 때 http://jsfiddle.net/q9LRs/

문제가 원인입니다. 일부 브라우저에서는 closePath()를 호출해야 할 수도 있습니다.

예제를 단순화하고 작업 코드를 게시하여 문제가있는 곳을 확인할 수 있습니다.

관련 문제