2
Ich habe erfolgreich eine Zoom-Funktion implementiert, basierend auf this examplePaperJS Zoom- und Pan-
zoom: function(delta, point){
if (!delta) return;
var
oldZoom = paper.view.zoom,
oldCenter = paper.view.center,
viewPos = paper.view.viewToProject(point);
newZoom = delta > 0 ? oldZoom * 1.05 : oldZoom/1.05;
if (!this.allowedZoom(newZoom)) return;
var
zoomScale = oldZoom/newZoom,
centerAdjust = viewPos.subtract(oldCenter),
offset = viewPos.subtract(centerAdjust.multiply(zoomScale)).subtract(oldCenter);
paper.view.center = view.center.add(offset);
},
allowedZoom: function(zoom){
zoom = Math.max(zoom, this.settings.minZoom);
zoom = Math.min(zoom, this.settings.maxZoom);
if (zoom !== paper.view.zoom)
{
paper.view.zoom = zoom;
return zoom;
}
return null;
}
aber dies berücksichtigt nicht die Position der Ansicht, wenn Sie auf die ursprünglichen scale = 1
verkleinern zurück. Was ich meine, ist, dass ich möchte, dass die Ansicht auf der Leinwandkante bleibt.