Frage

Ich habe folgende radiale Gradienten:

<radialGradient
   inkscape:collect="always"
   xlink:href="#linearGradient2454"
   id="radialGradient2460"
   cx="4022.8572"
   cy="5451.2656"
   fx="4022.8572"
   fy="5451.2656"
   r="3559.865"
   gradientTransform="matrix(-0.1071067,-0.1166362,0.1377765,-7.0459663e-2,276.61943,1452.439)"
   gradientUnits="userSpaceOnUse" />

Ich mag um 90% dieses Gradienten in der Größe reduzieren und übersetze es auf diesen neuen Maßstab in geeigneter Weise auf Basis (x Position 402.2, y-Position wird wird 545,1, etc).

Offensichtlich cx multipliziert, cy, fx, fy, und r von 0,1 erhalten mich Teil dort des Weges. Wie aber programmatisch nacharbeiten ich die gradientTransform den Rest des Weges zu bekommen?

War es hilfreich?

Lösung

Ich würde die Parameter (cx, fx, r usw.) unberührt lassen. Gerade multiplizieren, um die bestehende Transformationsmatrix mit einer neuen Matrix für die Skalierung. Die resultierende Matrix ist die neue Transformationsmatrix für Farbverlauf.

Wenn Sie das Zentrum maßstab um wollen, dann haben Sie auch eine Übersetzung in der Skalierungsmatrix hinzuzufügen.

So dies für Skalierungsfaktor sein würde, s = 0,1:

newGradientTansform = 
oldGradienTransform * matrix(s, 0, 0, s, -cx*(s-1), -cy*(s-1))
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top