2015-09-16 168 views
3

我正在寻找将对象永久放置到画布背面的方法。 我看到各种fabricjs将图像设置为背景

canvas.sendBackwards(myObject) 
canvas.sendToBack(myObject) 

将对象发送到画布的背面,但如果我添加一个新的元素,然后把它向后它会去其他的形象背后,我需要避免这种情况。我无法使用canvas.setBackgroundImage,因为我正在创建一个自定义图像类并将其设置为backgroundImage,这会让我失去一些功能。我想在新创建的图像上设置类似z-index的东西。例如,在初始化新图像时,我可以将lockMovementX(以及其他许多元素)设置为false或true,对于每个canvas元素的z-index,是不是没有像这样的情况,还是我必须将背景元素推到后面每次画布上有变化?

回答

1

我遇到了同样的情况 - 我想要一个图像作为背景层,但不想将其作为背景图像应用于功能受限。

我为我的应用程序编写了一个函数,每次添加新图层时都会重新叠加图层。我将name属性设置为该层,以便我可以快速识别需要发送到后面的图层。

虽然这可能看起来效率低下,但我从来没有任何与此功能相关的性能问题。但在我的应用程序中,我通常只有大约5到20层 - 通常在该范围的下端。

+0

最终我使用了同样的解决方案,但对我来说效率并不高,所以我希望有人会用更好的答案来回答。我还没有遇到任何性能问题,它对我来说看起来不像是一个“干净”的解决方案。 –