jQuery SVG Line stroke-linejoin(编辑:SVG标记)



我在页面上的两个点之间画一个箭头。每次调用这个函数时,箭头就会被清除,并用不同的点重新绘制。现在这条线画得很好,但是末端没有箭头。我使用jQuery SVG插件

var svg = $('#board').svg('get');
svg.clear();
var startX = fromCol*sideLen + sideLen/2;
var startY = fromRow*sideLen + sideLen/2;
var endX = toCol*sideLen + sideLen/2;
var endY = toRow*sideLen + sideLen/2;
svg.line(startX, startY, endX, endY, {
    strokeWidth: 5
    , stroke: 'yellow'
    , strokeLineCap: 'round'
    , strokeLineJoin: 'miter'
});

camel-case变量设置为正确的CSS属性,我仔细检查了一下。该代码在DOM中的一个示例输出是

`<line x1="375" y1="325" x2="325" y2="275" stroke-width="5" stroke="yellow" stroke-linecap="round" stroke-linejoin="miter"></line>`

我难住了。谢谢你的帮助!

明白了。我在设置中定义它:

$('#board').svg();
var svg = $('#board').svg('get');
// Adds a marker to the svg defs element
var defs = svg.defs();
var marker = svg.marker(defs, 'arrow', 3, 2, 5, 5, 'auto');
// Define the shape of the marker
svg.polyline(marker, [[0,0], [4,2], [0,4], [1,2]], {
    "fill"  : "yellow"
});

并在绘制线条时调用这个,类似于前面,但使用新的设置和id。

var svg = $('#board').svg('get');
var g = svg.group({stroke: 'yellow', strokeWidth: 5});
svg.line(g, startX, startY, endX, endY, {
    "id" : "line"
    , "strokeLineCap" : "round"
    , "marker-end"  : "url(#arrow)"
});

最新更新