2012-04-23 72 views
6

我无法使用raphael.js绘制一个简单的网格。使用raphael.js绘制直线的正确方法是什么?

我使用paper.path(),一切看起来很好用我的路径字符串:
enter image description here

但不知何故,这个被渲染:
enter image description here

这里是我使用的代码呈现此 “网格”

// vertical lines 
    for(var x = (this._offset.x % cellSize); x < this.width; x += cellSize){ 
     var vpath = "M " + x + " 0 l " + x + " " + this.height + " z"; 
     var vline = paper.path(vpath); 
    } 
    // horizontal lines 
    for(var y = (this._offset.y % cellSize); y < this.height; y += cellSize){ 
     var hpath = "M 0 " + y + " l " + this.width + " " + y + " z"; 
     var hline = paper.path(hpath); 
    } 

(在这种情况下CELLSIZE = 50,和this._offset = {X:0,Y:0})

回答

7

问题是,你假设l采取绝对坐标,但它实际上需要一个相对的。当你写:

M 50 0 l 50 600 

你以为这意味着写信(50,0)一行(50,600)但它实际上是指在(50,0),移动开始(50 ,600)。因此,偏斜的网格。

你只需要(与更换Xÿ后)写成这样vpaths:

var vpath = "M " + x + " 0 l 0 " + this.height + " z"; 

和:

var hpath = "M 0 " + y + " l " + this.width + " 0 z"; 
+0

THX兄弟,我不能相信我错过了那么简单的事情。 – 2012-04-23 03:38:49

+12

你有正确的概念,但混淆了语义:绝对命令和相对命令之间的差异是通过为绝对('L')指定大写字母或为相对('l')指定小写字母。 – 2012-04-24 17:36:27

+0

@EliranMalka啊,谢谢。 – McGarnagle 2012-04-24 17:54:37

相关问题