Javascript 获取裁剪线可见区域长度d3

Javascript 获取裁剪线可见区域长度d3,javascript,reactjs,d3.js,clip-path,Javascript,Reactjs,D3.js,Clip Path,我正在尝试使用ClipPath用圆圈剪裁一条直线,并通过拖动成功地完成了这项工作。这是我的工作代码 函数clipData(svg、cx、cy){ var clip=svg.append(“defs”) .append(“clipPath”)//定义剪辑路径 .attr(“id”,“clip”)//给clipPath一个id .append(“圆”)//将其形状设置为椭圆 .attr(“id”,“我的圈子”) .attr(“cx”,100)//定位x中心 .attr(“cy”,80)//定位y中

我正在尝试使用
ClipPath
用圆圈剪裁一条直线,并通过拖动成功地完成了这项工作。这是我的工作代码

函数clipData(svg、cx、cy){
var clip=svg.append(“defs”)
.append(“clipPath”)//定义剪辑路径
.attr(“id”,“clip”)//给clipPath一个id
.append(“圆”)//将其形状设置为椭圆
.attr(“id”,“我的圈子”)
.attr(“cx”,100)//定位x中心
.attr(“cy”,80)//定位y中心
.attr(“r”,80)//设置x半径
.attr(“填充”、“黄色”)
append(“circle”)//将其形状设置为椭圆
.attr(“cx”,100)//定位x中心
.attr(“cy”,80)//定位y中心
.attr(“r”,80)//设置x半径
.attr(“填充”、“红色”)
var g=svg.append(“g”)
.基准({
x:0,,
y:0
})
.attr(“id”、“child”)
//.attr(“transform”,函数(d){return'translate('+d.x+'+d.y+');})
.call(d3.drag()
.开启(“启动”,功能(d){
d3.选择(this).raise().classed(“活动”,true);
})
.开启(“拖动”,功能(d){
d3.选择(this.attr)(“transform”,“translate”(+(d3.event.x)+),“+(d3.event.y)+”);
d3.选择(“#svgGreen”).selectAll(*”).remove();
clipData(svg,d3.event.x+cx,d3.event.y+cy);
})
.开启(“结束”,功能(d){
d3.选择(此).classed(“活动”,false);
}));
g、 附加(“行”)
.attr(“剪辑路径”、“url(#剪辑)”)
.attr(“x1”,cx)
.attr(“y1”,cy)
.attr(“x2”,cx+100)
.attr(“y2”,cy+100)
.style(“笔划”、“紫色”)
.style(“笔划宽度”,12)
}
var svg=d3。选择(“svgGreen”);
变量cx=100,
cy=80,
x=0,
y=0;
clipData(svg、cx、cy)

根据

剪裁路径在概念上等同于的自定义视口 引用元素。因此,它会影响元素的渲染, 但不是元素的固有几何体:剪裁的边界框 元素(意思是通过引用元素的元素) 剪辑路径属性(或引用元素的子级)必须 保持不变,就好像没有修剪一样


因此,无论是否剪切,该元素的大小始终保持不变。我认为你应该考虑用另一种方法来满足你的需要。

你能在你想要达到的目标上透露更多的信息吗?最简单的是…我有一条线,它被一个圆剪断了,只需要剪断后的线的可见区域的长度。。我现在还不能得到..我找不到任何其他解决方案如果你需要上面代码段上的行的长度,那么你可以得到那个圆的半径,它将是相同的:),但它并不总是圆。。它可以是多边形或任何其他曲线路径,如图所示well@NullPointer你能分享一下吗?