0

我在尝试更新使用许多不同绘图对象的绘图时遇到问题。该绘图类似于 AutoCad 绘图,并且以毫米为单位测量,因此已经计算了比例以使绘图适合舞台。计算此值时,比例设置为 1。

我将绘图对象(线、圆、弧等)存储在一个数组中。我正在尝试更新绘图并重新缩放它而不清除舞台并进行完全重绘以提高性能。

我想要做的是增加绘图的长度。绘图有一个切割点,因此切割点右侧的对象将按增量值移动,并且跨越切割点的任何线都将增加长度。此更改将需要更新最初计算的比例,以使绘图出现在舞台上。

我设置了 2 个小提琴来演示这个问题。第一个(http://jsfiddle.net/tctruckscience/3HxuP/4/)显示了我目前正在做的事情。问题是绘图会缩放,但它会开始远离屏幕的右侧。

originalRectWidth = 2600;
rectWidth = rectWidth + 20;    
scaleValue = originalRectWidth / rectWidth;

oldRectWidth = rect.getWidth();
newPixelsPerScaleUnit = 260 / rectWidth;

newRectScaled = rectWidth * newPixelsPerScaleUnit;
drawingGroup.setWidth(newRectScaled);
rect.setWidth(newRectScaled);
drawingGroup.scaleBy(scaleValue);

此外,如果我做了很多增量,然后使用文本框进行大量减量,则重绘时会出现问题。它的行没有正确递减。我认为这是缩放的问题。当我调整页面大小时,这会从保存它们的数组中调用绘图对象的刷新,绘图比例是正确的

第二个小提琴(http://jsfiddle.net/tctruckscience/rsEyA/15)显示了我希望绘图的行为方式。

oldWidth = drawingGroup.getWidth();
newWidth = drawingGroup.getWidth() + 20;
scaleValue = originalWidth / newWidth;

有没有办法做到这一点?

4

0 回答 0