2

如何使用 raphael js 向指针路径添加额外的路径箭头?我一直在尝试添加它,但没有运气。

这是javascript

<script type="text/javascript">

    $(function(){
        var r = Raphael("gauge_bg2", 200, 200);
        var g = r.gauge(0, 180);


        g.bg(r.circle(100, 100, 100).attr({fill:'#193442','stroke-width': '0'}), [100, 100]);

        g.pointer(r.rect(0, 0, 100, 10).attr({fill: '#fff', 'stroke-width': '0'}), [100, 5]);

//      g.Arrowshape(r.triangle(300, 0, 100).attr({fill:'#193442','stroke-width': '0'}), [100, 100]);

        setInterval(function(){
            var percent = Math.floor(Math.random()*100);
            g.move(percent);
        }, 3000);
    });

</script>

我创建了一个http://jsfiddle.net/creativestudio/VH3fR/3/

4

2 回答 2

3

有两种选择:一种是使用 Raphael.Set 将指针路径和箭头结合起来,另一种是将指针的 rect() 替换为更通用的 path() 并在那里绘制箭头。箭头的代码可能如下所示:

    paper.path("M{0},{1}L{2},{3}L{4},{5}M{2},{3}L{4},{6}", a.x, a.y, b.x, b.y, b.x - length, b.y - width, b.y + width);

其中ab是起点和终点,lengthwidth描述箭头。请注意,这必须是“抚摸”,而不是“填充”,但也很容易得到一个实心箭头。

于 2012-09-27T09:40:20.527 回答
0

我能够做到,这是更新的脚本。

    $(function(){
        var r = Raphael("gauge", 200, 200);
        var g = r.gauge(0, 180);

        g.bg(r.circle(100, 100, 100).attr({fill:'','stroke-width': '0'}), [100, 100]);

        g.pointer(r.path('M 80,96 15,96 15,90 0,100 15,110 15,104 80,104 100,104 100,96 z').attr({fill: '#fff', 'stroke-width': '0'}).transform(""), [0, 0]);

        setInterval(function(){
            var percent = Math.floor(Math.random()*100);
            g.move(percent);
        }, 3000);
    });

这是更新的 jsFiddle http://jsfiddle.net/creativestudio/VH3fR/11/

于 2012-09-27T21:33:15.420 回答