Domanda

ho il seguente gradiente radiale:

<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" />

Vorrei ridurre questo gradiente dimensioni del 90% e tradurlo adeguatamente basa su questa nuova scala (posizione x diventa 402,2, posizione y diventa 545.1, ecc).

Ovviamente, moltiplicando cx, cy, fx, fy, e r da 0,1 me sarà ottenere una parte della strada. Tuttavia, come faccio a programatically rielaborare il gradientTransform per ottenere il resto della strada?

È stato utile?

Soluzione

vorrei lasciare i parametri (cx, fx, r ecc) intatto. Basta moltiplicare la matrice di trasformazione esistente con una nuova matrice per la scalatura. La matrice risultante è la nuova matrice di trasformazione per il gradiente.

Se si desidera ridimensionare attorno al centro, allora hai anche una traduzione nella matrice di scala.

Quindi questo sarebbe per fattore di scala s = 0.1:

newGradientTansform = 
oldGradienTransform * matrix(s, 0, 0, s, -cx*(s-1), -cy*(s-1))
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top