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
Netbeans 调整SVG元素组的大小_Netbeans_Svg - Fatal编程技术网

Netbeans 调整SVG元素组的大小

Netbeans 调整SVG元素组的大小,netbeans,svg,Netbeans,Svg,我正在开发一个SVG应用程序,现在想让用户使用可拖动的角点来调整对象的大小,这与SVG编辑非常相似(http://svg-edit.googlecode.com/svn/trunk/editor/svg-editor.html). 功能应如下所示:用户选择一个SVG对象,将其拖动到主“画布”上,一旦在“画布”上,对象外部出现四个角,用户可以拖动每个角点并拖动以放大对象。对象将是矩形的,并使用路径创建,而不是使用SVG的“rect”功能。 对于如何实施这一点,有人有什么建议吗? 提前感谢这一切都可

我正在开发一个SVG应用程序,现在想让用户使用可拖动的角点来调整对象的大小,这与SVG编辑非常相似(http://svg-edit.googlecode.com/svn/trunk/editor/svg-editor.html). 功能应如下所示:用户选择一个SVG对象,将其拖动到主“画布”上,一旦在“画布”上,对象外部出现四个角,用户可以拖动每个角点并拖动以放大对象。对象将是矩形的,并使用路径创建,而不是使用SVG的“rect”功能。 对于如何实施这一点,有人有什么建议吗?
提前感谢

这一切都可以通过将要调整大小的项目包装在g元素中,然后对该元素应用变换来实现。让我们以拖动右下角为例。首先需要确定g元素的边界框。您可以将mousedown、mousemove、mouseup事件添加到该元素中,或者使用一些占位符元素(如矩形)作为句柄拖动以重新调整大小。这里一个重要的注意事项是,如果使用小形状进行跟踪,则肯定会发生不好的事情。用户可以轻松地快速拖动鼠标,使其脱离形状,从而取消拖动操作。为了解决这个问题,我通常在整个画布的顶部使用一个透明的形状,并打开点事件。我在那里注册我的鼠标跟踪事件。这样,您就可以跟踪鼠标,而不用担心退出形状

那么,回到调整大小上来。您需要将当前职位与新职位进行比较。我可能会使用从左上角到右下角的长度除以拖动的左上角和新的右下角的长度的比率。现在,您可以构造一个变换,将g元素按该量缩放。然而,事情变得有点棘手,这可能是你有困难。首先需要将左上角平移到原点,然后缩放,然后再将原点平移回原点。这将使左上角保持在当前位置,同时调整g元素其余内容的大小

嗯,,
Kevin

这一切都可以通过将要调整大小的项目包装到g元素中,然后对该元素应用变换来实现。让我们以拖动右下角为例。首先需要确定g元素的边界框。您可以将mousedown、mousemove、mouseup事件添加到该元素中,或者使用一些占位符元素(如矩形)作为句柄拖动以重新调整大小。这里一个重要的注意事项是,如果使用小形状进行跟踪,则肯定会发生不好的事情。用户可以轻松地快速拖动鼠标,使其脱离形状,从而取消拖动操作。为了解决这个问题,我通常在整个画布的顶部使用一个透明的形状,并打开点事件。我在那里注册我的鼠标跟踪事件。这样,您就可以跟踪鼠标,而不用担心退出形状

那么,回到调整大小上来。您需要将当前职位与新职位进行比较。我可能会使用从左上角到右下角的长度除以拖动的左上角和新的右下角的长度的比率。现在,您可以构造一个变换,将g元素按该量缩放。然而,事情变得有点棘手,这可能是你有困难。首先需要将左上角平移到原点,然后缩放,然后再将原点平移回原点。这将使左上角保持在当前位置,同时调整g元素其余内容的大小

嗯,,
Kevin

使用此信息更新您的问题(我为您添加了标签)我想添加功能,如橡皮筋,其中一个角是静态的,另一个可以拉伸使用此信息更新您的问题(我为您添加了标签)我想添加功能,如橡皮筋,其中一个角是静态的,另一个可以拉伸