2011-07-26 9 views
1

svg 경로를 svg 폴리 라인으로 변환 할 수 있는지 여부를 알아야합니다. svg 경로를 svg 폴리 라인으로

function pathToPolygon(path,samples){ 
    if (!samples) samples = 0; 
    var doc = path.ownerDocument; 
    var poly = doc.createElementNS('http://www.w3.org/2000/svg','polygon'); 

    // Put all path segments in a queue 
    for (var segs=[],s=path.pathSegList,i=s.numberOfItems-1;i>=0;--i) segs[i] = s.getItem(i); 
    var segments = segs.concat(); 

    var seg,lastSeg,points=[],x,y; 
    var addSegmentPoint = function(s){ 
    if (s.pathSegType == SVGPathSeg.PATHSEG_CLOSEPATH){ 

    }else{ 
     if (s.pathSegType%2==1 && s.pathSegType>1){ 
     // All odd-numbered path types are relative, except PATHSEG_CLOSEPATH (1) 
     x+=s.x; y+=s.y; 
     }else{ 
     x=s.x; y=s.y; 
     } 
     var lastPoint = points[points.length-1]; 
     if (!lastPoint || x!=lastPoint[0] || y!=lastPoint[1]) points.push([x,y]); 
    } 
    }; 
    for (var d=0,len=path.getTotalLength(),step=len/samples;d<=len;d+=step){ 
    var seg = segments[path.getPathSegAtLength(d)]; 
    var pt = path.getPointAtLength(d); 
    if (seg != lastSeg){ 
     lastSeg = seg; 
     while (segs.length && segs[0]!=seg) addSegmentPoint(segs.shift()); 
    } 
    var lastPoint = points[points.length-1]; 
    if (!lastPoint || pt.x!=lastPoint[0] || pt.y!=lastPoint[1]) points.push([pt.x,pt.y]); 
    } 
    for (var i=0,len=segs.length;i<len;++i) addSegmentPoint(segs[i]); 
    for (var i=0,len=points.length;i<len;++i) points[i] = points[i].join(','); 
    poly.setAttribute('points',points.join(' ')); 
    return poly; 
} 

내가 JS에 초보자에서 m이 줄 이해하지 :
내가가 javascript code which convert a path to a polygon 발견 VAR의 SEG, lastSeg를 포인트 = [], X, Y;

잘 작동하지만 패스 선 주위에 프레임을 그립니다. 하지만 프레임을 원하지 않아, 경로를 포인트 세트, 폴리 라인으로 변환하고 싶습니다. is 감사합니다.

+0

나는 경로를 직접 사용하는 것을 찾고 있는데,별로 중요하지는 않다. 덕분에 – merveotesi

+0

나는 경로를 폴리선으로 변환 할 수 없다는 것을 배웠습니다. 왜냐하면 경로는 전에 생각했던 것처럼 선을 제공하지 않기 때문입니다. 경로는 svg 문서에서 "영역"을 설명합니다. 그래서 다각형으로 만 변환 될 수 있습니다. – merveotesi

답변

3

폴리 라인은 닫히지 않은 다각형입니다. 동일한 점에서 시작하고 끝나는 폴리 라인을 가질 수 있습니다. 폴리선은 다각형과 같습니다.

경로에는 점 목록이 있지만 점이 직선이나 다른 여러 곡선으로 연결되는지 지정할 수 있습니다. "이 좋은 작동하지만, 경로 라인 주변에 프레임을 그립니다하지만 난 프레임 싶지 않아요."나는 여기서 문제는 일부 스타일 속성 생각

을 :

나는 약간 귀하의 질문에 의해 혼란 스러워요 객체의 유형보다는 오히려.