私の目的は、紙の中央にできるだけ大きなオブジェクトのセットを表示するコードを作成することです (アニメーションは必要ありません)。
私の現在の試みは、一連のオブジェクトまたは紙の境界ボックスを取得し、寸法を返します。これは、によって使用されsetViewBox
ます。残念ながら、それは機能しません。その理由はわかりません。
これが私のコードです
function GetContainingViewBoxFor(object)
{
var maxValues = { x: 0, y: 0 };
var minValues = { x: 0, y: 0 };
//Find max and min points
object.forEach(function (el) {
if (el.data("background")) return;
var bbox = el.getBBox();
if (bbox.y < minValues.y) minValues.y = bbox.y;
if (bbox.y2 < minValues.y) minValues.y = bbox.y2;
if (bbox.y > maxValues.y) maxValues.y = bbox.y;
if (bbox.y2 > maxValues.y) maxValues.y = bbox.y2;
if (bbox.x < minValues.x) minValues.x = bbox.x;
if (bbox.x2 < minValues.x) minValues.x = bbox.x2;
if (bbox.x > maxValues.x) maxValues.x = bbox.x;
if (bbox.x2 > maxValues.x) maxValues.x = bbox.x2;
});
//Padding
var padding = 50;
maxValues.x += padding;
minValues.x -= padding;
maxValues.y += padding;
minValues.y -= padding;
var w = maxValues.x - minValues.x;
var h = maxValues.y - minValues.y;
var cviewBox = {X:minValues.x - paper.width,Y:minValues.y,width:w,height:h};
return cviewBox;
}
そして、それは次のように使用されます:
var containingViewBox = GetContainingViewBoxFor(paper);
paper.setViewBox(containingViewBox.X, containingViewBox.Y, containingViewBox.width, containingViewBox.height, false);