Ich habe Schwierigkeiten, die Logik der Zentrierung einer SVG-Form in SVG zu bilden. Die Skalenfunktion viewBox
ist in Ordnung, aber ich habe Probleme mit der Zentrierung der Form mit viewBox
. HierScale-In & Center Eine Form in SVG
ist der Code:
// SCALE & CENTRE THE TEMPLATE ON SCREEN
const svg = document.getElementsByTagName("svg")[ 0 ];
const t = document.getElementsByClassName("templateParent")[ 0 ];
const svgRect = svg.getBoundingClientRect(),
svgW = svgRect.width,
svgH = svgRect.height,
svgX = svgRect.x,
svgY = svgRect.y;
const aspectRatio = svgW/svgH;
const tRect = t.getBBox(),
tW = tRect.width,
tH = tRect.height,
tX = tRect.x,
tY = tRect.y;
const tmW = tW * 1.25,
tmH = tH * 1.25,
tmX = tX * 1.25,
tmY = tY * 1.25;
const vbH = tmH,
vbW = tmW * aspectRatio,
vbX = tmX * aspectRatio,
vbY = tmY;
Ich verwende diesen Ansatz für mehr Kontrolle. Speichern Sie Pfadpositionen in einem Array. Übernehmen Sie SVG-Zentrum übersetzen Wert zu Pfadelement. Dann multiplizieren Sie jede Position mit dem Skalierungswert, wann immer Sie skalieren möchten. Dann kartieren Sie jede Position auf die Mittelposition. dann zeichne es neu. – Adapter