【问题标题】:Convert SVG polygon points to path?将SVG多边形点转换为路径?
【发布时间】:2013-04-21 04:12:19
【问题描述】:

我正在寻找一个可以转换如下内容的函数:

var points="270,328 270,376 342,376 342,368 358,368 358,320 314,320 298,336 278,336"

进入paths的SVG格式,我见过this question / answer,但我得到一个错误:Uncaught TypeError: Cannot read property 'ownerSVGElement' of undefined。这是因为我将我的 var 点放入该函数中,该函数不是为此而设计的,我认为它需要完整的 xml 或其他东西。

任何建议都很棒,尤其是强制插画家导出路径而不是多边形!

谢谢!

【问题讨论】:

    标签: javascript svg raphael


    【解决方案1】:
    var points="270,328 270,376 342,376 342,368 358,368 358,320 314,320 298,336 278,336"
    
    var p = points.split(/\s+/);
    var path = "";
    for( var i = 0, len = p.length; i < len; i++ ){
        path += (i && "L" || "M") + p[i]
    }
    
    console.log( path )
    => M270,328L270,376L342,376L342,368L358,368L358,320L314,320L298,336L278,336 
    

    【讨论】:

    • 我有时会得到这个:M630,352L630,306LLLLL704,314L704,356L718,356L718,384L702,368L646,368L646,360L638,360L638,352LLL,它们不应该以'z'结尾吗?
    • 更新了我的答案。另外,如果你想关闭路径,你应该只添加一个 z。
    • 谢谢,它有效。但这可能更具可读性。 path = 'M' + points.replace(/\s+/g, 'L');
    • @YuriyYakubskiy 我建议使用split/join,所以你可以省略g-修饰符。另外,不要忘记在替换之前修剪点:'M' + points.trim().split(/\s+/).join('L');
    猜你喜欢
    • 2012-11-07
    • 2015-03-06
    • 1970-01-01
    • 1970-01-01
    • 2021-06-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多