我怎么能调整大小(不完全是strait缩放)dojo向量?

时间:2012-01-18 17:39:24

标签: javascript vector svg dojo

我正在使用块来安排调度应用程序。它们被1px矩形分开。在大多数情况下,我可以简单地使用变换来缩放网格,但我显然希望这些1px分隔符保持相同的宽度。

也许这更像是一个意见问题,因而违反规则,但目前我能想到的唯一方法就是将我的线条保持在一个单独的数组中,然后根据需要通过重新计算新尺寸来移动/缩放它们一个resize事件,但我觉得应该有一个更好的方法来做到这一点,我不知道是dojo的新手。如果这是一个可接受的方法,但请说明,因为我不想从一开始就陷入反模式。是否有更合适的方式来表示块线,而不仅仅是简单地用矢量绘制它们?

编辑:被要求提供代码示例。我可以发布我的代码,但这并不重要,一个更简单的例子就是这样:

var rect = surface.createRect({ x: 100, y: 50, width: 200, height: 100 })
.setFill("yellow");

鉴于上述情况,我将如何将宽度更改为300或移动对象的位置?我已经尝试修改底层形状,在这种情况下是rect.shape,但似乎并没有应用这些更改,这并不奇怪。

如果我可以修改它会很方便,但是一旦完成,我找不到应用这些更改的方法。只是猜测我尝试运行rect._applyTransform(),但这也不起作用,我没有看到任何其他检查可能对我有用的dom,也没有在文档中找到任何内容,而不是基于百分比的缩放,我可以使工作,但它会很不方便,我仍然无法弄清楚如何简单地移动物体/改变它的位置。

edit2:找到答案,见下文。

1 个答案:

答案 0 :(得分:3)

想出来,我正在寻找setShape方法。这允许您在矩形的情况下直接设置任何形状属性,位置坐标,高度,宽度和半径。我可以告诉你,如果你想用相对定位而不是绝对定位来移动它,你只需要从它的当前位置添加(或减去),这可以从obj.shape属性中获得,非常简单。

例如,将rect 50px向右移动并使其高出20px,您可以这样做:

rect.setShape({height: rect.height + 20, x: rect.shape.x + 50});

此外,如果任何人删除形状都有帮助,只需调用removeShape方法,花一点时间找出它;我不喜欢dojo的参考设置方式,并且到目前为止,使用firebug更好或更差地浏览dom有更好的运气。