Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/svg/2.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 SVG元素';s";原样;边界_Javascript_Svg - Fatal编程技术网

Javascript SVG元素';s";原样;边界

Javascript SVG元素';s";原样;边界,javascript,svg,Javascript,Svg,我想创建一个小控件来编辑SVG对象。 现在,我要解决的问题是: 我有一个目标。gizmo围绕对象显示,以便可以缩放、平移和旋转对象。我需要做的是按原样查找对象的边界,因为gizmo应始终如下所示: (如果有人漫游,粉色是对象,黑色笔划是gizmo) 请注意,不要建议使用现有编辑器。我认为您正在寻找形状与边界框的接触点。 一般来说,要解决您的问题似乎相当困难,这也是因为SVG形状定义可能是模糊的(过滤器等) 只要形状是路径,一种简单但近似的方法就可以使用接口的getPointAtLength方法。

我想创建一个小控件来编辑SVG对象。 现在,我要解决的问题是: 我有一个目标。gizmo围绕对象显示,以便可以缩放、平移和旋转对象。我需要做的是按原样查找对象的边界,因为gizmo应始终如下所示: (如果有人漫游,粉色是对象,黑色笔划是gizmo)


请注意,不要建议使用现有编辑器。

我认为您正在寻找形状与边界框的接触点。 一般来说,要解决您的问题似乎相当困难,这也是因为SVG形状定义可能是模糊的(过滤器等)

只要形状是路径,一种简单但近似的方法就可以使用接口的getPointAtLength方法。采样合理数量的点,并保持极值。这些应接近要求的点


也许你可以利用getBBox()返回的值来优化近似值。

你能发布你用来为对象和gizmo生成SVG的代码吗?@user852798该代码复杂、混合且包含许多属性,因此我无法将其剪切到此处发布某个部分。它大约有400行。gizmo的主要思想是捕捉鼠标移动并缩放、移动或旋转对象。所有这些都很好。我只需要知道,是否有办法知道一个对象的极值点,或者我应该计算它们。
getBoundingClientRect()
真正做到了这一点。谢谢!