2012-04-23 10 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

समस्या यह है कि आप एल मानते हैं कि एक पूर्ण समन्वय होता है, लेकिन यह वास्तव में एक रिश्तेदार लेता है। जब आप लिखें:

M 50 0 l 50 600 

आप सोच रहे हैं तो इसका मतलब है (50,0) से एक लाइन लिखने के लिए (50, 600) लेकिन यह वास्तव में (50, 0), कदम पर शुरुआत का मतलब है (50 , 600)। इसलिए skewed ग्रिड।

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

और:

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

Thx भाई

तुम बस (साथ एल के बाद जगह एक्स और y) इस तरह vpaths लिखने की ज़रूरत , मुझे विश्वास नहीं है कि मुझे कुछ इतना आसान याद आया। –

+12

आपको अवधारणा सही मिल गई है, लेकिन अर्थशास्त्र को मिश्रित किया गया है: पूर्ण और सापेक्ष आदेशों के बीच अंतर पूर्ण ('एल') या रिश्तेदार (' एल') के लिए लोअरकेस के लिए अपरकेस अक्षरों को निर्दिष्ट करना है। –

+0

@ एलिरनमाल्का आह, धन्यवाद। – McGarnagle

संबंधित मुद्दे