我第一次使用Raphaël,几乎没有 svg 经验,我需要真正了解这两个方面的人来帮助我。
我创建了一个带有动态扇区的饼图。可以通过拖动圆形按钮来调整扇区的大小。看到这个小提琴。我只在 Chrome 和 Safari 中进行了测试,它们是唯一需要的浏览器。
饼图尚未完成。扇区可以重叠。请暂时忽略这一点。
当扇区的起始角度大于结束角度时,我遇到了问题。当结束角度超过 0/360° 标记时就是这种情况。为了解决这个问题,我使用了路径旋转参数。我在将角度向后移动的同时将扇区向前移动,直到结束角度为 360。您可以在此函数的小提琴中看到这一点:
function sector_update(cx, cy, r, startAngle, endAngle, sec) {
var x1 = cx + r * Math.cos(-startAngle * rad),
x2 = cx + r * Math.cos(-endAngle * rad),
y1 = cy + r * Math.sin(-startAngle * rad),
y2 = cy + r * Math.sin(-endAngle * rad);
var rotation = 0;
// This is the part that I have the feeling could be improved.
// Remove the entire if-clause and let "rotation" equal 0 to see what happens
if (startAngle > endAngle) {
rotation = endAngle;
startAngle = startAngle - endAngle;
endAngle = 360;
}
sec.attr('path', ["M", cx, cy, "L", x1, y1, "A", r, r, rotation,
+(endAngle - startAngle > 180), 0, x2, y2, "z"]);
}
虽然效果很好,但我有点怀疑。这可以在不旋转路径的情况下解决吗?我感谢任何帮助或指示。