Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/427.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 填充路径取决于绘图顺序_Javascript_Raphael - Fatal编程技术网

Javascript 填充路径取决于绘图顺序

Javascript 填充路径取决于绘图顺序,javascript,raphael,Javascript,Raphael,我需要用Raphaël.js在另一个三角形内画一个倒三角形。类似于以下ASCII艺术: /\ /__\ /\ /\ /__\/__\ 唯一的区别是,我画它的侧面(顶部向右),以便对它应用旋转 根据我在路径字符串中绘制线条的顺序,中心可以使用填充颜色着色,也可以不使用填充颜色 HTML <div id="paper"></div> JavaScript(填充内部) JavaScript(内部留空) 请注意,唯一的区别是前两点 // F

我需要用Raphaël.js在另一个三角形内画一个倒三角形。类似于以下ASCII艺术:

   /\
  /__\
 /\  /\
/__\/__\
唯一的区别是,我画它的侧面(顶部向右),以便对它应用旋转

根据我在
路径
字符串中绘制线条的顺序,中心可以使用填充颜色着色,也可以不使用填充颜色

HTML

<div id="paper"></div>
JavaScript(填充内部)

JavaScript(内部留空)


请注意,唯一的区别是前两点

// Fills the inside:
"M", x, y, "L", x + w, cy
// Doesn't fill the inside:
"M", x + w, cy, "L", x, y

是什么导致拉法尔行为不端? 我如何事先确定是否要填写该数字?
演示


只需在两块JavaScript之间切换注释。

它可能与填充规则有关:。

它可能与填充规则有关:。

@A.s.Roma当然,我会在问题中发布链接。@A.s.Roma当然,我会在问题中发布链接。你的回答让我想到了这一点,这似乎解释了我所经历的问题。你的回答让我想到了这一点,这似乎解释了我所经历的问题。
function triangles(paper, x, y, w, h, attr) {
    var cx = x + w / 2,
        cy = y + h / 2,
        path = ["M", x, y, "L", x + w, cy, x, y + h, "Z",
                "M", cx, y + h/4, "L", cx,
                y + h*3/4, x, cy, "Z"].join(" ");
    return paper.path(path).attr(attr);
}

var paper = Raphael(document.getElementById("paper"), 200, 200);
triangles(paper, 20, 20, 80, 80, {
    fill: "#abcabd"
});
function triangles(paper, x, y, w, h, attr) {
    var cx = x + w / 2,
        cy = y + h / 2,
        path = ["M", x + w, cy, "L", x, y, x, y + h, "Z",
                "M", cx, y + h/4, "L", cx,
                y + h*3/4, x, cy, "Z"].join(" ");
    return paper.path(path).attr(attr);
}

var paper = Raphael(document.getElementById("paper"), 200, 200);
triangles(paper, 20, 20, 80, 80, {
    fill: "#abcabd"
});
// Fills the inside:
"M", x, y, "L", x + w, cy
// Doesn't fill the inside:
"M", x + w, cy, "L", x, y