私はこの件に関するいくつかの記事を読んだことがありますが、私はまだ私の特定の問題の解決策を解明していません。ズーム時に拡大縮小するキャンバスの境界線の作成方法は? (fabric.js)
ここはplnkです。
http://plnkr.co/edit/ScJGKwR74H8UjsaJqfZF?p=preview
ここでの目的は、あなたが画像をズームすることができることですが、ドラッグ時に画像が空白なしですべての回でキャンバス内の表示されたまま。問題はコードのこの部分で実際に起こっています。私はズームボタンをクリックすると
obj = e.target;
obj.setCoords();
var boundingRect = obj.getBoundingRect();
var zoom = canvas.getZoom();
var viewportMatrix = canvas.viewportTransform;
boundingRect.top = (boundingRect.top - viewportMatrix[5])/zoom;
boundingRect.left = (boundingRect.left - viewportMatrix[4])/zoom;
boundingRect.width /= zoom;
boundingRect.height /= zoom;
var pHeight = obj.canvas.height * zoom,
pWidth = obj.canvas.width * zoom,
nHeight = obj.canvas.height - pHeight,
nWidth = obj.canvas.width - pWidth;
// top-left corner
if (boundingRect.top < nHeight || boundingRect.left < nWidth) {
obj.top = Math.max(obj.top, nHeight + obj.top - boundingRect.top);
obj.left = Math.max(obj.left, nWidth + obj.left - boundingRect.left);
}
、私は画像が画面外にドラッグすることにしたいが、空白を残したことがないように、負の数の出力を持っていると思います。私はそれが半分働いているが、境界限度は常に画像の拡大縮小版に計算されるようにそれを得る方法がわからないのですか?
誰かが間違っていることを指摘できますか?
おかげ
こんにちは - その答えのためのおかげで、グループ化されたオブジェクトとの境界を設定しようとしている問題がありますか?私はそれを並べ替えるしようといくつかの試みがあったが、運がない場合は、見てみることができる? [Plunk 1(上/左コーナーで動作、下/右ではない)](http://plnkr.co/edit/hszOjx2ZlaUl82e6dIRH?p=preview)、[Plunk 2(何も問題はありませんが、修正される可能性があります) ](http://plnkr.co/edit/zCz9XqgLc6QXkl6qOVtF?p=preview) – alexc
こんにちは、私は仕事の種類に持っていますが、ズームイン時にホワイトスペースを残すので、それはあまり信頼できません。大きなスケール[plnk](http://plnkr.co/edit/hszOjx2ZlaUl82e6dIRH?p=preview)。 – alexc
私はあなたがやっていることで少し混乱していると思います。ロジックは、オブジェクトまたはオブジェクトのグループに対して同じです。リスナー内のグループを置き換えるだけであれば、すべてが同じように機能するはずです。私はキャンバスに矩形を追加してから、グループを手動でコントロールすることであなたがやっていることのいくつかはうんざりしていると思います。 – Ben