2013-05-06 91 views
8

我目前正在研究需要較大畫布面積和數百個對象(文本,圖像,形狀,剪貼畫等)的「照片拼貼製作器」項目。問題在於移動,縮放和旋轉這些對象時,Fabric.js渲染所有對象,導致它太慢。我只想渲染織物畫布頂部的選定對象。我測試過renderOnAddition,renderTop也是,但它們不是我想要的。僅在移動,縮放和旋轉時渲染選定對象

我想以下幾點:

canvas.on('object:moving', function(e) { 
    var activeObject = e.target; 
    //canvas.renderAll(); 
    canvas.renderObjects(activeObject); 
}); 

代替canvas.renderAll()現在,我需要像canvas.renderObjects(activeObject)方法。我如何在Fabric.js中實現這個功能?

這裏是我的項目:Edit Photos For Free

+2

你必須渲染所有,沒有其他方式。它不會改變哪個對象的狀態,繪製過程正在繪製像素。與數字視頻中的幀一樣,即使它是靜態圖片,仍然有25幀... – arty 2013-05-06 15:04:40

+0

如果不可能,爲了提高性能,我如何實現cacheAsBitmap屬性,以便只渲染移動部分並且所有其他靜態部分都被緩存爲位圖。任何想法和算法在fabricjs上實現這個? – ep4f 2013-05-08 09:31:13

+0

對不起,在這裏幫不了忙。祝你好運 – arty 2013-05-08 12:12:42

回答

0

最好的辦法是有一個第二畫布,在主之一,在其上移動/縮放/旋轉目前的項目(S)的前面。

您提到要在織物畫布上呈現所選對象,所以這應符合您的要求。

在結束移動/縮放/旋轉時,您必須恢復原始畫布元素,應用所做的更改並允許其進行完全重繪。