[英]HTML5 Canvas ~ Zoom and Keep Current Canvas Relative Offset (view port center point)
上面的藍色矩形代表視口(監視器)。
紅色矩形代表當前超出視口的畫布。
當您縮放畫布時,如何將紅點保持在相同的相對位置?
讓我們看看 x 維度:
畫布的當前寬度為 100 = 30 + 50 + 20
如果我們縮放 2 倍,當前寬度變為 200 = 60 + 100 + 40; 然而,視口僅代表新的 100 寬度中的 50:200 = 60 + (25 + 50 + 25) + 40
您真正關心的數字是定位畫布的 x 和 y 偏移量; 當前 x 偏移量為 -30。 新的偏移量,在 2 倍縮放后將紅點保持在相同的相對位置,將是 -85 = (-1)*(60 + 25)。
新的相對位置將為 110 = 60 + 25 + 25(第二個 25 是視口尺寸的一半)。 請注意,55 x 2 = 110。
在代碼中:
boundingBoxLeft = boundingBox.left;
beginCanvasWidth = canvas.width;
canvas.width = canvasWidth*scaleFactor;
var scaleChange = canvas.width/beginCanvasWidth;
var leftOffset = ((-1)*boundingBoxLeft*scaleChange) +
(((window.innerWidth*scaleChange) - window.innerWidth)/2);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.