2014-08-27 23 views
0

我有一个关于Draw2D.js的问题。我正在使用JQuery-ui调整画布大小,但是当我调整画布大小时,我必须销毁它并创建一个新的画布......否则,我会有许多画布重叠。如果我拨打canvas.destroy()则无效(如文档中所述)。是否有任何Draw2d.js画布销毁方法?

有什么办法可以对画布进行软摧毁?是否在JQuery-ui中调整大小功能?

谢谢@MacGyver,我在第二项提议中找到了解决办法。我们有 来编辑SVG DOM :)

我在这里分享我的解决方案jsfiddle! 它可能有帮助!

回答

0

通过手动设置宽度和高度,您应该可以动态更改画布的DOM节点。在这里,我们有2500px的宽度和2500px的高度。

<div onselectstart="javascript:/*IE8 hack*/return false" id="draw2d" style="width:2500px; height:2500px;-webkit-tap-highlight-color: rgba(0,0,0,0);"></div> 

canvas.setScrollArea("draw2d"); 

或者使用JavaScript动态更改DIV标签的宽度和高度。

另一种方法是设置动态变焦:

canvas.setZoom(1); // default 1x (1:1 zoom) 
canvas.setZoom(.5); // .5x (1:2 zoom) 
canvas.setZoom(2); // 2x (2:1 zoom) 

然后调用app.layout()功能

参考:

http://draw2d.org/draw2d_touch/jsdoc/#!/api/draw2d.Canvas 
+0

THX第二个它的工作原理 – 2014-09-10 08:58:36

+0

今天,我发现另一种方式来处理这个问题。它实际上回答你的实际问题。 canvas.clear()是一个用draw2d touch编写的函数,用于清除画布。它本质上是raphael.js功能的一个包装,但是需要处理draw2d触摸事物,例如清除事件等。 – MacGyver 2014-09-11 18:34:37

+0

是的,我使用的是canvas.clear(),但是我所做的需要一个不存在的软canvas.destroy(),但是现在您可以使用它的好解决方案。当我们使用canvas.clear()时,它只破坏画布中的对象,而canvas.destroy()销毁对象,canvas(拉斐尔paper.remove();)和事件,我们不能重新创建它。又thx – 2014-09-12 17:56:51