【问题标题】:SVG Path half circle (raphael)SVG路径半圆(拉斐尔)
【发布时间】:2013-10-21 14:06:32
【问题描述】:

我正在尝试创建一个位于完整圆圈底部的内圈。我一直在尝试使用paper.path() 创建它。

这里是jsfiddle here的例子

paper.path("M32,180 L248,180 a15,10 8 0,1 -215,0 z");

【问题讨论】:

    标签: svg path raphael


    【解决方案1】:

    像这样使用sector 函数:

    sector(140, 140, 116, 200, 340, {})
    

    几乎返回你想要的。只需将第一个 move to 命令替换为移动到圆弧的第一个点而不是圆心即可。

    替换

    return paper.path(["M", cx, cy, "L", x1, y1, "A", r, r, 0, +(endAngle - startAngle > 180), 0, x2, y2, "z"]).attr(params);
    

    return paper.path(["M", x1, y1, "L", x1, y1, "A", r, r, 0, +(endAngle - startAngle > 180), 0, x2, y2, "z"]).attr(params);
    

    你会得到:

    paper.path("M30.995655988834628,179.67433662577756L30.995655988834628,179.67433662577756A116,116,0,0,0,249.00434401116536,179.67433662577756z");
    

    这似乎是你所追求的。

    【讨论】:

    • 确实是这样,请问你是从哪里学来的?我已经挣扎了 10 多个小时试图理解 svg 上的“A”
    • 感谢您的帮助!!
    • 我找到了 Rafael 的 pie chart example 并认出了你的 sector 函数。然后我尝试使用sector,调整值使其居中,结果非常接近。然后我搜索了svg path 以刷新我对MLAz 的意思的记忆,很明显你不应该移动到中心但是而是直接到弧的起点。宾果游戏!