2012-01-22 40 views
1

は、私は私のFabric.jsにオーバーレイ画像を使用して、それを次のように追加されます:Fabric.js canvasからオーバーレイイメージを削除するには?

canvas.setOverlayImage('image.png', canvas.renderAll.bind(canvas)); 

私の問題は、私はキャンバスからそれを削除する方法を見つけることができないということです。オブジェクトを削除するには、クラスfabric.StaticCanvasremove(object)を使用することができますが、このメソッドのオブジェクトとしてオーバーレイイメージを提供する方法が見つかりませんでした。それは助けにはならなかった

canvas.setOverlayImage(null, canvas.renderAll.bind(canvas)); 

しかし:私はnullにオーバーレイ画像を設定しようとしています。

答えて

8

ソースコードを見ると、(setOverlayImageのパラメータとして)期待通りにnullに設定できないバグのように見えます。 static_canvas.class.jsを見ると、あなたがsetOverlayImage()のソースコードを参照してください。

setOverlayImage: function (url, callback) { // TODO (kangax): test callback 
    return fabric.util.loadImage(url, function(img) { 
    this.overlayImage = img; 
    callback && callback(); 
    }, this); 
} 

そしてutil/misc.jsに、あなたはutil.loadImage()のソースコードを参照してください。

function loadImage(url, callback, context) { 
    if (url) { 
    var img = new Image(); 
    /** @ignore */ 
    img.onload = function() { 
     callback && callback.call(context, img); 
     img = img.onload = null; 
    }; 
    img.src = url; 
    } 
} 

あなたはsetOverlayImage()にnullを渡すのであれば、あなたが見ることができる、ヌル意志で引数はutil.loadImage()になります。後者への引数がnullの場合、このメソッドは何もしないので、操作全体は何もしません。

あなたはカンニングと直接canvasオブジェクトのプロパティを設定しているように見えます:私はオーバーレイ画像とヌルオーバーレイを持つの間で交互にトグルを作成

canvas.overlayImage = null; 
canvas.renderAll.bind(canvas); 
+0

backgroundImageのを設定することにより、固定と同じ問題に
を発見しました!素晴らしい答え!私はここに投稿する前にもソースに目を通していたはずです。=すでに透明なPNGをオーバーレイとして設定して回避策を講じていますが、あなたの答えは正しい方法を示しています。 – ainla

+3

ええ、それは私の見解です。それをキャッチするためにありがとう。ちょうどそれを修正しました - https://github.com/kangax/fabric.js/commit/0bb80dddf002292fb27017ba763f550d8b39bd8c – kangax

0

。これは、コードにKangaxの更新後に可能です:NULLの代わりに

function toggleOverlay(){ 
    if(!canvas.overlayImage){ 
     canvas.setOverlayImage(
      'img/transparent-overlay.png', 
      canvas.renderAll.bind(canvas) 
     ); 
    }else{ 
     canvas.setOverlayImage(null, canvas.renderAll.bind(canvas)); 
    } 
} 
0

ちょうどそれが空白にします。

canvas.setOverlayImage('', canvas.renderAll.bind(canvas)); 
0

私は感謝= 0

self.canvas.backgroundImage = 0; 
関連する問題