[英]Fitting Konva layer nodes into “viewport”
我目前正在嘗試創建一種算法,將視口置於舞台上的內容中心。
現在,我需要一種方法來確定舞台的縮放程度,以使“視口”不會截斷任何形狀
獲取有關地圖上每種形狀的原點/最中心點很簡單,我可以做到這一點。 我在找出適當的計算來縮放舞台時遇到麻煩,因此舞台上的每個Shape都是可見的(加上一些額外的填充)
我真的很難在腦海中以數學方式可視化答案。 我提出的唯一解決方案是從視圖和舞台上的對象創建矩形,然后強行強制執行答案,以使視圖的邊緣不與舞台上的任何形狀相交。
任何指導將不勝感激
您可以嘗試使用以下方法:
// do we need padding?
const padding = 10;
// get bounding rectangle
const box = layer.getClientRect({ relativeTo: stage });
const scale = Math.min(
stage.width() / (box.width + padding * 2),
stage.height() / (box.height + padding * 2)
);
stage.setAttrs({
x: -box.x * scale + padding * scale,
y: -box.y * scale + padding * scale,
scaleX: scale,
scaleY: scale
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.