Fabricjs-大画布缩放,平移和性能

时间:2016-08-22 10:34:24

标签: javascript canvas zoom fabricjs pan

我是一名实习生,目前正致力于基于浏览器的图形编辑器 - 类似于绘画,但在功能方面更具体。我正在使用fabric.js并且正在努力完成我已经给出的任务,主要是因为我对这项技术不熟悉。

情况是: a)我有一个3000x6000画布 b)我有很多自定义对象,在鼠标点击或鼠标点击设置上有很多动作 c)我在div中有画布,它将我们对画布的视图限制在500x1000像素左右 d)我编写了一个缩放功能,它调用方法setZoom()并按预期工作,所有侦听器都按预期工作。

问题是: a)我必须实现一个像手一样的滚动功能:在mousedown上我开始拖动画布,并在每个鼠标移动时我滚动画布div以获得适当数量的像素。 b)此功能按预期工作,但当画布放大时,我无法滚动到画布的末尾 - 当它缩小时,我可以在画布上滚动。

我一直在努力让这个工作,以便我可以随时滚动到画布的边界而不是超出它们 - 但我没有做到这一点。我试图使用relativePan并限制边框,但它没有成功 - 也许我不太了解FabricJS。

有没有人有任何建议可以帮助我解决这个问题?对我和我的职业生涯来说,任何帮助都是无价之宝。 非常感谢你提前。

P.S。 在创建3000x3000画布时,我也遇到了性能问题 - 整个画布都像疯了一样滞后,但是当我切换到3000x6000时它工作得很好。你有什么想法吗?

更新1:这是JSFiddle的链接 - 我分叉了某人的多边形绘制小提琴,并添加了我的测试用例。要重新创建,请在画布上单击大约15次,然后尝试在鼠标周围移动一段时间。然后,将HTML代码中的画布宽度更改为3000,以使画布为方形,然后执行相同操作。您应该注意到,与3000x3000画布相比,有时会出乎意料地滞后。 JSFiddle:http://jsfiddle.net/9wo6ez61/2/

0 个答案:

没有答案